• Ingo Molnar's avatar
    x86, voyager: fix ioremap_nocache() · ed5e2332
    Ingo Molnar authored
    James Bottomley reported that the following commit:
    
    | commit 6371b495
    | 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: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    ed5e2332
voyager_cat.c 35.2 KB