On 06.11.23 13:03, Roland Hieber wrote:
On Mon, Nov 06, 2023 at 12:04:05PM +0100, Ahmad Fatoum wrote:
Recent rework introduced a regression for state located in the eMMC
user area described by DT fixed partitions. Whereas before, the first
device with type "disk" was taken, dt-utils will now iterate over all
devices to try to find a matching GPT partition. If it doesn't find any,
it will instead take the last device with type "disk", which will be the
second boot partition for eMMC devices leading barebox-state to access
/dev/mmcblkXboot1 instead of /dev/mmcblkX.

Let's fix this regression by restoring the old behavior of preferring the
first disk. This may not be totally future proof, but it worked ok for
years and a better solution can always be added later with a regular
release.

Reported-by: Leonard Göhrs <l.goe...@pengutronix.de>
Signed-off-by: Ahmad Fatoum <a.fat...@pengutronix.de>

Tested-by: Roland Hieber <r...@pengutronix.de> [riot,imx6s-riotboard]
Tested-by: Leonard Göhrs <l...@pengutronix.de> [lxa,stm32mp157c-tac-gen1]

---
  src/libdt.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/libdt.c b/src/libdt.c
index 650b40467587..72e8ab41e09b 100644
--- a/src/libdt.c
+++ b/src/libdt.c
@@ -2301,7 +2301,7 @@ static int cdev_from_block_device(struct udev_device *dev,
                devtype = udev_device_get_devtype(part);
                if (!devtype)
                        continue;
-               if (!strcmp(devtype, "disk")) {
+               if (!strcmp(devtype, "disk") && !best_match) {
                        best_match = part;
/* Should we try to find a matching partition first? */
--
2.39.2





Reply via email to