Re: + mmc-align-data-size-for-host-which-only-supports-power-of-2-block.patchadded to -mm tree

From: Jiri Slaby
Date: Fri Mar 06 2009 - 17:41:24 EST


On 6.3.2009 23:08, akpm@xxxxxxxxxxxxxxxxxxxx wrote:
Subject: mmc: align data size for host which only supports power-of-2 block
From: Bryan Wu<cooloney@xxxxxxxxxx>


Signed-off-by: Cliff Cai<cliff.cai@xxxxxxxxxx>
Signed-off-by: Bryan Wu<cooloney@xxxxxxxxxx>
Cc: Pierre Ossman<drzeus@xxxxxxxxx>
Signed-off-by: Andrew Morton<akpm@xxxxxxxxxxxxxxxxxxxx>
---
--- a/drivers/mmc/core/core.c~mmc-align-data-size-for-host-which-only-supports-power-of-2-block
+++ a/drivers/mmc/core/core.c
@@ -321,7 +321,13 @@ unsigned int mmc_align_data_size(struct
* the core about its problems yet, so for now we just 32-bit
* align the size.
*/
- sz = ((sz + 3) / 4) * 4;
+
+ /* Align size for host which only supports power-of-2 block */
+ if (card->host->powerof2_block) {
+ if (sz& (sz - 1))
+ sz = 1<< fls(sz);

Is there a reason why not use
sz = roundup_pow_of_two(sz)
instead of the two lines?

+ } else
+ sz = ((sz + 3) / 4) * 4;

While you are at it:
sz = roundup(sz, 4);

--- a/include/linux/mmc/host.h~mmc-align-data-size-for-host-which-only-supports-power-of-2-block
+++ a/include/linux/mmc/host.h
@@ -162,6 +162,7 @@ struct mmc_host {
struct dentry *debugfs_root;

unsigned long private[0] ____cacheline_aligned;
+ unsigned int powerof2_block; /* host only supports power-of-2 block */

Does this have any users? The patch description is too bare. I'm trying to cope with one mmc device failure, may this help?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/