[PATCH v3] staging: gpib: Fix i386 build issue

Dave Penkler posted 1 patch 1 year, 2 months ago
There is a newer version of this series
drivers/staging/gpib/cb7210/cb7210.c        |  6 ++++--
drivers/staging/gpib/cec/cec_gpib.c         |  3 ++-
drivers/staging/gpib/ines/ines_gpib.c       |  4 ++--
drivers/staging/gpib/tnt4882/tnt4882_gpib.c | 12 +++++++-----
4 files changed, 15 insertions(+), 10 deletions(-)
[PATCH v3] staging: gpib: Fix i386 build issue
Posted by Dave Penkler 1 year, 2 months ago
These drivers cast resource_type_t to void * causing the build to fail.

With CONFIG_X86_PAE enabled the resource_size_t type is a 64bit unsigned int
which cannot be cast to a 32 bit pointer.

Use ioremap() instead of pci_resource_start() / pnp_port_start() to
initialize iobase.

Reported_by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/all/f10e976e-7a04-4454-b38d-39cd18f142da@roeck-us.net/
Fixes: e9dc69956d4d ("staging: gpib: Add Computer Boards GPIB driver")
Fixes: e1339245eba3 ("staging: gpib: Add Computer Equipment Corporation GPIB driver")
Fixes: bb1bd92fa0f2 ("staging: gpib: Add ines GPIB driver")
Fixes: 0cd5b05551e0 ("staging: gpib: Add TNT4882 chip based GPIB driver")

Signed-off-by: Dave Penkler <dpenkler@gmail.com>
---
v1 -> v2 changed pci_resource_start to pci_resource_len for second parameter of ioremap
v2 -> v3 add changes for cb7210 and tnt4882 drivers

 drivers/staging/gpib/cb7210/cb7210.c        |  6 ++++--
 drivers/staging/gpib/cec/cec_gpib.c         |  3 ++-
 drivers/staging/gpib/ines/ines_gpib.c       |  4 ++--
 drivers/staging/gpib/tnt4882/tnt4882_gpib.c | 12 +++++++-----
 4 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/drivers/staging/gpib/cb7210/cb7210.c b/drivers/staging/gpib/cb7210/cb7210.c
index 63df7f3eb3f3..356a3404e128 100644
--- a/drivers/staging/gpib/cb7210/cb7210.c
+++ b/drivers/staging/gpib/cb7210/cb7210.c
@@ -971,11 +971,13 @@ int cb_pci_attach(gpib_board_t *board, const gpib_board_config_t *config)
 	switch (cb_priv->pci_chip) {
 	case PCI_CHIP_AMCC_S5933:
 		cb_priv->amcc_iobase = pci_resource_start(cb_priv->pci_device, 0);
-		nec_priv->iobase = (void *)(pci_resource_start(cb_priv->pci_device, 1));
+		nec_priv->iobase = ioremap(pci_resource_start(cb_priv->pci_device, 1),
+					   pci_resource_len(cb_priv->pci_device, 1));
 		cb_priv->fifo_iobase = pci_resource_start(cb_priv->pci_device, 2);
 		break;
 	case PCI_CHIP_QUANCOM:
-		nec_priv->iobase = (void *)(pci_resource_start(cb_priv->pci_device, 0));
+		nec_priv->iobase = ioremap(pci_resource_start(cb_priv->pci_device, 0),
+					   pci_resource_len(cb_priv->pci_device, 0));
 		cb_priv->fifo_iobase = (unsigned long)nec_priv->iobase;
 		break;
 	default:
diff --git a/drivers/staging/gpib/cec/cec_gpib.c b/drivers/staging/gpib/cec/cec_gpib.c
index 3dc933deb401..26c0cce1e917 100644
--- a/drivers/staging/gpib/cec/cec_gpib.c
+++ b/drivers/staging/gpib/cec/cec_gpib.c
@@ -297,7 +297,8 @@ int cec_pci_attach(gpib_board_t *board, const gpib_board_config_t *config)
 
 	cec_priv->plx_iobase = pci_resource_start(cec_priv->pci_device, 1);
 	pr_info(" plx9050 base address 0x%lx\n", cec_priv->plx_iobase);
-	nec_priv->iobase = (void *)(pci_resource_start(cec_priv->pci_device, 3));
+	nec_priv->iobase = ioremap(pci_resource_start(cec_priv->pci_device, 3),
+				   pci_resource_len(cec_priv->pci_device, 3));
 	pr_info(" nec7210 base address 0x%p\n", nec_priv->iobase);
 
 	isr_flags |= IRQF_SHARED;
diff --git a/drivers/staging/gpib/ines/ines_gpib.c b/drivers/staging/gpib/ines/ines_gpib.c
index 9d8387c3bf01..b5f8ea57fd9d 100644
--- a/drivers/staging/gpib/ines/ines_gpib.c
+++ b/drivers/staging/gpib/ines/ines_gpib.c
@@ -780,8 +780,8 @@ static int ines_common_pci_attach(gpib_board_t *board, const gpib_board_config_t
 
 	if (pci_request_regions(ines_priv->pci_device, "ines-gpib"))
 		return -1;
-	nec_priv->iobase = (void *)(pci_resource_start(ines_priv->pci_device,
-						       found_id.gpib_region));
+	nec_priv->iobase = ioremap(pci_resource_start(ines_priv->pci_device, found_id.gpib_region),
+				   pci_resource_len(ines_priv->pci_device, found_id.gpib_region));
 
 	ines_priv->pci_chip_type = found_id.pci_chip_type;
 	nec_priv->offset = found_id.io_offset;
diff --git a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c b/drivers/staging/gpib/tnt4882/tnt4882_gpib.c
index e49a952fa0d8..1e41a48e6fca 100644
--- a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c
+++ b/drivers/staging/gpib/tnt4882/tnt4882_gpib.c
@@ -1400,7 +1400,8 @@ static int ni_isa_attach_common(gpib_board_t *board, const gpib_board_config_t *
 	struct tnt4882_priv *tnt_priv;
 	struct nec7210_priv *nec_priv;
 	int isr_flags = 0;
-	void *iobase;
+	resource_size_t iobase;
+	unsigned long ibbase;
 	int irq;
 
 	board->status = 0;
@@ -1427,18 +1428,19 @@ static int ni_isa_attach_common(gpib_board_t *board, const gpib_board_config_t *
 		if (retval < 0)
 			return retval;
 		tnt_priv->pnp_dev = dev;
-		iobase = (void *)(pnp_port_start(dev, 0));
+		iobase = pnp_port_start(dev, 0);
 		irq = pnp_irq(dev, 0);
 	} else {
-		iobase = config->ibbase;
+		ibbase = (unsigned long)config->ibbase;
+		iobase = ibbase;
 		irq = config->ibirq;
 	}
 	// allocate ioports
-	if (!request_region((unsigned long)(iobase), atgpib_iosize, "atgpib")) {
+	if (!request_region(iobase, atgpib_iosize, "atgpib")) {
 		pr_err("tnt4882: failed to allocate ioports\n");
 		return -1;
 	}
-	nec_priv->iobase = iobase;
+	nec_priv->iobase = ioremap(iobase, pnp_port_len(tnt_priv->pnp_dev, 0));
 
 	// get irq
 	if (request_irq(irq, tnt4882_interrupt, isr_flags, "atgpib", board)) {
-- 
2.46.2
Re: [PATCH v3] staging: gpib: Fix i386 build issue
Posted by kernel test robot 1 year, 2 months ago
Hi Dave,

kernel test robot noticed the following build warnings:

[auto build test WARNING on staging/staging-testing]

url:    https://github.com/intel-lab-lkp/linux/commits/Dave-Penkler/staging-gpib-Fix-i386-build-issue/20241203-164356
base:   staging/staging-testing
patch link:    https://lore.kernel.org/r/20241203084116.2228-1-dpenkler%40gmail.com
patch subject: [PATCH v3] staging: gpib: Fix i386 build issue
config: i386-randconfig-061-20241203 (https://download.01.org/0day-ci/archive/20241204/202412040913.WApPUuyd-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241204/202412040913.WApPUuyd-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412040913.WApPUuyd-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1019:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1020:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1021:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1022:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1023:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1024:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1025:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1026:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1027:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1028:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1029:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1030:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1031:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1032:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1033:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1034:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1038:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1039:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1040:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1041:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1042:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1043:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1044:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1045:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1046:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1047:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1048:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1049:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1050:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1051:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1052:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1053:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1054:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1055:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1056:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1057:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1058:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1059:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1060:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1061:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1062:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1066:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1067:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1068:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1069:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1070:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1071:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1072:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1073:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1074:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1075:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1076:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1077:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1078:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1079:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1080:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1081:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1082:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1083:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1084:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1085:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1086:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1087:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1088:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1089:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1090:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1094:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1095:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1096:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1097:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1098:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1099:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1100:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1101:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1102:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1103:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1104:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1105:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1106:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1107:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1108:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1109:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1110:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1111:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1112:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1113:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1114:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1115:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1116:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1117:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1118:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:897:18: sparse: sparse: symbol 'ni_pci_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:925:18: sparse: sparse: symbol 'ni_pci_accel_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:953:18: sparse: sparse: symbol 'ni_isa_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:981:18: sparse: sparse: symbol 'ni_nat4882_isa_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1009:18: sparse: sparse: symbol 'ni_nec_isa_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1037:18: sparse: sparse: symbol 'ni_isa_accel_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1065:18: sparse: sparse: symbol 'ni_nat4882_isa_accel_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1093:18: sparse: sparse: symbol 'ni_nec_isa_accel_interface' was not declared. Should it be static?
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1423:31: sparse: sparse: Using plain integer as NULL pointer
>> drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1443:26: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void *iobase @@     got void [noderef] __iomem * @@
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1443:26: sparse:     expected void *iobase
   drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1443:26: sparse:     got void [noderef] __iomem *

vim +1443 drivers/staging/gpib/tnt4882/tnt4882_gpib.c

  1396	
  1397	static int ni_isa_attach_common(gpib_board_t *board, const gpib_board_config_t *config,
  1398					enum nec7210_chipset chipset)
  1399	{
  1400		struct tnt4882_priv *tnt_priv;
  1401		struct nec7210_priv *nec_priv;
  1402		int isr_flags = 0;
  1403		resource_size_t iobase;
  1404		unsigned long ibbase;
  1405		int irq;
  1406	
  1407		board->status = 0;
  1408	
  1409		if (tnt4882_allocate_private(board))
  1410			return -ENOMEM;
  1411		tnt_priv = board->private_data;
  1412		tnt_priv->io_writeb = outb_wrapper;
  1413		tnt_priv->io_readb = inb_wrapper;
  1414		tnt_priv->io_writew = outw_wrapper;
  1415		tnt_priv->io_readw = inw_wrapper;
  1416		nec_priv = &tnt_priv->nec7210_priv;
  1417		nec_priv->type = chipset;
  1418		nec_priv->read_byte = nec7210_locking_ioport_read_byte;
  1419		nec_priv->write_byte = nec7210_locking_ioport_write_byte;
  1420		nec_priv->offset = atgpib_reg_offset;
  1421	
  1422		// look for plug-n-play board
  1423		if (config->ibbase == 0) {
  1424			struct pnp_dev *dev;
  1425			int retval;
  1426	
  1427			retval = ni_isapnp_find(&dev);
  1428			if (retval < 0)
  1429				return retval;
  1430			tnt_priv->pnp_dev = dev;
  1431			iobase = pnp_port_start(dev, 0);
  1432			irq = pnp_irq(dev, 0);
  1433		} else {
  1434			ibbase = (unsigned long)config->ibbase;
  1435			iobase = ibbase;
  1436			irq = config->ibirq;
  1437		}
  1438		// allocate ioports
  1439		if (!request_region(iobase, atgpib_iosize, "atgpib")) {
  1440			pr_err("tnt4882: failed to allocate ioports\n");
  1441			return -1;
  1442		}
> 1443		nec_priv->iobase = ioremap(iobase, pnp_port_len(tnt_priv->pnp_dev, 0));
  1444	
  1445		// get irq
  1446		if (request_irq(irq, tnt4882_interrupt, isr_flags, "atgpib", board)) {
  1447			pr_err("gpib: can't request IRQ %d\n", irq);
  1448			return -1;
  1449		}
  1450		tnt_priv->irq = irq;
  1451	
  1452		tnt4882_init(tnt_priv, board);
  1453	
  1454		return 0;
  1455	}
  1456	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Re: [PATCH v3] staging: gpib: Fix i386 build issue
Posted by kernel test robot 1 year, 2 months ago
Hi Dave,

kernel test robot noticed the following build warnings:

[auto build test WARNING on staging/staging-testing]

url:    https://github.com/intel-lab-lkp/linux/commits/Dave-Penkler/staging-gpib-Fix-i386-build-issue/20241203-164356
base:   staging/staging-testing
patch link:    https://lore.kernel.org/r/20241203084116.2228-1-dpenkler%40gmail.com
patch subject: [PATCH v3] staging: gpib: Fix i386 build issue
config: i386-randconfig-063-20241203 (https://download.01.org/0day-ci/archive/20241204/202412040912.hxTuXBak-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241204/202412040912.hxTuXBak-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412040912.hxTuXBak-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   drivers/staging/gpib/cb7210/cb7210.c:738:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:739:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:743:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:744:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:745:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:746:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:747:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:748:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:749:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:750:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:751:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:752:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:753:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:754:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:755:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:756:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:757:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:758:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:759:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:760:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:761:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:762:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:763:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:764:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:765:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:766:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:770:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:771:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:772:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:773:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:774:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:775:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:776:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:777:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:778:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:779:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:780:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:781:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:782:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:783:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:784:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:785:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:786:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:787:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:788:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:789:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:790:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:791:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:792:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:793:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:794:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:798:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:799:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:800:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:801:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:802:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:803:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:804:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:805:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:806:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:807:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:808:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:809:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:810:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:811:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:812:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:813:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:814:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:815:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:816:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:817:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:818:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:819:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:820:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:821:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:825:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:826:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:827:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:828:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:829:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:830:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:831:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:832:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:833:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:834:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:835:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:836:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:837:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:838:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:839:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:840:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:841:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:842:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:843:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:844:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:845:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:846:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:847:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:848:1: sparse: sparse: obsolete struct initializer, use C99 syntax
   drivers/staging/gpib/cb7210/cb7210.c:849:1: sparse: sparse: obsolete struct initializer, use C99 syntax
>> drivers/staging/gpib/cb7210/cb7210.c:974:34: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void *iobase @@     got void [noderef] __iomem * @@
   drivers/staging/gpib/cb7210/cb7210.c:974:34: sparse:     expected void *iobase
   drivers/staging/gpib/cb7210/cb7210.c:974:34: sparse:     got void [noderef] __iomem *
   drivers/staging/gpib/cb7210/cb7210.c:979:34: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void *iobase @@     got void [noderef] __iomem * @@
   drivers/staging/gpib/cb7210/cb7210.c:979:34: sparse:     expected void *iobase
   drivers/staging/gpib/cb7210/cb7210.c:979:34: sparse:     got void [noderef] __iomem *
   drivers/staging/gpib/cb7210/cb7210.c:1045:87: sparse: sparse: Using plain integer as NULL pointer
   drivers/staging/gpib/cb7210/cb7210.c:686:18: sparse: sparse: symbol 'cb_pci_unaccel_interface' was not declared. Should it be static?
   drivers/staging/gpib/cb7210/cb7210.c:714:18: sparse: sparse: symbol 'cb_pci_accel_interface' was not declared. Should it be static?
   drivers/staging/gpib/cb7210/cb7210.c:742:18: sparse: sparse: symbol 'cb_pci_interface' was not declared. Should it be static?
   drivers/staging/gpib/cb7210/cb7210.c:769:18: sparse: sparse: symbol 'cb_isa_unaccel_interface' was not declared. Should it be static?
   drivers/staging/gpib/cb7210/cb7210.c:797:18: sparse: sparse: symbol 'cb_isa_interface' was not declared. Should it be static?
   drivers/staging/gpib/cb7210/cb7210.c:824:18: sparse: sparse: symbol 'cb_isa_accel_interface' was not declared. Should it be static?

vim +974 drivers/staging/gpib/cb7210/cb7210.c

   925	
   926	int cb_pci_attach(gpib_board_t *board, const gpib_board_config_t *config)
   927	{
   928		struct cb7210_priv *cb_priv;
   929		struct nec7210_priv *nec_priv;
   930		int isr_flags = 0;
   931		int bits;
   932		int retval;
   933	
   934		retval = cb7210_generic_attach(board);
   935		if (retval)
   936			return retval;
   937	
   938		cb_priv = board->private_data;
   939		nec_priv = &cb_priv->nec7210_priv;
   940	
   941		cb_priv->pci_device = gpib_pci_get_device(config, PCI_VENDOR_ID_CBOARDS,
   942							  PCI_DEVICE_ID_CBOARDS_PCI_GPIB, NULL);
   943		if (cb_priv->pci_device)
   944			cb_priv->pci_chip = PCI_CHIP_AMCC_S5933;
   945		if (!cb_priv->pci_device) {
   946			cb_priv->pci_device = gpib_pci_get_device(config, PCI_VENDOR_ID_CBOARDS,
   947								  PCI_DEVICE_ID_CBOARDS_CPCI_GPIB, NULL);
   948			if (cb_priv->pci_device)
   949				cb_priv->pci_chip = PCI_CHIP_AMCC_S5933;
   950		}
   951		if (!cb_priv->pci_device) {
   952			cb_priv->pci_device = gpib_pci_get_device(config, PCI_VENDOR_ID_QUANCOM,
   953								  PCI_DEVICE_ID_QUANCOM_GPIB, NULL);
   954			if (cb_priv->pci_device) {
   955				cb_priv->pci_chip = PCI_CHIP_QUANCOM;
   956				nec_priv->offset = 4;
   957			}
   958		}
   959		if (!cb_priv->pci_device) {
   960			pr_warn("cb7210: no supported boards found.\n");
   961			return -1;
   962		}
   963	
   964		if (pci_enable_device(cb_priv->pci_device)) {
   965			pr_err("cb7210: error enabling pci device\n");
   966			return -1;
   967		}
   968	
   969		if (pci_request_regions(cb_priv->pci_device, "cb7210"))
   970			return -1;
   971		switch (cb_priv->pci_chip) {
   972		case PCI_CHIP_AMCC_S5933:
   973			cb_priv->amcc_iobase = pci_resource_start(cb_priv->pci_device, 0);
 > 974			nec_priv->iobase = ioremap(pci_resource_start(cb_priv->pci_device, 1),
   975						   pci_resource_len(cb_priv->pci_device, 1));
   976			cb_priv->fifo_iobase = pci_resource_start(cb_priv->pci_device, 2);
   977			break;
   978		case PCI_CHIP_QUANCOM:
   979			nec_priv->iobase = ioremap(pci_resource_start(cb_priv->pci_device, 0),
   980						   pci_resource_len(cb_priv->pci_device, 0));
   981			cb_priv->fifo_iobase = (unsigned long)nec_priv->iobase;
   982			break;
   983		default:
   984			pr_err("cb7210: bug! unhandled pci_chip=%i\n", cb_priv->pci_chip);
   985			return -EIO;
   986		}
   987		isr_flags |= IRQF_SHARED;
   988		if (request_irq(cb_priv->pci_device->irq, cb_pci_interrupt, isr_flags, "cb7210", board)) {
   989			pr_err("cb7210: can't request IRQ %d\n", cb_priv->pci_device->irq);
   990			return -1;
   991		}
   992		cb_priv->irq = cb_priv->pci_device->irq;
   993	
   994		switch (cb_priv->pci_chip) {
   995		case PCI_CHIP_AMCC_S5933:
   996			// make sure mailbox flags are clear
   997			inl(cb_priv->amcc_iobase + INCOMING_MAILBOX_REG(3));
   998			// enable interrupts on amccs5933 chip
   999			bits = INBOX_FULL_INTR_BIT | INBOX_BYTE_BITS(3) | INBOX_SELECT_BITS(3) |
  1000				INBOX_INTR_CS_BIT;
  1001			outl(bits, cb_priv->amcc_iobase + INTCSR_REG);
  1002			break;
  1003		default:
  1004			break;
  1005		}
  1006		return cb7210_init(cb_priv, board);
  1007	}
  1008	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki