ia64/xen-unstable

changeset 14421:e1d626bde5db

[IA64] Fix isr setting vs viosapic interupt delivery

When the HVM guest is used with vcpu=5, the hypervisor may report:
"redir 10 not set for 180 EOI", and the HVM guest is Hung.

When the hypervisor with a vcpu context delivers to another vcpu,
EOI might be sent before ISR is set.

We should modify to call viosapic_delver() after ISR setting.

Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
Signed-off-by: Tomonari Horikoshi <t.horikoshi@jp.fujitsu.com>
author awilliam@xenbuild2.aw
date Tue Mar 20 09:21:47 2007 -0600 (2007-03-20)
parents e014b94333aa
children 2dbee4f1ee63
files xen/arch/ia64/vmx/viosapic.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/viosapic.c	Tue Mar 20 09:16:09 2007 -0600
     1.2 +++ b/xen/arch/ia64/vmx/viosapic.c	Tue Mar 20 09:21:47 2007 -0600
     1.3 @@ -104,11 +104,11 @@ static void service_iosapic(struct viosa
     1.4  
     1.5      while ( (irq = iosapic_get_highest_irq(viosapic)) != -1 )
     1.6      {
     1.7 -        viosapic_deliver(viosapic, irq);
     1.8 -
     1.9          if ( viosapic->redirtbl[irq].trig_mode == SAPIC_LEVEL )
    1.10              viosapic->isr |= (1UL << irq);
    1.11  
    1.12 +        viosapic_deliver(viosapic, irq);
    1.13 +
    1.14          viosapic->irr &= ~(1UL << irq);
    1.15      }
    1.16  }