HomeFreeBSD

arm64 Hyper-V: enable Hyper-V SMP for ARM64

Description

arm64 Hyper-V: enable Hyper-V SMP for ARM64

Vmbus_synic_setup() is invoked via vmbus_intrhook -> vmbus_doattach
-> smp_rendezvous. On !EARLY_AP_STARTUP (e.g., aarch64), SMP isn't
functional in intrhooks and smp_rendezvous() will just call
vmbus_synic_setup() on the boot processor. There's nothing that will
initialize the pcpu data on every other AP.

To fix it we need to use SI_SUB_SMP for vmbus_doattach(). With this
patch the vmbus interrupt should work on all arm64 cpus on HyperV.

Reported by: kevans
Reviewed by: kevans, whu
Tested by: Souradeep Chakrabarti <schakrabarti@microsoft.com>
Obtained from: Souradeep Chakrabarti <schakrabarti@microsoft.com>
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D40279

Details

Provenance
whuAuthored on Jun 7 2023, 8:03 AM
Reviewer
kevans
Differential Revision
D40279: enabling Hyper-V SMP for ARM64
Parents
rG1177a6c8dcfd: gve: Unobfuscate code by using nitems directly for loop.
Branches
Unknown
Tags
Unknown