On 14 May 2012 15:55, Subhash Jadavani <subhashj@xxxxxxxxxxxxxx> wrote: > On 5/9/2012 8:18 PM, Saugata Das wrote: >> >> From: Saugata Das<saugata.das@xxxxxxxxxx> >> >> This patch adds the support for large sector size of 4KB by disabling >> emulation. >> This patch passes eMMC DATA_SECTOR_SIZE as the logical block size during >> mmc_blk_alloc_req. >> >> In order to use this patch for 4KB sector size, ensure that >> USE_NATIVE_SECTOR >> is enabled, partition table is 4KB sector size aligned and file system >> block >> size is 4KB. >> >> Signed-off-by: Saugata Das<saugata.das@xxxxxxxxxx> >> --- >> drivers/mmc/card/block.c | 6 +++++- >> drivers/mmc/core/mmc.c | 2 ++ >> 2 files changed, 7 insertions(+), 1 deletions(-) >> >> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c >> index a7c75d8..0e54118e 100644 >> --- a/drivers/mmc/card/block.c >> +++ b/drivers/mmc/card/block.c >> @@ -1517,7 +1517,11 @@ static struct mmc_blk_data >> *mmc_blk_alloc_req(struct mmc_card *card, >> snprintf(md->disk->disk_name, sizeof(md->disk->disk_name), >> "mmcblk%d%s", md->name_idx, subname ? subname : ""); >> >> - blk_queue_logical_block_size(md->queue.queue, 512); >> + if (mmc_card_mmc(card)) >> + blk_queue_logical_block_size(md->queue.queue, >> + card->ext_csd.data_sector_size); > > Shouldn't we also set the physical block size to NATIVE_SECTOR_SIZE value? > The physical block size gets set from blk_queue_logical_block_size > Other question, > Did you find any eMMC device which 4K native sector size? If yes, please > share the test results. > I have not yet seen the eMMC device implementing 4KB sector. But MMC vendors are promising this feature, so I prepared this patch. So far, I have tested by setting "data_sector_size" to 4KB (doing a hack in mmc_read_ext_csd), configuring file system to have 4KB block size and mounting it. > Other than that, this patch looks good to me. > > Regards, > Subhash > >> + else >> + blk_queue_logical_block_size(md->queue.queue, 512); >> set_capacity(md->disk, size); >> >> if (mmc_host_cmd23(card->host)) { >> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c >> index 02914d6..8dcbe995 100644 >> --- a/drivers/mmc/core/mmc.c >> +++ b/drivers/mmc/core/mmc.c >> @@ -533,6 +533,8 @@ static int mmc_read_ext_csd(struct mmc_card *card, u8 >> *ext_csd) >> } else { >> card->ext_csd.data_tag_unit_size = 0; >> } >> + } else { >> + card->ext_csd.data_sector_size = 512; >> } >> >> out: > > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html