aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64/vmm
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2021-09-21 15:36:55 +0000
committerMark Johnston <markj@FreeBSD.org>2021-10-18 13:56:58 +0000
commitde8554295b47475e758a573ab7418265f21fee7e (patch)
treeeef60eaa7fdc2ad945c503b62d5c19baa2540dae /sys/amd64/vmm
parent51425cb2107c07ff379639edfbad65c77b55c3b8 (diff)
Diffstat (limited to 'sys/amd64/vmm')
-rw-r--r--sys/amd64/vmm/io/vlapic.c13
-rw-r--r--sys/amd64/vmm/vmm_lapic.c4
2 files changed, 4 insertions, 13 deletions
diff --git a/sys/amd64/vmm/io/vlapic.c b/sys/amd64/vmm/io/vlapic.c
index 06df1c1a87e5..4e7ddbafd447 100644
--- a/sys/amd64/vmm/io/vlapic.c
+++ b/sys/amd64/vmm/io/vlapic.c
@@ -860,10 +860,7 @@ vlapic_calcdest(struct vm *vm, cpuset_t *dmask, uint32_t dest, bool phys,
*/
CPU_ZERO(dmask);
amask = vm_active_cpus(vm);
- while ((vcpuid = CPU_FFS(&amask)) != 0) {
- vcpuid--;
- CPU_CLR(vcpuid, &amask);
-
+ CPU_FOREACH_ISSET(vcpuid, &amask) {
vlapic = vm_lapic(vm, vcpuid);
dfr = vlapic->apic_page->dfr;
ldr = vlapic->apic_page->ldr;
@@ -1003,9 +1000,7 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic, bool *retu)
break;
}
- while ((i = CPU_FFS(&dmask)) != 0) {
- i--;
- CPU_CLR(i, &dmask);
+ CPU_FOREACH_ISSET(i, &dmask) {
if (mode == APIC_DELMODE_FIXED) {
lapic_intr_edge(vlapic->vm, i, vec);
vmm_stat_array_incr(vlapic->vm, vlapic->vcpuid,
@@ -1554,9 +1549,7 @@ vlapic_deliver_intr(struct vm *vm, bool level, uint32_t dest, bool phys,
*/
vlapic_calcdest(vm, &dmask, dest, phys, lowprio, false);
- while ((vcpuid = CPU_FFS(&dmask)) != 0) {
- vcpuid--;
- CPU_CLR(vcpuid, &dmask);
+ CPU_FOREACH_ISSET(vcpuid, &dmask) {
if (delmode == IOART_DELEXINT) {
vm_inject_extint(vm, vcpuid);
} else {
diff --git a/sys/amd64/vmm/vmm_lapic.c b/sys/amd64/vmm/vmm_lapic.c
index 89a1ebc8eff9..8191da758100 100644
--- a/sys/amd64/vmm/vmm_lapic.c
+++ b/sys/amd64/vmm/vmm_lapic.c
@@ -87,9 +87,7 @@ lapic_set_local_intr(struct vm *vm, int cpu, int vector)
else
CPU_SETOF(cpu, &dmask);
error = 0;
- while ((cpu = CPU_FFS(&dmask)) != 0) {
- cpu--;
- CPU_CLR(cpu, &dmask);
+ CPU_FOREACH_ISSET(cpu, &dmask) {
vlapic = vm_lapic(vm, cpu);
error = vlapic_trigger_lvt(vlapic, vector);
if (error)