diff mbox

[U-Boot] config_distro_bootcmd: Run 'scsi scan' before trying scsi disks

Message ID 1410852383-7260-2-git-send-email-hdegoede@redhat.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Hans de Goede Sept. 16, 2014, 7:26 a.m. UTC
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>
---
 include/config_distro_bootcmd.h | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

Comments

Stephen Warren Sept. 16, 2014, 2:33 p.m. UTC | #1
On 09/16/2014 01:26 AM, Hans de Goede wrote:
> Scsi disks need to be probed before we try to access them, otherwise all
> accesses fail with: ** Bad device size - scsi 0 **.

Reviewed-by: Stephen Warren <swarren@nvidia.com>
Karsten Merker Sept. 17, 2014, 5:57 p.m. UTC | #2
On Tue, Sep 16, 2014 at 09:26:23AM +0200, Hans de Goede wrote:
> 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>

Tested-by: Karsten Merker <merker@debian.org>

> ---
>  include/config_distro_bootcmd.h | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
> index 90d9901..be616e8 100644
> --- a/include/config_distro_bootcmd.h
> +++ b/include/config_distro_bootcmd.h
> @@ -53,10 +53,23 @@
>  #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
> @@ -189,7 +202,7 @@
>  	\
>  	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"
> -- 
> 2.1.0
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Tom Rini Sept. 25, 2014, 2:45 p.m. UTC | #3
On Tue, Sep 16, 2014 at 09:26:23AM +0200, Hans de Goede wrote:

> 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>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
index 90d9901..be616e8 100644
--- a/include/config_distro_bootcmd.h
+++ b/include/config_distro_bootcmd.h
@@ -53,10 +53,23 @@ 
 #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
@@ -189,7 +202,7 @@ 
 	\
 	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"