ANDROID: KVM: arm64: Remove unused IOMMU hooks, kvm_iommu_ops

With new generic IOMMU code in place, and with all S2MPU code
having been migrated to the new pkvm_iommu_ops callbacks, remove
all the now unused code.

Bug: 190463801
Change-Id: I83a1ac7c2e30ee76712079727da4607bda5de68a
Signed-off-by: David Brazdil <dbrazdil@google.com>
(cherry picked from commit e900628cfc)
Signed-off-by: Mostafa Saleh <smostafa@google.com>
Signed-off-by: Quentin Perret <qperret@google.com>
This commit is contained in:
David Brazdil
2022-02-23 19:54:47 +00:00
committed by Quentin Perret
parent 9bbbef3cd5
commit 197b8ad41c
6 changed files with 6 additions and 61 deletions

View File

@@ -379,10 +379,6 @@ extern s64 kvm_nvhe_sym(hyp_physvirt_offset);
extern u64 kvm_nvhe_sym(hyp_cpu_logical_map)[NR_CPUS];
#define hyp_cpu_logical_map CHOOSE_NVHE_SYM(hyp_cpu_logical_map)
enum kvm_iommu_driver {
KVM_IOMMU_DRIVER_NONE,
};
enum pkvm_iommu_driver_id {
PKVM_IOMMU_DRIVER_S2MPU,
PKVM_IOMMU_NR_DRIVERS,

View File

@@ -114,8 +114,7 @@ void __noreturn __hyp_do_panic(struct kvm_cpu_context *host_ctxt, u64 spsr,
void __pkvm_init_switch_pgd(phys_addr_t phys, unsigned long size,
phys_addr_t pgd, void *sp, void *cont_fn);
int __pkvm_init(phys_addr_t phys, unsigned long size, unsigned long nr_cpus,
unsigned long *per_cpu_base, u32 hyp_va_bits,
enum kvm_iommu_driver iommu_driver);
unsigned long *per_cpu_base, u32 hyp_va_bits);
void __noreturn __host_enter(struct kvm_cpu_context *host_ctxt);
#endif

View File

@@ -1919,11 +1919,6 @@ static bool init_psci_relay(void)
return true;
}
static int init_stage2_iommu(void)
{
return KVM_IOMMU_DRIVER_NONE;
}
static int init_subsystems(void)
{
int err = 0;
@@ -1982,7 +1977,7 @@ static void teardown_hyp_mode(void)
}
}
static int do_pkvm_init(u32 hyp_va_bits, enum kvm_iommu_driver iommu_driver)
static int do_pkvm_init(u32 hyp_va_bits)
{
void *per_cpu_base = kvm_ksym_ref(kvm_nvhe_sym(kvm_arm_hyp_percpu_base));
int ret;
@@ -1991,7 +1986,7 @@ static int do_pkvm_init(u32 hyp_va_bits, enum kvm_iommu_driver iommu_driver)
cpu_hyp_init_context();
ret = kvm_call_hyp_nvhe(__pkvm_init, hyp_mem_base, hyp_mem_size,
num_possible_cpus(), kern_hyp_va(per_cpu_base),
hyp_va_bits, iommu_driver);
hyp_va_bits);
cpu_hyp_init_features();
/*
@@ -2028,11 +2023,7 @@ static int kvm_hyp_init_protection(u32 hyp_va_bits)
if (ret)
return ret;
ret = init_stage2_iommu();
if (ret < 0)
return ret;
ret = do_pkvm_init(hyp_va_bits, (enum kvm_iommu_driver)ret);
ret = do_pkvm_init(hyp_va_bits);
if (ret)
return ret;

View File

@@ -82,19 +82,4 @@ void pkvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
extern const struct pkvm_iommu_ops pkvm_s2mpu_ops;
struct kvm_iommu_ops {
int (*init)(void);
bool (*host_smc_handler)(struct kvm_cpu_context *host_ctxt);
bool (*host_mmio_dabt_handler)(struct kvm_cpu_context *host_ctxt,
phys_addr_t fault_pa, unsigned int len,
bool is_write, int rd);
void (*host_stage2_set_owner)(phys_addr_t addr, size_t size,
enum pkvm_component_id owner_id);
int (*host_stage2_adjust_mmio_range)(phys_addr_t addr, phys_addr_t *start,
phys_addr_t *end);
};
extern struct kvm_iommu_ops kvm_iommu_ops;
extern const struct kvm_iommu_ops kvm_s2mpu_ops;
#endif /* __ARM64_KVM_NVHE_IOMMU_H__ */

View File

@@ -37,8 +37,6 @@ static DEFINE_PER_CPU(struct user_fpsimd_state, loaded_host_fpsimd_state);
DEFINE_PER_CPU(struct kvm_nvhe_init_params, kvm_init_params);
struct kvm_iommu_ops kvm_iommu_ops;
void __kvm_hyp_host_forward_smc(struct kvm_cpu_context *host_ctxt);
static int pkvm_refill_memcache(struct pkvm_hyp_vcpu *hyp_vcpu)
@@ -1016,7 +1014,6 @@ static void handle___pkvm_init(struct kvm_cpu_context *host_ctxt)
DECLARE_REG(unsigned long, nr_cpus, host_ctxt, 3);
DECLARE_REG(unsigned long *, per_cpu_base, host_ctxt, 4);
DECLARE_REG(u32, hyp_va_bits, host_ctxt, 5);
DECLARE_REG(enum kvm_iommu_driver, iommu_driver, host_ctxt, 6);
/*
* __pkvm_init() will return only if an error occurred, otherwise it
@@ -1024,7 +1021,7 @@ static void handle___pkvm_init(struct kvm_cpu_context *host_ctxt)
* with the host context directly.
*/
cpu_reg(host_ctxt, 1) = __pkvm_init(phys, size, nr_cpus, per_cpu_base,
hyp_va_bits, iommu_driver);
hyp_va_bits);
}
static void handle___pkvm_cpu_set_vector(struct kvm_cpu_context *host_ctxt)
@@ -1228,8 +1225,6 @@ static void handle_host_smc(struct kvm_cpu_context *host_ctxt)
bool handled;
handled = kvm_host_psci_handler(host_ctxt);
if (!handled && kvm_iommu_ops.host_smc_handler)
handled = kvm_iommu_ops.host_smc_handler(host_ctxt);
if (!handled)
handled = kvm_host_ffa_handler(host_ctxt);
if (!handled)

View File

@@ -302,16 +302,6 @@ static int fix_hyp_pgtable_refcnt(void)
&walker);
}
static int select_iommu_ops(enum kvm_iommu_driver driver)
{
switch (driver) {
case KVM_IOMMU_DRIVER_NONE:
return 0;
}
return -EINVAL;
}
void __noreturn __pkvm_init_finalise(void)
{
struct kvm_host_data *host_data = this_cpu_ptr(&kvm_host_data);
@@ -341,12 +331,6 @@ void __noreturn __pkvm_init_finalise(void)
};
pkvm_pgtable.mm_ops = &pkvm_pgtable_mm_ops;
if (kvm_iommu_ops.init) {
ret = kvm_iommu_ops.init();
if (ret)
goto out;
}
ret = fix_host_ownership();
if (ret)
goto out;
@@ -375,8 +359,7 @@ out:
}
int __pkvm_init(phys_addr_t phys, unsigned long size, unsigned long nr_cpus,
unsigned long *per_cpu_base, u32 hyp_va_bits,
enum kvm_iommu_driver iommu_driver)
unsigned long *per_cpu_base, u32 hyp_va_bits)
{
struct kvm_nvhe_init_params *params;
void *virt = hyp_phys_to_virt(phys);
@@ -399,10 +382,6 @@ int __pkvm_init(phys_addr_t phys, unsigned long size, unsigned long nr_cpus,
if (ret)
return ret;
ret = select_iommu_ops(iommu_driver);
if (ret)
return ret;
update_nvhe_init_params();
/* Jump in the idmap page to switch to the new page-tables */