opnsense-src/sys/dev/hyperv/vmbus
Wei Hu 17050a2b5b Hyper-V: vmbus: Prevent load/store reordering when access ring buffer index
When running VM on ARM64 Hyper-V, we have seen netvsc/hn driver hit
assert on reading duplicated network completion packets over vmbus
channel or one of the tx channels stalls completely. This seems to
caused by processor reordering the instructions when vmbus driver
reading or updating its channel ring buffer indexes.

Fix this by using load acquire and store release instructions to
enforce the order of these memory accesses.

PR:		271764
Reported by:	Souradeep Chakrabarti <schakrabarti@microsoft.com>
Reviewed by:	Souradeep Chakrabarti <schakrabarti@microsoft.com>
Tested by:	whu
Sponsored by:	Microsoft
2023-06-21 10:10:49 +00:00
..
aarch64 spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
amd64 Switch to contigmalloc in the Hyper-V code 2023-06-06 10:50:59 +01:00
i386 arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final) 2022-10-27 13:53:22 +00:00
x86 spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
hyperv.c arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final) 2022-10-27 13:53:22 +00:00
hyperv_busdma.c Switch to contigmalloc in the Hyper-V code 2023-06-06 10:50:59 +01:00
hyperv_common_reg.h Switch to contigmalloc in the Hyper-V code 2023-06-06 10:50:59 +01:00
hyperv_var.h arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final) 2022-10-27 13:53:22 +00:00
vmbus.c arm64 Hyper-V: enable Hyper-V SMP for ARM64 2023-06-07 08:24:13 +00:00
vmbus_br.c Hyper-V: vmbus: Prevent load/store reordering when access ring buffer index 2023-06-21 10:10:49 +00:00
vmbus_brvar.h Hyper-V: vmbus: Prevent load/store reordering when access ring buffer index 2023-06-21 10:10:49 +00:00
vmbus_chan.c Switch to contigmalloc in the Hyper-V code 2023-06-06 10:50:59 +01:00
vmbus_chanvar.h Switch to contigmalloc in the Hyper-V code 2023-06-06 10:50:59 +01:00
vmbus_et.c arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final) 2022-10-27 13:53:22 +00:00
vmbus_if.m
vmbus_reg.h arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final) 2022-10-27 13:53:22 +00:00
vmbus_res.c hyperv: Remove unused devclass arguments to DRIVER_MODULE. 2022-05-06 15:46:58 -07:00
vmbus_var.h Switch to contigmalloc in the Hyper-V code 2023-06-06 10:50:59 +01:00
vmbus_xact.c Switch to contigmalloc in the Hyper-V code 2023-06-06 10:50:59 +01:00