]> git.baikalelectronics.ru Git - kernel.git/commit
x86, voyager: fix ioremap_nocache()
authorIngo Molnar <mingo@elte.hu>
Sun, 27 Apr 2008 21:21:03 +0000 (23:21 +0200)
committerIngo Molnar <mingo@elte.hu>
Wed, 30 Apr 2008 21:15:34 +0000 (23:15 +0200)
commitad152e611d4b64710b53cd17283e525fbcbca6f5
treeeee6c7911672b3af57ab3f64b1e2adc4a78ff64c
parentca0651c7d9be996cb52f847d7187ddca89dff350
x86, voyager: fix ioremap_nocache()

James Bottomley reported that the following commit:

| commit d6612d3f3d9c270253e384aee2790e64a45fd6b8
| Author: Ingo Molnar <mingo@elte.hu>
| Date:   Wed Jan 30 13:33:40 2008 +0100
|
|     x86: change ioremap() to default to uncached

broke Voyager.

James says:

" it broke a class of voyager machines: those which
  rely on the quad interrupt controller (QIC).  The precis of why they
  broke is because the QIC does IPIs (or CPIs in its terminology) via
  cache line interference: you interrupt a processor by moving a
  designated memory area to write exclusive in the cache (by simply
  writing to the line) and the CPU acks the interrupt by moving it back to
  read shared (by reading from it).  That area, is, of course, mapped by
  ioremap, so reversing the ioremap semantics and adding the uncached bit
  completely breaks the QIC. "

Sorry about that!

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/mach-voyager/voyager_cat.c