diff mbox series

fix qla2xxx regression on sparc64

Message ID 20200822.135941.315149880460809536.rene@exactcode.com (mailing list archive)
State Superseded
Headers show
Series fix qla2xxx regression on sparc64 | expand

Commit Message

Rene Rebe Aug. 22, 2020, 11:59 a.m. UTC
Commit 98aee70d19a7e3203649fa2078464e4f402a0ad8 in 2014 broke qla2xxx on
sparc64, e.g. as in the Sun Blade 1000 / 2000. Unbreak by partial revert to
fix endianess in nvram firmware default initialization.

Fixes: 98aee70d19a7e ("qla2xxx: Add endianizer to max_payload_size modifier.")
Signed-off-by: René Rebe <rene@exactcode.de>

Comments

Bart Van Assche Aug. 22, 2020, 3:53 p.m. UTC | #1
On 2020-08-22 04:59, Rene Rebe wrote:
> Commit 98aee70d19a7e3203649fa2078464e4f402a0ad8 in 2014 broke qla2xxx on
> sparc64, e.g. as in the Sun Blade 1000 / 2000. Unbreak by partial revert to
> fix endianess in nvram firmware default initialization.
> 
> Fixes: 98aee70d19a7e ("qla2xxx: Add endianizer to max_payload_size modifier.")
> Signed-off-by: René Rebe <rene@exactcode.de>
> 
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index 57a2d76aa691..0916c33eb076 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -4603,18 +4603,18 @@ qla2x00_nvram_config(scsi_qla_host_t *vha)
>  			nv->firmware_options[1] = BIT_7 | BIT_5;
>  			nv->add_firmware_options[0] = BIT_5;
>  			nv->add_firmware_options[1] = BIT_5 | BIT_4;
> -			nv->frame_payload_size = 2048;
> +			nv->frame_payload_size = __constant_cpu_to_le16(2048);
>  			nv->special_options[1] = BIT_7;
>  		} else if (IS_QLA2200(ha)) {
>  			nv->firmware_options[0] = BIT_2 | BIT_1;
>  			nv->firmware_options[1] = BIT_7 | BIT_5;
>  			nv->add_firmware_options[0] = BIT_5;
>  			nv->add_firmware_options[1] = BIT_5 | BIT_4;
> -			nv->frame_payload_size = 1024;
> +			nv->frame_payload_size = __constant_cpu_to_le16(1024);
>  		} else if (IS_QLA2100(ha)) {
>  			nv->firmware_options[0] = BIT_3 | BIT_1;
>  			nv->firmware_options[1] = BIT_5;
> -			nv->frame_payload_size = 1024;
> +			nv->frame_payload_size = __constant_cpu_to_le16(1024);
>  		}
>  
>  		nv->max_iocb_allocation = cpu_to_le16(256);

Drivers should use cpu_to_le16() instead of __constant_cpu_to_le16().

Additionally, this patch introduces the following new sparse warnings:

$ make C=2 M=drivers/scsi/qla2xxx
  CC [M]  drivers/scsi/qla2xxx/qla_os.o
  CHECK   drivers/scsi/qla2xxx/qla_os.c
  CC [M]  drivers/scsi/qla2xxx/qla_init.o
  CHECK   drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_init.c:4606:48: warning: incorrect type in assignment (different base types)
drivers/scsi/qla2xxx/qla_init.c:4606:48:    expected unsigned short [usertype] frame_payload_size
drivers/scsi/qla2xxx/qla_init.c:4606:48:    got restricted __le16 [usertype]
drivers/scsi/qla2xxx/qla_init.c:4613:48: warning: incorrect type in assignment (different base types)
drivers/scsi/qla2xxx/qla_init.c:4613:48:    expected unsigned short [usertype] frame_payload_size
drivers/scsi/qla2xxx/qla_init.c:4613:48:    got restricted __le16 [usertype]
drivers/scsi/qla2xxx/qla_init.c:4617:48: warning: incorrect type in assignment (different base types)
drivers/scsi/qla2xxx/qla_init.c:4617:48:    expected unsigned short [usertype] frame_payload_size
drivers/scsi/qla2xxx/qla_init.c:4617:48:    got restricted __le16 [usertype]

Please fix these.

Bart.
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 57a2d76aa691..0916c33eb076 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -4603,18 +4603,18 @@  qla2x00_nvram_config(scsi_qla_host_t *vha)
 			nv->firmware_options[1] = BIT_7 | BIT_5;
 			nv->add_firmware_options[0] = BIT_5;
 			nv->add_firmware_options[1] = BIT_5 | BIT_4;
-			nv->frame_payload_size = 2048;
+			nv->frame_payload_size = __constant_cpu_to_le16(2048);
 			nv->special_options[1] = BIT_7;
 		} else if (IS_QLA2200(ha)) {
 			nv->firmware_options[0] = BIT_2 | BIT_1;
 			nv->firmware_options[1] = BIT_7 | BIT_5;
 			nv->add_firmware_options[0] = BIT_5;
 			nv->add_firmware_options[1] = BIT_5 | BIT_4;
-			nv->frame_payload_size = 1024;
+			nv->frame_payload_size = __constant_cpu_to_le16(1024);
 		} else if (IS_QLA2100(ha)) {
 			nv->firmware_options[0] = BIT_3 | BIT_1;
 			nv->firmware_options[1] = BIT_5;
-			nv->frame_payload_size = 1024;
+			nv->frame_payload_size = __constant_cpu_to_le16(1024);
 		}
 
 		nv->max_iocb_allocation = cpu_to_le16(256);