ANDROID: virt: gunyah: add addrspace_modify_pages hypercall

The addrspace_modify_pages hypercall is used to unlock stage-2 page
table entries, which allows the host/owner to unmap and reclaim those
pages from guest.

Bug: 395833312
Change-Id: I4168235333294a2647543eeda8beeaa40b0f7726
Signed-off-by: Elliot Berman <elliot.berman@oss.qualcomm.com>
This commit is contained in:
Elliot Berman
2025-01-24 14:39:58 -08:00
committed by Todd Kjos
parent b78d94afb6
commit 8e6a22ec5d
2 changed files with 18 additions and 0 deletions
+13
View File
@@ -45,6 +45,7 @@ EXPORT_SYMBOL_GPL(arch_is_gunyah_guest);
#define GUNYAH_HYPERCALL_ADDRSPACE_UNMAP GUNYAH_HYPERCALL(0x802C)
#define GUNYAH_HYPERCALL_MEMEXTENT_DONATE GUNYAH_HYPERCALL(0x8061)
#define GUNYAH_HYPERCALL_VCPU_RUN GUNYAH_HYPERCALL(0x8065)
#define GUNYAH_HYPERCALL_ADDRSPC_MODIFY_PAGES GUNYAH_HYPERCALL(0x8069)
#define GUNYAH_HYPERCALL_ADDRSPACE_FIND_INFO_AREA GUNYAH_HYPERCALL(0x806a)
/* clang-format on */
@@ -67,6 +68,18 @@ void gunyah_hypercall_hyp_identify(
}
EXPORT_SYMBOL_GPL(gunyah_hypercall_hyp_identify);
enum gunyah_error gunyah_hypercall_addrspc_modify_pages(u64 capid, u64 addr,
u64 size, u64 flags)
{
struct arm_smccc_res res;
arm_smccc_1_1_hvc(GUNYAH_HYPERCALL_ADDRSPC_MODIFY_PAGES, capid,
addr, size, flags, &res);
return res.a0;
}
EXPORT_SYMBOL_GPL(gunyah_hypercall_addrspc_modify_pages);
/**
* gunyah_hypercall_bell_send() - Assert a gunyah doorbell
* @capid: capability ID of the doorbell
+5
View File
@@ -492,6 +492,11 @@ enum gunyah_error
gunyah_hypercall_vcpu_run(u64 capid, unsigned long *resume_data,
struct gunyah_hypercall_vcpu_run_resp *resp);
#define GUNYAH_ADDRSPC_MODIFY_FLAG_UNLOCK_BIT 0
#define GUNYAH_ADDRSPC_MODIFY_FLAG_SANITIZE_BIT 1
enum gunyah_error
gunyah_hypercall_addrspc_modify_pages(u64 capid, u64 addr, u64 size, u64 flags);
enum gunyah_error
gunyah_hypercall_addrspace_find_info_area(unsigned long *ipa, unsigned long *size);