diff options
author | Jan Beulich <jbeulich@suse.com> | 2012-03-07 08:50:55 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2012-03-07 08:50:55 +0000 |
commit | 36b9ba8ed050cfb64fa1a7c3bc3d003b86c5b13f (patch) | |
tree | af5cc4698cad44eb1fe66c7aad4bee46cb1f634b | |
parent | 5dd9fdd20c123f3d20f0942d505e6c1072241006 (diff) | |
download | xen-36b9ba8ed050cfb64fa1a7c3bc3d003b86c5b13f.tar.gz xen-36b9ba8ed050cfb64fa1a7c3bc3d003b86c5b13f.tar.bz2 xen-36b9ba8ed050cfb64fa1a7c3bc3d003b86c5b13f.zip |
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 <jbeulich@suse.com>
Tested-by: Olaf Hering <olaf@aepfle.de>
xen-unstable changeset: 24168:9c350ab8d3ea
xen-unstable date: Mon Nov 21 09:29:31 2011 +0100
Committed-by: Keir Fraser <keir@xen.org>
-rw-r--r-- | xen/arch/x86/hvm/vioapic.c | 5 |
1 files 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] ) { |