[PATCH] cxl: sparse: add __iomem annotations in vphb.c

Andrew Donnellan andrew.donnellan at au1.ibm.com
Wed Oct 28 14:29:39 AEDT 2015


sparse identifies the following issues:

  drivers/misc/cxl/vphb.c:131:17: warning: incorrect type in assignment
    (different address spaces)
  drivers/misc/cxl/vphb.c:131:17:    expected void volatile [noderef]
    <asn:2>*<noident>
  drivers/misc/cxl/vphb.c:131:17:    got void *<noident>
  drivers/misc/cxl/vphb.c:252:23: warning: incorrect type in assignment
    (different address spaces)
  drivers/misc/cxl/vphb.c:252:23:    expected void [noderef]
    <asn:2>*cfg_data
  drivers/misc/cxl/vphb.c:252:23:    got void *<noident>

Add __iomem annotations and remove unnecessary casts to clear up these
warnings.

Reported-by: Daniel Axtens <dja at axtens.net>
Signed-off-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>

---

This patch is a respin of https://patchwork.ozlabs.org/patch/504976/,
incorporating comments from mpe.

As with the old patch, this patch doesn't make any changes to the return
type of cxl_pcie_cfg_addr() and casts to an __iomem type when we use it in
cxl_pcie_config_info(). cxl_pcie_cfg_addr() returns an unsigned long,
rather than a pointer type, as we use its return value in bitwise
operations. If there's a better way to handle this I'd like to know.
---
 drivers/misc/cxl/vphb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/misc/cxl/vphb.c b/drivers/misc/cxl/vphb.c
index c241e15..588bfc0 100644
--- a/drivers/misc/cxl/vphb.c
+++ b/drivers/misc/cxl/vphb.c
@@ -128,7 +128,7 @@ static int cxl_pcie_config_info(struct pci_bus *bus, unsigned int devfn,
 		return PCIBIOS_BAD_REGISTER_NUMBER;
 	addr = cxl_pcie_cfg_addr(phb, bus->number, devfn, offset);
 
-	*ioaddr = (void *)(addr & ~0x3ULL);
+	*ioaddr = (void __iomem *)(addr & ~0x3ULL);
 	*shift = ((addr & 0x3) * 8);
 	switch (len) {
 	case 1:
@@ -249,7 +249,7 @@ int cxl_pci_vphb_add(struct cxl_afu *afu)
 	/* Setup the PHB using arch provided callback */
 	phb->ops = &cxl_pcie_pci_ops;
 	phb->cfg_addr = afu->afu_desc_mmio + afu->crs_offset;
-	phb->cfg_data = (void *)(u64)afu->crs_len;
+	phb->cfg_data = (void __iomem *)afu->crs_len;
 	phb->private_data = afu;
 	phb->controller_ops = cxl_pci_controller_ops;
 
-- 
Andrew Donnellan              Software Engineer, OzLabs
andrew.donnellan at au1.ibm.com  Australia Development Lab, Canberra
+61 2 6201 8874 (work)        IBM Australia Limited



More information about the Linuxppc-dev mailing list