Revert "ANDROID: KVM: arm64: iommu: Host stage-2 idmap callbacks"

This reverts commit 5a174cc840.

Bug: 233587962
Signed-off-by: Will Deacon <willdeacon@google.com>
Change-Id: I77c0a06fcf299e3fd7698f802140d64dd0507548
This commit is contained in:
Will Deacon
2022-07-07 15:49:04 +01:00
parent 5804d44621
commit 3280765899
3 changed files with 7 additions and 60 deletions

View File

@@ -25,20 +25,6 @@ struct pkvm_iommu_ops {
*/
int (*validate)(phys_addr_t base, size_t size);
/*
* Callback to apply a host stage-2 mapping change at driver level.
* Called before 'host_stage2_idmap_apply' with host lock held.
*/
void (*host_stage2_idmap_prepare)(phys_addr_t start, phys_addr_t end,
enum kvm_pgtable_prot prot);
/*
* Callback to apply a host stage-2 mapping change at device level.
* Called after 'host_stage2_idmap_prepare' with host lock held.
*/
void (*host_stage2_idmap_apply)(struct pkvm_iommu *dev,
phys_addr_t start, phys_addr_t end);
/* Power management callbacks. Called with host lock held. */
int (*suspend)(struct pkvm_iommu *dev);
int (*resume)(struct pkvm_iommu *dev);
@@ -77,8 +63,6 @@ int pkvm_iommu_host_stage2_adjust_range(phys_addr_t addr, phys_addr_t *start,
phys_addr_t *end);
bool pkvm_iommu_host_dabt_handler(struct kvm_cpu_context *host_ctxt, u32 esr,
phys_addr_t fault_pa);
void pkvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
enum kvm_pgtable_prot prot);
struct kvm_iommu_ops {
int (*init)(void);

View File

@@ -380,24 +380,3 @@ bool pkvm_iommu_host_dabt_handler(struct kvm_cpu_context *host_ctxt, u32 esr,
}
return false;
}
void pkvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
enum kvm_pgtable_prot prot)
{
struct pkvm_iommu_driver *drv;
struct pkvm_iommu *dev;
size_t i;
assert_host_component_locked();
for (i = 0; i < ARRAY_SIZE(iommu_drivers); i++) {
drv = get_driver(i);
if (drv && is_driver_ready(drv) && drv->ops->host_stage2_idmap_prepare)
drv->ops->host_stage2_idmap_prepare(start, end, prot);
}
list_for_each_entry(dev, &iommu_list, list) {
if (dev->powered && dev->ops->host_stage2_idmap_apply)
dev->ops->host_stage2_idmap_apply(dev, start, end);
}
}

View File

@@ -368,16 +368,9 @@ int __pkvm_prot_finalize(void)
int host_stage2_unmap_dev_locked(phys_addr_t start, u64 size)
{
int ret;
hyp_assert_lock_held(&host_kvm.lock);
ret = kvm_pgtable_stage2_unmap(&host_kvm.pgt, start, size);
if (ret)
return ret;
pkvm_iommu_host_stage2_idmap(start, start + size, 0);
return 0;
return kvm_pgtable_stage2_unmap(&host_kvm.pgt, start, size);
}
static int host_stage2_unmap_dev_all(void)
@@ -467,15 +460,8 @@ static bool range_is_memory(u64 start, u64 end)
static inline int __host_stage2_idmap(u64 start, u64 end,
enum kvm_pgtable_prot prot)
{
int ret;
ret = kvm_pgtable_stage2_map(&host_kvm.pgt, start, end - start, start,
prot, &host_s2_pool);
if (ret)
return ret;
pkvm_iommu_host_stage2_idmap(start, end, prot);
return 0;
return kvm_pgtable_stage2_map(&host_kvm.pgt, start, end - start, start,
prot, &host_s2_pool);
}
/*
@@ -551,17 +537,15 @@ int host_stage2_set_owner_locked(phys_addr_t addr, u64 size,
pkvm_id owner_id)
{
kvm_pte_t annotation = kvm_init_invalid_leaf_owner(owner_id);
enum kvm_pgtable_prot prot;
int ret;
ret = host_stage2_try(kvm_pgtable_stage2_annotate, &host_kvm.pgt,
addr, size, &host_s2_pool, annotation);
if (ret)
return ret;
prot = owner_id == pkvm_host_id ? PKVM_HOST_MEM_PROT : 0;
pkvm_iommu_host_stage2_idmap(addr, addr + size, prot);
return 0;
if (!ret && kvm_iommu_ops.host_stage2_set_owner)
kvm_iommu_ops.host_stage2_set_owner(addr, size, owner_id);
return ret;
}
static bool host_stage2_force_pte_cb(u64 addr, u64 end, enum kvm_pgtable_prot prot)