Message ID | 20211208152300.2478542-6-qperret@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: arm64: Miscellaneous pkvm fixes | expand |
On Wed, Dec 08, 2021 at 03:22:58PM +0000, Quentin Perret wrote: > Now that GICv2 is disabled in nVHE protected mode there should be no > other reason for the host to use create_hyp_io_mappings() or > kvm_phys_addr_ioremap(). Add sanity checks to make sure that assumption > remains true looking forward. > > Signed-off-by: Quentin Perret <qperret@google.com> > --- > arch/arm64/kvm/mmu.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c > index 326cdfec74a1..605c104eb030 100644 > --- a/arch/arm64/kvm/mmu.c > +++ b/arch/arm64/kvm/mmu.c > @@ -407,6 +407,9 @@ int create_hyp_io_mappings(phys_addr_t phys_addr, size_t size, > unsigned long addr; > int ret; > > + if (is_protected_kvm_enabled()) > + return -EPERM; Looks like the vGIC is the only caller, so no need to worry about anybody relying on *kaddr being zeroed on failure. Acked-by: Will Deacon <will@kernel.org> Will
diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 326cdfec74a1..605c104eb030 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -407,6 +407,9 @@ int create_hyp_io_mappings(phys_addr_t phys_addr, size_t size, unsigned long addr; int ret; + if (is_protected_kvm_enabled()) + return -EPERM; + *kaddr = ioremap(phys_addr, size); if (!*kaddr) return -ENOMEM; @@ -650,6 +653,9 @@ int kvm_phys_addr_ioremap(struct kvm *kvm, phys_addr_t guest_ipa, KVM_PGTABLE_PROT_R | (writable ? KVM_PGTABLE_PROT_W : 0); + if (is_protected_kvm_enabled()) + return -EPERM; + size += offset_in_page(guest_ipa); guest_ipa &= PAGE_MASK;
Now that GICv2 is disabled in nVHE protected mode there should be no other reason for the host to use create_hyp_io_mappings() or kvm_phys_addr_ioremap(). Add sanity checks to make sure that assumption remains true looking forward. Signed-off-by: Quentin Perret <qperret@google.com> --- arch/arm64/kvm/mmu.c | 6 ++++++ 1 file changed, 6 insertions(+)