On Sat, Nov 30, 2024 at 09:07:39AM -0800, Guenter Roeck wrote: > On 11/30/24 08:15, Greg KH wrote: > > On Sat, Nov 30, 2024 at 08:10:55AM -0800, Guenter Roeck wrote: > > > Hi, > > > > > > On Fri, Nov 29, 2024 at 05:27:53AM +0100, Greg KH wrote: > > > > The following changes since commit 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b: > > > > > > > > Linux 6.12-rc2 (2024-10-06 15:32:27 -0700) > > > > > > > > are available in the Git repository at: > > > > > > > > git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git tags/staging-6.13-rc1 > > > > > > > > for you to fetch changes up to 114eae3c9fde35220cca623840817a740a2eb7b3: > > > > > > > > Staging: gpib: gpib_os.c - Remove unnecessary OOM message (2024-11-10 08:04:18 +0100) > > > > > > > > ---------------------------------------------------------------- > > > [ ...] > > > > > > > Dave Penkler (33): > > > > staging: gpib: Add common include files for GPIB drivers > > > > staging: gpib: Add user api include files > > > > staging: gpib: Add GPIB common core driver > > > > staging: gpib: Add tms9914 GPIB chip driver > > > > staging: gpib: Add nec7210 GPIB chip driver > > > > staging: gpib: Add HP/Agilent/Keysight 8235xx PCI GPIB driver > > > > staging: gpib: Add Agilent/Keysight 82357x USB GPIB driver > > > > staging: gpib: Add Computer Boards GPIB driver > > > > > > I seem to be unable to find the patch introducing the problem (the link > > > provided with the patch is invalid), so I report it here. > > > > > > With i386 allmodconfig builds: > > > > > > Building i386:allyesconfig ... failed > > > -------------- > > > Error log: > > > drivers/staging/gpib/cec/cec_gpib.c: In function 'cec_pci_attach': > > > drivers/staging/gpib/cec/cec_gpib.c:300:28: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] > > > 300 | nec_priv->iobase = (void *)(pci_resource_start(cec_priv->pci_device, 3)); > > > | ^ > > > drivers/staging/gpib/ines/ines_gpib.c: In function 'ines_common_pci_attach': > > > drivers/staging/gpib/ines/ines_gpib.c:783:28: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] > > > 783 | nec_priv->iobase = (void *)(pci_resource_start(ines_priv->pci_device, > > > | ^ > > > > > > pci_resource_start() returns resource_size_t, which is not a pointer, and thus > > > can not be cast to one. > > > > This is odd, why hasn't 0-day or any other build testing found this? > > Good question. Another good question is why I see this only with i386 builds, > but not with other 32-bit builds. It should be easy to reproduce, though. > > make ARCH=i386 allmodconfig > make ARCH-i386 drivers/staging/gpib/cec/cec_gpib.o > > does it for me, independent of gcc version (I tried 11.4 and 13.3). > I don't see it with clang. > > Having said this, using the return value from pci_resource_start() directly as pointer > is quite unusual. Typically drivers use ioremap(), request_region(), pci_iomap(), or > a similar function on it to get a pointer. > > Guenter > That is weird: the type of resource.start is resource_size_t which resolves to u32 via phys_addr_t on i386 which should be the same size as void * For compile check purposes simply changing iobase type to phys_addr_t the following error message appears: drivers/staging/gpib/ines/ines_gpib.c: In function 'ines_common_pci_attach': drivers/staging/gpib/ines/ines_gpib.c:783:28: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 783 | nec_priv->iobase = (void *)(pci_resource_start(ines_priv->pci_device, | ^ drivers/staging/gpib/ines/ines_gpib.c:783:26: error: assignment to 'phys_addr_t' {aka 'long long unsigned int'} from 'void *' makes integer from pointer without a cast [-Wint-conversion] 783 | nec_priv->iobase = (void *)(pci_resource_start(ines_priv->pci_device, | ^ It would seem that for some reason phys_addr_t resolves to long long unsigned int -Dave