On Thu, Sep 9, 2021 at 7:00 AM Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > > Some drivers pass a pointer to volatile data to virt_to_bus() and > virt_to_phys(). One exception is alpha. This results in a number > of compile errors such as > > drivers/net/wan/lmc/lmc_main.c: In function 'lmc_softreset': > drivers/net/wan/lmc/lmc_main.c:1782:50: error: > passing argument 1 of 'virt_to_bus' discards 'volatile' > qualifier from pointer target type > > drivers/atm/ambassador.c: In function 'do_loader_command': > drivers/atm/ambassador.c:1747:58: error: > passing argument 1 of 'virt_to_bus' discards 'volatile' > qualifier from pointer target type > > Declare the parameter of virt_to_phys and virt_to_bus as pointer to volatile > to fix the problem. > > Cc: Arnd Bergmann <arnd@xxxxxxxxxx> > Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx> Acked-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > We could instead try to modify the affected drivers, but both drivers > use the buffer to communicate with the chip, so that would require lots > of typecasts there. Another option would be to disable affected drivers > for alpha, but that seems undesirable. > Other ideas welcome. Your patch is the obvious workaround, as this makes alpha behave the same way as all the other architectures. Drivers using virt_to_bus() are already nonportable, so we could also decide to go through all users to see which ones are ready to be retired, and go through the architectures to see which ones actually still require drivers that use virt_to_bus(), removing the interface from the others. The ones I see are arch/alpha/Kconfig: select VIRT_TO_BUS arch/h8300/Kconfig: select VIRT_TO_BUS arch/ia64/Kconfig: select VIRT_TO_BUS arch/m68k/Kconfig: select VIRT_TO_BUS arch/microblaze/Kconfig: select VIRT_TO_BUS arch/mips/Kconfig: select VIRT_TO_BUS arch/parisc/Kconfig: select VIRT_TO_BUS arch/powerpc/Kconfig: select VIRT_TO_BUS if !PPC64 arch/x86/Kconfig: select VIRT_TO_BUS arch/xtensa/Kconfig: select VIRT_TO_BUS drivers/atm/Kconfig: depends on PCI && VIRT_TO_BUS drivers/atm/Kconfig: depends on PCI && VIRT_TO_BUS drivers/atm/Kconfig: depends on PCI && VIRT_TO_BUS drivers/atm/Kconfig: depends on PCI && VIRT_TO_BUS drivers/media/pci/sta2x11/Kconfig: depends on PCI && VIDEO_V4L2 && VIRT_TO_BUS && I2C drivers/net/appletalk/Kconfig: depends on DEV_APPLETALK && (ISA || EISA) && ISA_DMA_API && VIRT_TO_BUS drivers/net/ethernet/dec/tulip/Kconfig: depends on VIRT_TO_BUS || ALPHA || PPC || SPARC drivers/net/wan/Kconfig: depends on ISA && m && ISA_DMA_API && INET && HDLC && VIRT_TO_BUS drivers/net/wan/Kconfig: depends on ISA && m && ISA_DMA_API && HDLC && VIRT_TO_BUS drivers/net/wan/Kconfig: depends on PCI && VIRT_TO_BUS && HDLC drivers/net/wan/Kconfig: depends on ISA && m && ISA_DMA_API && INET && HDLC && VIRT_TO_BUS drivers/scsi/Kconfig: depends on SCSI && PCI && VIRT_TO_BUS drivers/scsi/Kconfig: depends on PCI && SCSI && VIRT_TO_BUS drivers/vme/bridges/Kconfig: depends on VIRT_TO_BUS I think we can drop VIRT_TO_BUS from everything other than x86-32, m68k and ppc32, and fix the tulip and xlr_net drivers to not use it. Arnd