Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

From: Maciej W. Rozycki (macro@xxxxxxxxxxxxxx)
Date: Tue Feb 19 2019 - 08:57:02 EST


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