From 36b9ba8ed050cfb64fa1a7c3bc3d003b86c5b13f Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 7 Mar 2012 08:50:55 +0000 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-unstable changeset: 24168:9c350ab8d3ea xen-unstable date: Mon Nov 21 09:29:31 2011 +0100 Committed-by: Keir Fraser --- 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 9c0033a23e..1d6c3dffc6 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -153,8 +153,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.39.5