Subject: Re: ioapic: adaption required?
To: Manuel Bouyer <bouyer@antioche.eu.org>
From: Christoph Egger <Christoph_Egger@gmx.de>
List: port-xen
Date: 10/08/2007 13:22:32
On Monday 08 October 2007 12:12:19 Manuel Bouyer wrote:
> On Mon, Oct 08, 2007 at 11:45:42AM +0200, Christoph Egger wrote:
> > Hi!
> >
> > With the recent ioapic and acpi changes in -current, my dom0
> > boot output changed:
> >
> > ioapic0 at mainbus0 apid 2
> > ioapic0: pa 0xfec00000, virtual wire mode, version 3, 24 pins
> > (XEN) io_apic.c:2132:
> > (XEN) ioapic_guest_write: apic=0, pin=2, old_irq=0, new_irq=-1
> > (XEN) ioapic_guest_write: old_entry=000009f0, new_entry=00010900
> > (XEN) ioapic_guest_write: Attempt to remove IO-APIC pin of in-use IRQ!
> > (XEN) io_apic.c:2132:
> > (XEN) ioapic_guest_write: apic=0, pin=4, old_irq=4, new_irq=-1
> > (XEN) ioapic_guest_write: old_entry=000009f1, new_entry=00010900
> > (XEN) ioapic_guest_write: Attempt to remove IO-APIC pin of in-use IRQ!
> > (XEN) io_apic.c:2163:
> > (XEN) ioapic_guest_write: apic=0, pin=16, old_irq=-1, new_irq=-1
> > (XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
> > (XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
> > [...]
> > The lost interrupt problems are new.
> >
> > Looks like Dom0 needs to be changed to use the
> > PHYSDEVOP_apic_read, PHYSDEVOP_apic_write
> > hypercalls instead of the deprecated set of
> > PHYSDEVOP_IRQ_UNMASK_NOTIFY
> > and PHYSDEVOP_IRQ_STATUS_QUERY.
>
> AFAIK, PHYSDEVOP_apic_read/write are already used, see
> xen/include/i82093var.h Or maybe you mean to use APIC operations to
> query/ack the interrupts instead of these hypercalls ?

I'm talking about the hypercall used in pirq_establish() in xen/evtchn.c.

> Anyway, it looks like the new ACPI code makes changes to the configuration
> that Xen considers bogus or invalid; or maybe just changing routing for
> interrupts that already have an handler installed. I'm not sure getting rid
> of PHYSDEVOP_IRQ_* would fix it ...

oh, there is a difference:

The deprecated PHYSDEVOP_IRQ_* hypercalls only update the evtchn_*
members in the shared_info page.
With PHYSDEVOP_apic_read and PHYSDEVOP_apic_write, Xen truely
talks to the ioapic.


Christoph