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