mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-08-10 04:28:31 +00:00
hv: add ioapic reset function
ioapic reset function will be called when doing guest reset. Signed-off-by: Yin Fengwei <fengwei.yin@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
8b9fb3780a
commit
2a819366ae
@ -523,6 +523,16 @@ vioapic_process_eoi(struct vm *vm, uint32_t vector)
|
|||||||
VIOAPIC_UNLOCK(vioapic);
|
VIOAPIC_UNLOCK(vioapic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
vioapic_reset(struct vioapic *vioapic)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Initialize all redirection entries to mask all interrupts */
|
||||||
|
for (i = 0; i < vioapic_pincount(vioapic->vm); i++)
|
||||||
|
vioapic->rtbl[i].reg = 0x0001000000010000UL;
|
||||||
|
}
|
||||||
|
|
||||||
struct vioapic *
|
struct vioapic *
|
||||||
vioapic_init(struct vm *vm)
|
vioapic_init(struct vm *vm)
|
||||||
{
|
{
|
||||||
@ -535,9 +545,7 @@ vioapic_init(struct vm *vm)
|
|||||||
vioapic->vm = vm;
|
vioapic->vm = vm;
|
||||||
spinlock_init(&vioapic->mtx);
|
spinlock_init(&vioapic->mtx);
|
||||||
|
|
||||||
/* Initialize all redirection entries to mask all interrupts */
|
vioapic_reset(vioapic);
|
||||||
for (i = 0; i < vioapic_pincount(vioapic->vm); i++)
|
|
||||||
vioapic->rtbl[i].reg = 0x0001000000010000UL;
|
|
||||||
|
|
||||||
register_mmio_emulation_handler(vm,
|
register_mmio_emulation_handler(vm,
|
||||||
vioapic_mmio_access_handler,
|
vioapic_mmio_access_handler,
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
struct vioapic *vioapic_init(struct vm *vm);
|
struct vioapic *vioapic_init(struct vm *vm);
|
||||||
void vioapic_cleanup(struct vioapic *vioapic);
|
void vioapic_cleanup(struct vioapic *vioapic);
|
||||||
|
void vioapic_reset(struct vioapic *vioapic);
|
||||||
|
|
||||||
int vioapic_assert_irq(struct vm *vm, uint32_t irq);
|
int vioapic_assert_irq(struct vm *vm, uint32_t irq);
|
||||||
int vioapic_deassert_irq(struct vm *vm, uint32_t irq);
|
int vioapic_deassert_irq(struct vm *vm, uint32_t irq);
|
||||||
|
Loading…
Reference in New Issue
Block a user