On Tue, 19 Feb 2019, Mikulas Patocka wrote:
> The avanti platform is still broken in the kernel 5.0 and I tested that
> this patch fixes it.
[...]
> > diff --git a/arch/alpha/kernel/io.c b/arch/alpha/kernel/io.c
> > index c025a3e5e357..604237fa821f 100644
> > --- a/arch/alpha/kernel/io.c
> > +++ b/arch/alpha/kernel/io.c
> > @@ -78,16 +78,19 @@ u32 inl(unsigned long port)
> > void outb(u8 b, unsigned long port)
> > {
> > iowrite8(b, ioport_map(port, 1));
> > + mb();
> > }
-- etc. Shouldn't the barrier be *in* `iowriteX' instead? In
Documentation/memory-barriers.txt we have:
(*) ioreadX(), iowriteX()
These will perform appropriately for the type of access they're actually
doing, be it inX()/outX() or readX()/writeX().
and some drivers call `ioreadX'/`iowriteX' directly.
Maciej