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.