From: Kameron Carr <[email protected]> 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/[email protected]/
> [2] 
> https://lore.kernel.org/all/[email protected]/
> [3] 
> 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       | 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 <[email protected]>


Reply via email to