From: Jan Beulich Date: Mon, 21 Nov 2011 08:29:31 +0000 (+0100) Subject: x86/vioapic: clear remote IRR when switching RTE to edge triggered mode X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=74424351709ecedc057583588fc4a64688e63376;p=xen.git x86/vioapic: clear remote IRR when switching RTE to edge triggered mode Xen itself (as much as Linux) relies on this behavior, so it should also emulate it properly. Not doing so reportedly gets in the way of kexec inside a HVM guest. Signed-off-by: Jan Beulich Tested-by: Olaf Hering --- diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index 1d5cbc8514..403224f828 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -154,8 +154,9 @@ static void vioapic_write_redirent( { vlapic_adjust_i8259_target(d); } - else if ( (ent.fields.trig_mode == VIOAPIC_LEVEL_TRIG) && - !ent.fields.mask && + else if ( ent.fields.trig_mode == VIOAPIC_EDGE_TRIG ) + pent->fields.remote_irr = 0; + else if ( !ent.fields.mask && !ent.fields.remote_irr && hvm_irq->gsi_assert_count[idx] ) {