mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
Revert "ANDROID: arm64: Enroll into KVM's MMIO guard if required"
This reverts commit de5c2716e3.
Bug: 233587962
Signed-off-by: Will Deacon <willdeacon@google.com>
Change-Id: I808f1e99876cb1945ffb47ee040b71912cf08468
This commit is contained in:
@@ -2098,9 +2098,6 @@
|
||||
1 - Bypass the IOMMU for DMA.
|
||||
unset - Use value of CONFIG_IOMMU_DEFAULT_PASSTHROUGH.
|
||||
|
||||
ioremap_guard [ARM64] enable the KVM MMIO guard functionality
|
||||
if available.
|
||||
|
||||
io7= [HW] IO7 for Marvel-based Alpha systems
|
||||
See comment before marvel_specify_io7 in
|
||||
arch/alpha/kernel/core_marvel.c.
|
||||
|
||||
@@ -25,7 +25,6 @@ config ARM64
|
||||
select ARCH_HAS_FORTIFY_SOURCE
|
||||
select ARCH_HAS_GCOV_PROFILE_ALL
|
||||
select ARCH_HAS_GIGANTIC_PAGE
|
||||
select ARCH_HAS_IOREMAP_PHYS_HOOKS
|
||||
select ARCH_HAS_KCOV
|
||||
select ARCH_HAS_KEEPINITRD
|
||||
select ARCH_HAS_MEMBARRIER_SYNC_CORE
|
||||
|
||||
@@ -8,6 +8,5 @@ void kvm_init_hyp_services(void);
|
||||
bool kvm_arm_hyp_service_available(u32 func_id);
|
||||
void kvm_arm_init_hyp_services(void);
|
||||
void kvm_init_memshare_services(void);
|
||||
void kvm_init_ioremap_services(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/efi.h>
|
||||
#include <asm/hypervisor.h>
|
||||
#include <asm/xen/hypervisor.h>
|
||||
#include <asm/mmu_context.h>
|
||||
|
||||
@@ -450,6 +449,5 @@ device_initcall(register_arm64_panic_block);
|
||||
|
||||
void kvm_arm_init_hyp_services(void)
|
||||
{
|
||||
kvm_init_ioremap_services();
|
||||
kvm_init_memshare_services();
|
||||
}
|
||||
|
||||
@@ -30,44 +30,6 @@ static DEFINE_STATIC_KEY_FALSE(ioremap_guard_key);
|
||||
static DEFINE_XARRAY(ioremap_guard_array);
|
||||
static DEFINE_MUTEX(ioremap_guard_lock);
|
||||
|
||||
static bool ioremap_guard;
|
||||
static int __init ioremap_guard_setup(char *str)
|
||||
{
|
||||
ioremap_guard = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
early_param("ioremap_guard", ioremap_guard_setup);
|
||||
|
||||
void kvm_init_ioremap_services(void)
|
||||
{
|
||||
struct arm_smccc_res res;
|
||||
|
||||
if (!ioremap_guard)
|
||||
return;
|
||||
|
||||
/* We need all the functions to be implemented */
|
||||
if (!kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO) ||
|
||||
!kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL) ||
|
||||
!kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP) ||
|
||||
!kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP))
|
||||
return;
|
||||
|
||||
arm_smccc_1_1_invoke(ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_INFO_FUNC_ID,
|
||||
0, 0, 0, &res);
|
||||
if (res.a0 != PAGE_SIZE)
|
||||
return;
|
||||
|
||||
arm_smccc_1_1_invoke(ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_ENROLL_FUNC_ID,
|
||||
&res);
|
||||
if (res.a0 == SMCCC_RET_SUCCESS) {
|
||||
static_branch_enable(&ioremap_guard_key);
|
||||
pr_info("Using KVM MMIO guard for ioremap\n");
|
||||
} else {
|
||||
pr_warn("KVM MMIO guard registration failed (%ld)\n", res.a0);
|
||||
}
|
||||
}
|
||||
|
||||
void ioremap_phys_range_hook(phys_addr_t phys_addr, size_t size, pgprot_t prot)
|
||||
{
|
||||
if (!static_branch_unlikely(&ioremap_guard_key))
|
||||
|
||||
Reference in New Issue
Block a user