On Tue, Nov 17, 2020 at 12:50:31PM -0600, Tyrel Datwyler wrote: > The vfcFrame correlation field is 64bit handle that is intended to trace > I/O operations through both the client stack and VIOS stack when the > underlying physical FC adapter supports tagging. > > Tag vfcFrames with the associated ibmvfc_event pointer handle. > > Signed-off-by: Tyrel Datwyler <tyreld@xxxxxxxxxxxxx> > --- > drivers/scsi/ibmvscsi/ibmvfc.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c > index 0cab4b852b48..3922441a117d 100644 > --- a/drivers/scsi/ibmvscsi/ibmvfc.c > +++ b/drivers/scsi/ibmvscsi/ibmvfc.c > @@ -1693,6 +1693,8 @@ static int ibmvfc_queuecommand_lck(struct scsi_cmnd *cmnd, > vfc_cmd->iu.pri_task_attr = IBMVFC_SIMPLE_TASK; > } > > + vfc_cmd->correlation = cpu_to_be64(evt); > + > if (likely(!(rc = ibmvfc_map_sg_data(cmnd, evt, vfc_cmd, vhost->dev)))) > return ibmvfc_send_event(evt, vhost, 0); > > @@ -2370,6 +2372,8 @@ static int ibmvfc_abort_task_set(struct scsi_device *sdev) > tmf->iu.tmf_flags = IBMVFC_ABORT_TASK_SET; > evt->sync_iu = &rsp_iu; > > + tmf->correlation = cpu_to_be64(evt); > + > init_completion(&evt->comp); > rsp_rc = ibmvfc_send_event(evt, vhost, default_timeout); > } > -- > 2.27.0 > This patch introduces a clang warning, is this intentional behavior? $ make -skj"$(nproc)" ARCH=powerpc CROSS_COMPILE=powerpc64le-linux-gnu- LLVM=1 O=out distclean ppc64le_defconfig drivers/scsi/ibmvscsi/ibmvfc.o Using ../arch/powerpc/configs/ppc64_defconfig as base Merging ../arch/powerpc/configs/le.config # # merged configuration written to .config (needs make) # ../drivers/scsi/ibmvscsi/ibmvfc.c:1747:25: warning: incompatible pointer to integer conversion passing 'struct ibmvfc_event *' to parameter of type '__u64' (aka 'unsigned long long') [-Wint-conversion] vfc_cmd->correlation = cpu_to_be64(evt); ^~~~~~~~~~~~~~~~ ../include/linux/byteorder/generic.h:92:21: note: expanded from macro 'cpu_to_be64' #define cpu_to_be64 __cpu_to_be64 ^ ../include/uapi/linux/byteorder/little_endian.h:37:52: note: expanded from macro '__cpu_to_be64' #define __cpu_to_be64(x) ((__force __be64)__swab64((x))) ~~~~~~~~~^~~~ ../include/uapi/linux/swab.h:133:12: note: expanded from macro '__swab64' __fswab64(x)) ^ ../include/uapi/linux/swab.h:66:57: note: passing argument to parameter 'val' here static inline __attribute_const__ __u64 __fswab64(__u64 val) ^ ../drivers/scsi/ibmvscsi/ibmvfc.c:2421:22: warning: incompatible pointer to integer conversion passing 'struct ibmvfc_event *' to parameter of type '__u64' (aka 'unsigned long long') [-Wint-conversion] tmf->correlation = cpu_to_be64(evt); ^~~~~~~~~~~~~~~~ ../include/linux/byteorder/generic.h:92:21: note: expanded from macro 'cpu_to_be64' #define cpu_to_be64 __cpu_to_be64 ^ ../include/uapi/linux/byteorder/little_endian.h:37:52: note: expanded from macro '__cpu_to_be64' #define __cpu_to_be64(x) ((__force __be64)__swab64((x))) ~~~~~~~~~^~~~ ../include/uapi/linux/swab.h:133:12: note: expanded from macro '__swab64' __fswab64(x)) ^ ../include/uapi/linux/swab.h:66:57: note: passing argument to parameter 'val' here static inline __attribute_const__ __u64 __fswab64(__u64 val) ^ 2 warnings generated. Cheers, Nathan