Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/vmm/io/vioapic.c
Show First 20 Lines • Show All 347 Lines • ▼ Show 20 Lines | if (regnum >= IOAPIC_REDTBL && | ||||
* to update their vlapic trigger-mode registers. | * to update their vlapic trigger-mode registers. | ||||
*/ | */ | ||||
changed = last ^ vioapic->rtbl[pin].reg; | changed = last ^ vioapic->rtbl[pin].reg; | ||||
if (changed & ~(IOART_INTMASK | IOART_INTPOL)) { | if (changed & ~(IOART_INTMASK | IOART_INTPOL)) { | ||||
VIOAPIC_CTR1(vioapic, "ioapic pin%d: recalculate " | VIOAPIC_CTR1(vioapic, "ioapic pin%d: recalculate " | ||||
"vlapic trigger-mode register", pin); | "vlapic trigger-mode register", pin); | ||||
VIOAPIC_UNLOCK(vioapic); | VIOAPIC_UNLOCK(vioapic); | ||||
allvcpus = vm_active_cpus(vioapic->vm); | allvcpus = vm_active_cpus(vioapic->vm); | ||||
vm_smp_rendezvous(vioapic->vm, vcpuid, allvcpus, | (void)vm_smp_rendezvous(vioapic->vm, vcpuid, allvcpus, | ||||
vioapic_update_tmr, NULL); | vioapic_update_tmr, NULL); | ||||
VIOAPIC_LOCK(vioapic); | VIOAPIC_LOCK(vioapic); | ||||
} | } | ||||
/* | /* | ||||
* Generate an interrupt if the following conditions are met: | * Generate an interrupt if the following conditions are met: | ||||
* - pin is not masked | * - pin is not masked | ||||
* - previous interrupt has been EOIed | * - previous interrupt has been EOIed | ||||
▲ Show 20 Lines • Show All 137 Lines • Show Last 20 Lines |