Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Fri, 17 Aug 2018, Maciej W. Rozycki wrote:

> On Fri, 17 Aug 2018, Arnd Bergmann wrote:
> 
> > - For outb()/outw()/outl(), we ought to provide stronger barriers than for
> >   writeb()/writew()/writel(), as PCI drivers should expect the store to have
> >   arrived at the device by the time the function returns.
> > 
> > Could you try the patch below that would address the second issue but not
> > the first?
> > 
> >       Arnd
> > 
> > diff --git a/arch/alpha/include/asm/io.h b/arch/alpha/include/asm/io.h
> > index 4c533fc94d62..0a479ac27cab 100644
> > --- a/arch/alpha/include/asm/io.h
> > +++ b/arch/alpha/include/asm/io.h
> > @@ -364,11 +364,13 @@ extern inline u16 inw(unsigned long port)
> >  extern inline void outb(u8 b, unsigned long port)
> >  {
> >         iowrite8(b, ioport_map(port, 1));
> > +       mb();
> 
>  But is `mb' the right kind of high-level barrier for MMIO rather than 
> regular memory access?
> 
>  I believe it is not and so I was told in the past when an ordering 
> barrier was required for MMIO in a network driver for a weakly ordered 
> system.  I think different kind of barrier is required here, such as 
> `mmiowb', if appropriate.  Of course at the low level it may indeed expand 
> to an MB hardware instruction, but that's another matter, we need to 
> abstract things properly.
> 
>  A while ago I proposed a set of different MMIO barriers, that some 
> systems may require, corresponding to the respective regular memory 
> barriers, but in the I/O context.  I never got to implementing that 
> proposal, but I still think it's the right thing to do and will see if I 
> can find some time to try doing that.  Right now we have quite a mess with 
> that. :(
> 
>   Maciej

The alpha architecture has only two barrier instructions - "mb" that 
orders both reads and writes and "wmb" that orders only writes.

Mikulas



[Index of Archives]     [Netdev]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux