scsi: lpfc: use __raw_writeX on DPP copies
authorJames Smart <jsmart2021@gmail.com>
Mon, 5 Mar 2018 18:29:03 +0000 (10:29 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 7 Mar 2018 02:25:39 +0000 (21:25 -0500)
commit4c06619fc4da5b7aae76f1dde25bfea3246f2591
treec2e7c86d8e7db8083ea81008f8a334ec25fc1ee1
parent2f793a27d58f0fb302f8e162b46fe4b366bbdedd
scsi: lpfc: use __raw_writeX on DPP copies

Commit 1351e69fc6db ("scsi: lpfc: Add push-to-adapter support to sli4")
fails compilation on some 32-bit systems as writeq() is not supported on
all architectures. Additionally, it was pointed out that as writeX()
does byteswapping if necessary for pci vs the cpu endianness, the code
was broken on BE PPC.

After discussions with Arnd Bergmann, we've resolved the issue
to the following:
  Instead of writeX(), use __raw_writeX() - which writes to io
    space while preserving byte order. To use this, the code
    was changed to use a different buffer that lpfc prepped
    via sli_pcimem_bcopy() that was set to the bytestream to
    be written.
  On platforms with __raw_writeq support, use the routine, otherwise
    use __raw_writel()

[mkp: checkpatch]

Fixes: 1351e69fc6db ("scsi: lpfc: Add push-to-adapter support to sli4")
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_sli.c