From 81ccfbbc2e968afaabfa7a0de25d7d4972e0e1f8 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 16 May 2016 08:50:32 +0000 Subject: [PATCH] hyperv/vmbus: Use atomic_testandclear Prepare to use unsigned long for event channel bit array. Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D6382 --- sys/dev/hyperv/vmbus/hv_connection.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_connection.c b/sys/dev/hyperv/vmbus/hv_connection.c index e598ed17c447..321e6ab3b846 100644 --- a/sys/dev/hyperv/vmbus/hv_connection.c +++ b/sys/dev/hyperv/vmbus/hv_connection.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -313,7 +314,7 @@ hv_vmbus_on_events(int cpu) /* * receive size is 1/2 page and divide that by 4 bytes */ - if (synch_test_and_clear_bit(0, &event->flags32[0])) { + if (atomic_testandclear_int(&event->flags32[0], 0)) { recv_interrupt_page = hv_vmbus_g_connection.recv_interrupt_page; } else { @@ -337,8 +338,8 @@ hv_vmbus_on_events(int cpu) continue; for (bit = 0; bit < HV_CHANNEL_DWORD_LEN; bit++) { - if (synch_test_and_clear_bit(bit, - (uint32_t *)&recv_interrupt_page[dword])) { + if (atomic_testandclear_int( + &recv_interrupt_page[dword], bit)) { struct hv_vmbus_channel *channel; rel_id = (dword << 5) + bit;