[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/vpic: don't trigger unmask event until end of init
commit 192f7479f21ef63dad8d8acbbda93cce0971fe66 Author: Roger Pau Monné <roger.pau@xxxxxxxxxx> AuthorDate: Tue Apr 20 11:35:29 2021 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Apr 20 11:35:29 2021 +0200 x86/vpic: don't trigger unmask event until end of init Wait until the end of the init sequence to trigger the unmask event. Note that it will be unconditionally triggered, but that's harmless if not unmask actually happened. While there change the variable type to bool. Suggested-by: Jan Beulich <jbeulich@xxxxxxxx> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/hvm/vpic.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/vpic.c b/xen/arch/x86/hvm/vpic.c index 9195155ff0..795a76768d 100644 --- a/xen/arch/x86/hvm/vpic.c +++ b/xen/arch/x86/hvm/vpic.c @@ -188,7 +188,8 @@ static void vpic_ioport_write( struct hvm_hw_vpic *vpic, uint32_t addr, uint32_t val) { int priority, cmd; - uint8_t mask, unmasked = 0; + uint8_t mask; + bool unmasked = false; vpic_lock(vpic); @@ -200,7 +201,6 @@ static void vpic_ioport_write( /* Clear edge-sensing logic. */ vpic->irr &= vpic->elcr; - unmasked = vpic->imr; /* No interrupts masked or in service. */ vpic->imr = vpic->isr = 0; @@ -294,13 +294,17 @@ static void vpic_ioport_write( /* ICW3 */ vpic->init_state++; if ( !(vpic->init_state & 4) ) + { vpic->init_state = 0; /* No ICW4: init done */ + unmasked = true; + } break; case 3: /* ICW4 */ vpic->special_fully_nested_mode = (val >> 4) & 1; vpic->auto_eoi = (val >> 1) & 1; vpic->init_state = 0; + unmasked = true; break; } } -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |