[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] x86: clear_IO_APIC_pin() and SMI delivery mode



clear_IO_APIC_pin() ignores entries that are set to delivery mode SMI.
While this seems reasonable if the entry was unmasked, I consider it
dubious for masked entries.

In Linux, such behavior is benign since when the entry later is being
used for some normal interrupt, the old setting is simply overwritten.
In Xen, however, ioapic_guest_write() uses the vector field to
determine the previous associated IRQ and possibly call
remove_pin_at_irq() - this is where we got a report of a hypervisor
crash - the BUG() in the first loop of this function triggers.

Since I see two ways of fixing this (and perhaps there are more),
before creating a patch I'd like to understand which of the
approaches seems more reasonable (or whether both should be
combined):

a) Only ignore un-masked SMI delivery mode entries in
clear_IO_APIC_pin().

b) Ignore the vector information in ioapic_guest_write() for all
delivery modes (at least in old_rte, new_rte is currently not allowed
to have anything but fixed or lowest priority) that don't allow a
vector.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.