RE: [PATCH v3 0/6] arm64: hyperv: Add Realm support for Hyper-V
From: Michael Kelley
Date: Thu Jul 23 2026 - 12:30:40 EST
From: Kameron Carr <kameroncarr@xxxxxxxxxxxxxxxxxxx> Sent: Tuesday, July 21, 2026 1:12 PM
>
> 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.
>
> This patch series was tested by booting a Realm on Cobalt 200 running
> Windows. I tested 4KB and 64KB page size. I replaced vzalloc() in
> netvsc_init_buf() with alloc_pages_node() -> set_memory_decrypted() ->
> vmap() in my testing as a workaround for the issue mentioned above [1].
>
> Changes since v1 [2]:
> Patch 1: Add explicit padding to the RSI host call structure
> Patch 3: Change from a per-cpu pointer lazily allocated to an array
> of host call structs indexed by cpu id
> Patch 4: Align input_page + output_page allocation to PAGE_SIZE since
> that is the smallest unit of memory that can be decrypted
> ~Remove KASAN tags before passing address to
> set_memory_decrypted() since __is_lm_address() does pointer
> arithmetic.~
> Patch 5: Add a helper function to reduce repetition
> Check for NULL before indexing into host call array
>
> Changes since v2 [3]:
> Patch 3: Remove hv_hostcall_free() and inline the logic for simplicity
> Reorder edits to keep #include line at the end of the file
> Patch 4: Remove kasan_reset_tag()
>
> [1] https://lore.kernel.org/all/20260721195633.1438361-1-kameroncarr@xxxxxxxxxxxxxxxxxxx/
> [2] https://lore.kernel.org/all/20260609181030.2378391-1-kameroncarr@xxxxxxxxxxxxxxxxxxx/
> [3] https://lore.kernel.org/all/20260625173500.1995481-1-kameroncarr@xxxxxxxxxxxxxxxxxxx/
>
> 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 | 155 +++++++++++++++++++++++-------
> arch/arm64/hyperv/mshyperv.c | 38 +++++++-
> arch/arm64/include/asm/mshyperv.h | 4 +
> arch/arm64/include/asm/rsi_cmds.h | 22 +++++
> arch/arm64/include/asm/rsi_smc.h | 7 ++
> drivers/firmware/smccc/smccc.c | 41 +++++++-
> drivers/hv/hv_common.c | 17 +++-
> include/asm-generic/mshyperv.h | 1 +
> 8 files changed, 244 insertions(+), 41 deletions(-)
>
>
> base-commit: a4ffc59238be84dd1c26bf1c001543e832674fc6
> --
> 2.45.4
>
For all patches in the series,
Reviewed-by: Michael Kelley <mhklinux@xxxxxxxxxxx>