Hi,

In card/block.c:mmc_blk_prep_packed_list(), there is generic logic for 
determining the maximum number of blocks that can be sent in a single 
transaction:

        max_blk_count = min(card->host->max_blk_count,
                            card->host->max_req_size >> 9);

This value is used to limit the total size of accumulated packed commands in a 
single transaction. Running on the Samsung Arndale platform (Exynos5), it 
evaluates to 256 (128K) or 512 (256K) depending on whether CONFIG_MMC_DW_IDMAC 
is set or not (respectively), while 
ext_csd[MAX_PACKED_WRITES]==ext_csd[MAX_PACKED_READS]=63, which is also the 
spec limit (JEDEC 4.51). This value results in very little packing activity, 
and if any occurs, it consists of very few requests (usually around 5) of 
relatively small sizes (probably random writes since sequential write requests 
within these size constraints would no doubt be merged to a single request). I 
would expect to see a limitation of 512K * 63 (or close to that), that is: a 
max_blk_count of ~64512.

I suspect that much larger sizes can be transferred resulting in increased 
utilization of packed commands and significant enhancement of overall 
performance.

I'd appreciate any insights on the matter.

Thanks,
 - Ilan


--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to