Re: [PATCH v2 0/4] Patches to allow consistent mmc / mmcblk numbering w/ device tree

From: Russell King - ARM Linux admin
Date: Sun Mar 17 2019 - 11:44:45 EST


On Sun, Mar 17, 2019 at 04:05:14PM +0100, Stefan Agner wrote:
> On 16.03.2019 16:39, Russell King - ARM Linux admin wrote:
> > On Sat, Mar 16, 2019 at 01:33:58PM +0100, Marek Vasut wrote:
> >> If you have a FS or partition table there, it does.
> >> If you don't, I agree ... that's a problem.
> >
> > eMMC boot partitions are called mmcblkXbootY, and unless you have more
> > than one eMMC device on the system, they can be found either by looking
> > for /dev/mmcblk*boot* or by querying udev. The advantage of using udev
> > is you can discover the physical device behind it by looking at DEVPATH,
> > ID_PATH, etc, but you may not have that installed on an embedded device.
> >
> > However, as I say, just looking for /dev/mmcblk*boot* is sufficient to
> > find the eMMC boot partitions where there is just one eMMC device
> > present (which seems to be the standard setup.)
> >
> >> > I don't care the slightest what the numbering is, as long as it is
> >> > stable. On some hardware, with an unpatched kernel, the mmc device
> >> > numbering changes depending on whether or not an SD card is inserted on
> >> > boot. Getting rid of that behaviour is really all I want.
> >>
> >> Agreed, that would be an improvement.
> >
> > The mmc device numbering was tied to the mmc host numbering a while back
> > and the order that the hosts are probed should be completely independent
> > of whether a card is inserted or not:
> >
> > snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
> > "mmcblk%u%s", card->host->index, subname ? subname : "");
> >
> > snprintf(rpmb_name, sizeof(rpmb_name),
> > "mmcblk%u%s", card->host->index, subname ? subname : "");
> >
> > I suspect that Mans is quoting something from the dim and distant past
> > to confuse the issue - as shown above, it is now dependent on the host
> > numbering order not the order in which cards are inserted.
>
> Commit 9aaf3437aa72 ("mmc: block: Use the mmc host device index as the
> mmcblk device index") which came in with v4.6 enables constant mmc block
> device numbering. I can confirm that it works nicely, and it improved
> the situation a lot.
>
> That being said, we still use a patch downstream which allows
> renumbering using an alias. We deal with a bunch of different boards
> with different SoC's. I have a couple of SD cards with various rootfs
> and use internal eMMC boot quite often as well. Remembering which board
> uses which numbering is a pain. Maintaining a patch is just easier...
> Furthermore, U-Boot allows reordering and all boards I deal with use mmc
> 0 for the internal eMMC. The aliases allow consistency.

Maybe eMMC should've been given a different block device name?

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up