From: Kameron Carr <[email protected]> Realms (CoCo VMs on ARM) require host calls to be routed through the RMM (Realm Management Monitor) via the RSI (Realm Service Interface). This series implements most of the necessary changes to support Realms on Hyper-V.
One required change is not included in this series. The two buffers allocated via vzalloc() in netvsc_init_buf() cannot be decrypted in vmbus_establish_gpadl(). Currently only linearly mapped memory can be decrypted. See my RFC patch [1]. I will implement the accompanying netvsc changes based on the feedback I receive on that patch. This patch series was tested by booting a Realm on Cobalt 200 running Windows. I decreased the buffer size and used kzalloc() in netvsc_init_buf() in my testing as a workaround for the issue mentioned above. [1] https://lore.kernel.org/all/[email protected]/ Kameron Carr (6): arm64: rsi: Add RSI host call structure and helper function firmware: smccc: Detect hypervisor via RSI host call in CCA Realms arm64: hyperv: Add per-CPU RSI host call infrastructure for CCA Realms Drivers: hv: Mark shared memory as decrypted for CCA Realms arm64: hyperv: Route hypercalls through RSI host call in CCA Realms arm64: hyperv: Implement hv_is_isolation_supported() for CCA Realms arch/arm64/hyperv/hv_core.c | 175 ++++++++++++++++++++++++------ arch/arm64/hyperv/mshyperv.c | 88 ++++++++++++++- arch/arm64/include/asm/mshyperv.h | 3 + arch/arm64/include/asm/rsi_cmds.h | 9 ++ arch/arm64/include/asm/rsi_smc.h | 6 + drivers/firmware/smccc/smccc.c | 41 ++++++- drivers/hv/hv_common.c | 9 +- include/asm-generic/mshyperv.h | 1 + 8 files changed, 294 insertions(+), 38 deletions(-) base-commit: 7a035678fc2bdee81881170764ef08a91a076147 -- 2.45.4

