• Marc Zyngier's avatar
    Merge branch kvm-arm64/pkvm-hyp-sharing into kvmarm-master/next · 43d8ac22
    Marc Zyngier authored
    * kvm-arm64/pkvm-hyp-sharing:
      : .
      : Series from Quentin Perret, implementing HYP page share/unshare:
      :
      : This series implements an unshare hypercall at EL2 in nVHE
      : protected mode, and makes use of it to unmmap guest-specific
      : data-structures from EL2 stage-1 during guest tear-down.
      : Crucially, the implementation of the share and unshare
      : routines use page refcounts in the host kernel to avoid
      : accidentally unmapping data-structures that overlap a common
      : page.
      : [...]
      : .
      KVM: arm64: pkvm: Unshare guest structs during teardown
      KVM: arm64: Expose unshare hypercall to the host
      KVM: arm64: Implement do_unshare() helper for unsharing memory
      KVM: arm64: Implement __pkvm_host_share_hyp() using do_share()
      KVM: arm64: Implement do_share() helper for sharing memory
      KVM: arm64: Introduce wrappers for host and hyp spin lock accessors
      KVM: arm64: Extend pkvm_page_state enumeration to handle absent pages
      KVM: arm64: pkvm: Refcount the pages shared with EL2
      KVM: arm64: Introduce kvm_share_hyp()
      KVM: arm64: Implement kvm_pgtable_hyp_unmap() at EL2
      KVM: arm64: Hook up ->page_count() for hypervisor stage-1 page-table
      KVM: arm64: Fixup hyp stage-1 refcount
      KVM: arm64: Refcount hyp stage-1 pgtable pages
      KVM: arm64: Provide {get,put}_page() stubs for early hyp allocator
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    43d8ac22
mmu.c 46.9 KB