linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@kernel.org>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Richard Henderson <rth@twiddle.net>,
	Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
	Matt Turner <mattst88@gmail.com>,
	alpha <linux-alpha@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] alpha: Declare virt_to_phys and virt_to_bus parameter as pointer to volatile
Date: Thu, 9 Sep 2021 10:13:32 +0200	[thread overview]
Message-ID: <CAK8P3a0U-BxUfdTiwDRNHvGHetenF0zVObNVj0z67SqzzEeFyg@mail.gmail.com> (raw)
In-Reply-To: <20210909050033.1564459-1-linux@roeck-us.net>

On Thu, Sep 9, 2021 at 7:00 AM Guenter Roeck <linux@roeck-us.net> 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@kernel.org>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>

Acked-by: Arnd Bergmann <arnd@arndb.de>

> ---
> 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

      reply	other threads:[~2021-09-09  8:13 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-09  5:00 [PATCH] alpha: Declare virt_to_phys and virt_to_bus parameter as pointer to volatile Guenter Roeck
2021-09-09  8:13 ` Arnd Bergmann [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAK8P3a0U-BxUfdTiwDRNHvGHetenF0zVObNVj0z67SqzzEeFyg@mail.gmail.com \
    --to=arnd@kernel.org \
    --cc=ink@jurassic.park.msu.ru \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mattst88@gmail.com \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).