|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
[Xen-devel] Re: [PATCH][FIX] Possible fix for spurious interrupts
 
On 20 Apr 2006, at 09:53, Jan Beulich wrote:
 Hmm, I read that mail, but it seemed to indicate that this would 
affect only a single line. We had been seeing this on
multiple lines, however. Also, to me lines 16 and above aren't really 
'legacy', so the implication might rather be for
routing in systems with multiple IO-APICs where older software only 
finds one. As this would then seem to be
deterministic, the question would be if there is a way to know which 
IO-APIC triggers which line (this must be possible,
or else the 'older software' wouldn't be able to know where the 
interrupts arrive at the first IO-APIC), and use this
knowledge, or at least restrict the fix currently in use to all but 
the first ('legacy') IO-APIC (which should improve
things namely on single-IO-APIC systems).
  
 I am certain that we have been hitting *at least* this issue. Maybe 
there are others, but I'll be surprised if you continue to hit spurious 
interrupt problems with the workaround in place.
 Here is my understanding of this boot interrupt mode and why it affects 
us:
 1. PCI-X bridge interrupt inputs are not configurable directly as 
inputs to the 859 PICs (I/O hubs usually allow that for normal PCI 
interrupt inputs)
 2. So any OS not aware of APICs cannot get at those interrupt lines 
unless a hardware hack is introduced
 3. Intel introduce a 'boot interrupt' line by wire-ORing together all 
the interrupt inputs to an IO-APIC that services PCI-X interrupts, and 
forwarding the resulting 'boot interrupt' line to some INTx line or pin 
on the 8259 (note: I'm unsure where this boot interrupt actually gets 
wired to).
 4. I guess that if you have more than one PCI-X IO-APIC, they may 
forward their boot interrupts to different INTx lines and so appear as 
different interrupts to the OS.
What I'm not sure about:
  1. How are legacy OSes supposed to detect these devices and know that 
the interrupt lines are routed to a particular 8259 pin?
 2. Why does this alias with an IOAPIC0 input? Perhaps the boot 
interrupt fires on an INTx line that is then routed to both 8259 and 
IOAPIC0 -- so you get it on whichever happens to be enabled, and it 
ends up looking like an interrupt from whichever device is bound to 
that INTx line. Or perhaps the 8259 output is wired into IOAPIC0. I'm 
not sure.
 The workaround shouldn't hurt performance, assuming interrupts are 
usually delivered to the CPU on which they are serviced. I'm also 
confident of its correctness, assuming driver domains service their 
interrupts in a reasonably timely fashion (a shame to have to make that 
assumption, but once we have MSI support we can recommend people use 
that if they want better driver-domain isolation).
 -- Keir
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |   
 
 | 
    | 
  
  
    |   | 
    |