ia64/xen-unstable

changeset 15347:0f9d683a83ed

x86: ioapic_write() must check for weird redir entries with special
delivery mode yet apparently valid vectoring information.
Signed-off-by: Keir Fraser <keir@xensource.com>
author kfraser@localhost.localdomain
date Wed Jun 13 10:39:48 2007 +0100 (2007-06-13)
parents c56ebab69b84
children c484106e44bd
files xen/arch/x86/io_apic.c
line diff
     1.1 --- a/xen/arch/x86/io_apic.c	Tue Jun 12 14:06:37 2007 +0100
     1.2 +++ b/xen/arch/x86/io_apic.c	Wed Jun 13 10:39:48 2007 +0100
     1.3 @@ -2114,6 +2114,15 @@ int ioapic_guest_write(unsigned long phy
     1.4          return 0;
     1.5      }
     1.6  
     1.7 +    /* Special delivery modes (SMI,NMI,INIT,ExtInt) should have no vector.  */
     1.8 +    if ( (old_rte.delivery_mode > dest_LowestPrio) && (old_rte.vector != 0) )
     1.9 +    {
    1.10 +        WARN_BOGUS_WRITE("Special delivery mode %d with non-zero vector "
    1.11 +                         "%02x\n", old_rte.delivery_mode, old_rte.vector);
    1.12 +        /* Nobble the vector here as it does not relate to a valid irq. */
    1.13 +        old_rte.vector = 0;
    1.14 +    }
    1.15 +
    1.16      if ( old_rte.vector >= FIRST_DYNAMIC_VECTOR )
    1.17          old_irq = vector_irq[old_rte.vector];
    1.18      if ( new_rte.vector >= FIRST_DYNAMIC_VECTOR )