diff --git a/hypervisor/arch/x86/guest/vioapic.c b/hypervisor/arch/x86/guest/vioapic.c index e5c6d7d90..736697f3c 100644 --- a/hypervisor/arch/x86/guest/vioapic.c +++ b/hypervisor/arch/x86/guest/vioapic.c @@ -331,13 +331,12 @@ vioapic_write(struct vioapic *vioapic, uint32_t addr, uint32_t data) /* mask -> umask */ if ((last & IOAPIC_RTE_INTMASK) && ((new & IOAPIC_RTE_INTMASK) == 0)) { - if ((vioapic->vm->vpic_wire_mode - == VPIC_WIRE_NULL) || - (vioapic->vm->vpic_wire_mode - == VPIC_WIRE_INTR)) { - atomic_set_int( - &vioapic->vm->vpic_wire_mode, - VPIC_WIRE_IOAPIC); + if ((vioapic->vm->vpic_wire_mode == + VPIC_WIRE_NULL) || + (vioapic->vm->vpic_wire_mode == + VPIC_WIRE_INTR)) { + vioapic->vm->vpic_wire_mode = + VPIC_WIRE_IOAPIC; dev_dbg(ACRN_DBG_IOAPIC, "vpic wire mode -> IOAPIC"); } else { @@ -347,11 +346,10 @@ vioapic_write(struct vioapic *vioapic, uint32_t addr, uint32_t data) /* unmask -> mask */ } else if (((last & IOAPIC_RTE_INTMASK) == 0) && (new & IOAPIC_RTE_INTMASK)) { - if (vioapic->vm->vpic_wire_mode - == VPIC_WIRE_IOAPIC) { - atomic_set_int( - &vioapic->vm->vpic_wire_mode, - VPIC_WIRE_INTR); + if (vioapic->vm->vpic_wire_mode == + VPIC_WIRE_IOAPIC) { + vioapic->vm->vpic_wire_mode = + VPIC_WIRE_INTR; dev_dbg(ACRN_DBG_IOAPIC, "vpic wire mode -> INTR"); } diff --git a/hypervisor/arch/x86/guest/vlapic.c b/hypervisor/arch/x86/guest/vlapic.c index 1637550ea..1b3d3a9e8 100644 --- a/hypervisor/arch/x86/guest/vlapic.c +++ b/hypervisor/arch/x86/guest/vlapic.c @@ -528,8 +528,7 @@ vlapic_lvt_write_handler(struct vlapic *vlapic, uint32_t offset) if ((last & APIC_LVT_M) && ((val & APIC_LVT_M) == 0)) { if (vlapic->vm->vpic_wire_mode == VPIC_WIRE_INTR || vlapic->vm->vpic_wire_mode == VPIC_WIRE_NULL) { - atomic_set_int(&vlapic->vm->vpic_wire_mode, - VPIC_WIRE_LAPIC); + vlapic->vm->vpic_wire_mode = VPIC_WIRE_LAPIC; dev_dbg(ACRN_DBG_LAPIC, "vpic wire mode -> LAPIC"); } else { @@ -539,8 +538,7 @@ vlapic_lvt_write_handler(struct vlapic *vlapic, uint32_t offset) /* unmask -> mask: only from the vlapic LINT0-ExtINT enabled */ } else if (((last & APIC_LVT_M) == 0) && (val & APIC_LVT_M)) { if (vlapic->vm->vpic_wire_mode == VPIC_WIRE_LAPIC) { - atomic_set_int(&vlapic->vm->vpic_wire_mode, - VPIC_WIRE_NULL); + vlapic->vm->vpic_wire_mode = VPIC_WIRE_NULL; dev_dbg(ACRN_DBG_LAPIC, "vpic wire mode -> NULL"); } @@ -1174,8 +1172,7 @@ vlapic_svr_write_handler(struct vlapic *vlapic) vlapic_mask_lvts(vlapic); /* the only one enabled LINT0-ExtINT vlapic disabled */ if (vlapic->vm->vpic_wire_mode == VPIC_WIRE_NULL) { - atomic_set_int(&vlapic->vm->vpic_wire_mode, - VPIC_WIRE_INTR); + vlapic->vm->vpic_wire_mode = VPIC_WIRE_INTR; dev_dbg(ACRN_DBG_LAPIC, "vpic wire mode -> INTR"); } diff --git a/hypervisor/debug/uart16550.c b/hypervisor/debug/uart16550.c index d238cda11..2409a19fb 100644 --- a/hypervisor/debug/uart16550.c +++ b/hypervisor/debug/uart16550.c @@ -161,10 +161,10 @@ static int uart16550_init(struct tgt_uart *tgt_uart) status = -ENODEV; } else { if (strcmp(tgt_uart->uart_id, "STDIO") == 0) { - atomic_set_int(&tgt_uart->open_count, 0); + atomic_store_rel_int(&tgt_uart->open_count, 0); } else { /* set open count to 1 to prevent open */ - atomic_set_int(&tgt_uart->open_count, 1); + atomic_store_rel_int(&tgt_uart->open_count, 1); status = -EINVAL; } }