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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html