[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: ioapic_write() must check for weird redir entries with special
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Date 1181727588 -3600 # Node ID 0f9d683a83ed59785d79ce0f895acb2e3a2a82a0 # Parent c56ebab69b84f85626fb9945a43ff5ac1c778626 x86: ioapic_write() must check for weird redir entries with special delivery mode yet apparently valid vectoring information. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/arch/x86/io_apic.c | 9 +++++++++ 1 files changed, 9 insertions(+) diff -r c56ebab69b84 -r 0f9d683a83ed xen/arch/x86/io_apic.c --- a/xen/arch/x86/io_apic.c Tue Jun 12 14:06:37 2007 +0100 +++ b/xen/arch/x86/io_apic.c Wed Jun 13 10:39:48 2007 +0100 @@ -2114,6 +2114,15 @@ int ioapic_guest_write(unsigned long phy return 0; } + /* Special delivery modes (SMI,NMI,INIT,ExtInt) should have no vector. */ + if ( (old_rte.delivery_mode > dest_LowestPrio) && (old_rte.vector != 0) ) + { + WARN_BOGUS_WRITE("Special delivery mode %d with non-zero vector " + "%02x\n", old_rte.delivery_mode, old_rte.vector); + /* Nobble the vector here as it does not relate to a valid irq. */ + old_rte.vector = 0; + } + if ( old_rte.vector >= FIRST_DYNAMIC_VECTOR ) old_irq = vector_irq[old_rte.vector]; if ( new_rte.vector >= FIRST_DYNAMIC_VECTOR ) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |