Re: [PATCH] fix qla2xxx regression on sparc64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxx>
> 
> 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.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux