From 74424351709ecedc057583588fc4a64688e63376 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 21 Nov 2011 09:29:31 +0100 Subject: [PATCH] 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 --- xen/arch/x86/hvm/vioapic.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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] ) { -- 2.30.2