On embedded devices, often there is a combination of removable mmc devices (e.g. MMC/SD cards) and hard wired ones (e.g. eMMC). Depending on the hardware configuration, the 'mmcblkN' node might change if the removable device is available or not at boot time.
E.g. if the removable device is attached at boot time, it might become mmxblk0. And the hard wired one mmcblk1. But if the removable device isn't there at boot time, the hard wired one will become mmcblk0. This makes it somehow difficult to hard code the root device to the non-removable device and boot fast.
This change does simply associate 'N' of 'mmcblkN' with the slot index instead of the dynamic name index. The slot index is always the same, ensuring that the non-removable mmc device is associated always with the same mmcblkN. Independent of the availability of the removable one.
This issue has a long history. One prominent one is e.g. from the Maemo based Nokia N810 device:
https://bugs.maemo.org/show_bug.cgi?id=2747
Signed-off-by: Dirk Behme dirk.behme@de.bosch.com CC: Jassi Brar jaswinder.singh@linaro.org CC: Chris Ball cjb@laptop.org --- drivers/mmc/card/block.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index f1c84de..a01d306 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -1517,7 +1517,7 @@ 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 : ""); + "mmcblk%d%s", card->host->index, subname ? subname : "");
if (mmc_card_mmc(card)) blk_queue_logical_block_size(md->queue.queue,