]> xenbits.xensource.com Git - people/iwj/xen.git/commitdiff
x86/HVM: fix legacy PIC check in pt_update_irq()
authorJan Beulich <jbeulich@suse.com>
Thu, 2 May 2013 14:48:22 +0000 (16:48 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 2 May 2013 14:48:22 +0000 (16:48 +0200)
Depending on the IRQ we need to
- not look at the PIC at all is this is the LAPIC timer (in that case
  we're dealing with a vector number rather than an IRQ one),
- not look at the PIC for any non-legacy interrupt,
- look at the correct PIC for the IRQ (which will always be PIC 2 for
  the RTC, and possibly also for HPET).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Roger Pau Monné <roger.pau@citrix.com> (FreeBSD guest)
Reviewed-by: Tim Deegan <tim@xen.org>
xen/arch/x86/hvm/vpt.c

index 46d3ec6c97ec6002affb446e929c5761ee02f32b..3fb040654f569ca00e7e7a478bf43212255d2d98 100644 (file)
@@ -272,8 +272,9 @@ int pt_update_irq(struct vcpu *v)
      * IRR is returned and used to set eoi_exit_bitmap for virtual
      * interrupt delivery case. Otherwise return -1 to do nothing.  
      */ 
-    if ( vlapic_accept_pic_intr(v) &&
-         (&v->domain->arch.hvm_domain)->vpic[0].int_output )
+    if ( !is_lapic &&
+         platform_legacy_irq(irq) && vlapic_accept_pic_intr(v) &&
+         (&v->domain->arch.hvm_domain)->vpic[irq >> 3].int_output )
         return -1;
     else 
         return pt_irq_vector(earliest_pt, hvm_intsrc_lapic);