config_distro_bootcmd: Run 'scsi scan' before trying scsi disks
authorHans de Goede <hdegoede@redhat.com>
Tue, 16 Sep 2014 07:26:23 +0000 (09:26 +0200)
committerTom Rini <trini@ti.com>
Wed, 24 Sep 2014 22:30:28 +0000 (18:30 -0400)
Scsi disks need to be probed before we try to access them, otherwise all
accesses fail with: ** Bad device size - scsi 0 **.

Reported-by: Karsten Merker <merker@debian.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Karsten Merker <merker@debian.org>
include/config_distro_bootcmd.h

index 90d990157f63baf410eb84a35e2b2e6df32c9877..be616e8bfd0e0578d54c0414e29599885ada17e8 100644 (file)
 #endif
 
 #ifdef CONFIG_CMD_SCSI
-#define BOOTENV_SHARED_SCSI    BOOTENV_SHARED_BLKDEV(scsi)
+#define BOOTENV_RUN_SCSI_INIT "run scsi_init; "
+#define BOOTENV_SET_SCSI_NEED_INIT "setenv scsi_need_init; "
+#define BOOTENV_SHARED_SCSI \
+       "scsi_init=" \
+               "if ${scsi_need_init}; then " \
+                       "setenv scsi_need_init false; " \
+                       "scsi scan; " \
+               "fi\0" \
+       \
+       "scsi_boot=" \
+               BOOTENV_RUN_SCSI_INIT \
+               BOOTENV_SHARED_BLKDEV_BODY(scsi)
 #define BOOTENV_DEV_SCSI       BOOTENV_DEV_BLKDEV
 #define BOOTENV_DEV_NAME_SCSI  BOOTENV_DEV_NAME_BLKDEV
 #else
+#define BOOTENV_RUN_SCSI_INIT
+#define BOOTENV_SET_SCSI_NEED_INIT
 #define BOOTENV_SHARED_SCSI
 #define BOOTENV_DEV_SCSI \
        BOOT_TARGET_DEVICES_references_SCSI_without_CONFIG_CMD_SCSI
        \
        BOOT_TARGET_DEVICES(BOOTENV_DEV)                                  \
        \
-       "bootcmd=" BOOTENV_SET_USB_NEED_INIT                              \
+       "bootcmd=" BOOTENV_SET_USB_NEED_INIT BOOTENV_SET_SCSI_NEED_INIT   \
                "for target in ${boot_targets}; do "                      \
                        "run bootcmd_${target}; "                         \
                "done\0"