1. 02 6月, 2008 1 次提交
    • L
      x86: MMIO and gcc re-ordering issue · c1f64a58
      Linus Torvalds 提交于
      On Tue, 27 May 2008, Linus Torvalds wrote:
      >
      > Expecting people to fix up all drivers is simply not going to happen. And
      > serializing things shouldn't be *that* expensive. People who cannot take
      > the expense can continue to use the magic __raw_writel() etc stuff.
      
      Of course, for non-x86, you kind of have to expect drivers to be
      well-behaved, so non-x86 can probably avoid this simply because there are
      less relevant drivers involved.
      
      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.
      
      __read[bwlq]()/__write[bwlq]() are not serialized with a :"memory"
      barrier, although since they still use "asm volatile" I suspect that i
      practice they are probably serial too. Did not look very closely at any
      generated code (only did a trivial test to see that the code looks
      *roughly* correct).
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c1f64a58
  2. 30 5月, 2008 39 次提交