Re: MMIO and gcc re-ordering issue

Ingo Molnar
2008-06-02T10:38:00Z

* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> > Here's a UNTESTED patch for x86 that may or may not compile and
> > work, and which serializes (on a compiler level) the IO accesses
> > against regular memory accesses.
>
> Ok, so it at least boots on x86-32. Thus probably on x86-64 too (since
> the code is now shared). I didn't look at whether it generates much
> bigger code due to the potential extra serialization, but some of the
> code generation I looked at looked fine.
>
> IOW, it doesn't at least create any _obviously_ worse code, and it
> should be arguably safer than assuming the compiler does volatile
> accesses the way we want it to.

ok, to pursue this topic of making readl*/writel*() more robust i picked
up your patch into -tip and created a new topic branch for it:
tip/x86/mmio.

The patch passed initial light testing in -tip (~30 successful random
self-builds and bootups on various mixed 32-bit/64-bit boxes) but it's
still v2.6.27 material IMO.

Failures in this area are subtle so there's no good way to tell whether
it works as intended - we need wider testing. I've also added the
tip/x86/mmio topic to tip/auto-x86-next rules as well so these changes
will be picked up by tomorrow's linux-next tree as well, and by the next
-mm iteration.

Ingo