References: bnc#694863 # HG changeset patch # User Jan Beulich # Date 1321864171 -3600 # Node ID 9c350ab8d3ea64866421de756ab2bf3daaf63187 # Parent 335e8273a3f34a5e2972643a028f83684609f1c1 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 --- 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] ) {