From 1ca901c527d21c083ceb706839db2cdac102926c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Tue, 20 Apr 2021 11:34:53 +0200 Subject: [PATCH] x86/vpic: force int output to low when in init mode MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When the PIC is on the init sequence prevent interrupt delivery. The state of the registers is in the process of being set during the init phase, so it makes sense to prevent any int line changes during that process. Suggested-by: Jan Beulich Signed-off-by: Roger Pau Monné Acked-by: Jan Beulich --- xen/arch/x86/hvm/vpic.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/hvm/vpic.c b/xen/arch/x86/hvm/vpic.c index c1c1de7fd0..9195155ff0 100644 --- a/xen/arch/x86/hvm/vpic.c +++ b/xen/arch/x86/hvm/vpic.c @@ -101,11 +101,14 @@ static void vpic_update_int_output(struct hvm_hw_vpic *vpic) irq = vpic_get_highest_priority_irq(vpic); TRACE_3D(TRC_HVM_EMUL_PIC_INT_OUTPUT, vpic->int_output, vpic->is_master, irq); - if ( vpic->int_output == (irq >= 0) ) + if ( vpic->int_output == (!vpic->init_state && irq >= 0) ) return; - /* INT line transition L->H or H->L. */ - vpic->int_output = !vpic->int_output; + /* + * INT line transition L->H or H->L. + * Force line status to L when in init mode. + */ + vpic->int_output = !vpic->init_state && !vpic->int_output; if ( vpic->int_output ) { -- 2.30.2