spl: blk: partition numbers are hexadecimal
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 22 Jul 2023 10:45:44 +0000 (12:45 +0200)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sun, 30 Jul 2023 16:52:03 +0000 (18:52 +0200)
Loading u-boot.itb from device 0x00, partition 0x0f fails with:

    Trying to boot from NVME

    Device 0: Vendor: 0x4x Rev: 8.0.50   Prod: nvme-1
                Type: Hard Disk
                Capacity: 3814.6 MB = 3.7 GB (7812500 x 512)
    ** Invalid partition 21 **
    Couldn't find partition nvme 0:15

Like the command line interface fs_det_blk_dev() expects that the device
number and the partition number are hexadecimal.

Fixes: 8ce6a2e17577 ("spl: blk: Support loading images from fs")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Mayuresh Chitale <mchitale@ventanamicro.com>
common/spl/spl_blk_fs.c

index d4161fa..16ecece 100644 (file)
@@ -66,7 +66,7 @@ int spl_blk_load_image(struct spl_image_info *spl_image,
        }
 
        dev.ifname = blk_get_uclass_name(uclass_id);
-       snprintf(dev.dev_part_str, sizeof(dev.dev_part_str) - 1, "%d:%d",
+       snprintf(dev.dev_part_str, sizeof(dev.dev_part_str) - 1, "%x:%x",
                 devnum, partnum);
        ret = fs_set_blk_dev(dev.ifname, dev.dev_part_str, FS_TYPE_ANY);
        if (ret) {