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

Dave Penkler posted 1 patch 1 year ago
drivers/staging/gpib/Kconfig | 4 ++++
1 file changed, 4 insertions(+)
[PATCH v6] staging: gpib: Fix i386 build issue
Posted by Dave Penkler 1 year ago
These drivers cast resource_type_t to void * causing the build to fail.

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

Disable these drivers if not 64BIT and PHYS_ADDR_T_64BIT are configured.

Link: https://lore.kernel.org/linux-staging/2c6c7e9d-ca10-47a9-82a7-a2e26b1f51ef@roeck-us.net/
Reported-by: Guenter Roeck <linux@roeck-us.net>
Closes: 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
v3 -> v4 disable build of drivers when X86_PAE is enabled
v4 -> v5 add missing signoff
v5 -> v6 Non x86 builds were also failing. See discussion under Link above.
         generalise the build dependencies to exclude the drivers when
	 the physical address type does not match the arch word length.

drivers/staging/gpib/Kconfig | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/staging/gpib/Kconfig b/drivers/staging/gpib/Kconfig
index 95308d15a555..36a29b52ba30 100644
--- a/drivers/staging/gpib/Kconfig
+++ b/drivers/staging/gpib/Kconfig
@@ -50,6 +50,7 @@ config GPIB_CEC_PCI
 	tristate "CEC PCI board"
 	depends on PCI
 	depends on HAS_IOPORT
+	depends on 64BIT || !PHYS_ADDR_T_64BIT
 	select GPIB_COMMON
 	select GPIB_NEC7210
 	help
@@ -64,6 +65,7 @@ config GPIB_NI_PCI_ISA
 	depends on ISA_BUS || PCI || PCMCIA
 	select GPIB_COMMON
 	select GPIB_NEC7210
+	depends on 64BIT || !PHYS_ADDR_T_64BIT
 	help
 	  Enable support for National Instruments boards based
 	  on TNT4882 chips:
@@ -85,6 +87,7 @@ config GPIB_CB7210
        tristate "Measurement Computing compatible boards"
 	depends on HAS_IOPORT
 	depends on ISA_BUS || PCI || PCMCIA
+	depends on 64BIT || !PHYS_ADDR_T_64BIT
        select GPIB_COMMON
 	select GPIB_NEC7210
        help
@@ -176,6 +179,7 @@ config GPIB_INES
 	depends on HAS_IOPORT
        select GPIB_COMMON
        select GPIB_NEC7210
+       depends on 64BIT || !PHYS_ADDR_T_64BIT
        help
          GPIB driver for Ines compatible boards
 	 Ines
-- 
2.47.1
Re: [PATCH v6] staging: gpib: Fix i386 build issue
Posted by Guenter Roeck 1 year ago
On 12/11/24 08:44, Dave Penkler wrote:
> These drivers cast resource_type_t to void * causing the build to fail.
> 
> With a 32 bit build and PHYS_ADDR_T_64BIT enabled the resource_size_t
> type is a 64bit unsigned int which cannot be cast to a 32 bit pointer.
> 
> Disable these drivers if not 64BIT and PHYS_ADDR_T_64BIT are configured.
> 
> Link: https://lore.kernel.org/linux-staging/2c6c7e9d-ca10-47a9-82a7-a2e26b1f51ef@roeck-us.net/
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Closes: 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>

Tested-by: Guenter Roeck <linux@roeck-us.net>

Guenter
Re: [PATCH v6] staging: gpib: Fix i386 build issue
Posted by Dave Penkler 1 year ago
On Wed, Dec 11, 2024 at 11:42:36AM -0800, Guenter Roeck wrote:
> On 12/11/24 08:44, Dave Penkler wrote:
> > These drivers cast resource_type_t to void * causing the build to fail.
> > 
> > With a 32 bit build and PHYS_ADDR_T_64BIT enabled the resource_size_t
> > type is a 64bit unsigned int which cannot be cast to a 32 bit pointer.
> > 
> > Disable these drivers if not 64BIT and PHYS_ADDR_T_64BIT are configured.
> > 
> > Link: https://lore.kernel.org/linux-staging/2c6c7e9d-ca10-47a9-82a7-a2e26b1f51ef@roeck-us.net/
> > Reported-by: Guenter Roeck <linux@roeck-us.net>
> > Closes: 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>
> 
> Tested-by: Guenter Roeck <linux@roeck-us.net>
> 
> Guenter
> 
Hi Guenter,
These nice patches from Arnd fix the i386 build issue without having applied 
my v6 patch:
Link: https://lore.kernel.org/linux-staging/20241213064959.1045243-1-arnd@kernel.org/

I tested only 
make ARCH=i386 allmodconfig
make ARCH=i386 M=drivers/staging/gpib

-Dave
Re: [PATCH v6] staging: gpib: Fix i386 build issue
Posted by Guenter Roeck 1 year ago
On 12/13/24 02:53, Dave Penkler wrote:
> On Wed, Dec 11, 2024 at 11:42:36AM -0800, Guenter Roeck wrote:
>> On 12/11/24 08:44, Dave Penkler wrote:
>>> These drivers cast resource_type_t to void * causing the build to fail.
>>>
>>> With a 32 bit build and PHYS_ADDR_T_64BIT enabled the resource_size_t
>>> type is a 64bit unsigned int which cannot be cast to a 32 bit pointer.
>>>
>>> Disable these drivers if not 64BIT and PHYS_ADDR_T_64BIT are configured.
>>>
>>> Link: https://lore.kernel.org/linux-staging/2c6c7e9d-ca10-47a9-82a7-a2e26b1f51ef@roeck-us.net/
>>> Reported-by: Guenter Roeck <linux@roeck-us.net>
>>> Closes: 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>
>>
>> Tested-by: Guenter Roeck <linux@roeck-us.net>
>>
>> Guenter
>>
> Hi Guenter,
> These nice patches from Arnd fix the i386 build issue without having applied
> my v6 patch:
> Link: https://lore.kernel.org/linux-staging/20241213064959.1045243-1-arnd@kernel.org/
> 
> I tested only
> make ARCH=i386 allmodconfig
> make ARCH=i386 M=drivers/staging/gpib
> 
> -Dave

I don't care how this is fixed. What I do care about it that we are close to -rc3, and my
test builds still fail.

Build results:
	total: 161 pass: 155 fail: 6
Failed builds:
	csky:allmodconfig
	i386:allyesconfig
	i386:allmodconfig
	openrisc:allmodconfig
	s390:allmodconfig
	xtensa:allmodconfig

all because of GPIB problems. Given that this is a staging driver, I am inclined to just
hard-disable GPIB completely in my test coverage. I'll do that after -rc3 is out.

Guenter