mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 10:01:43 +00:00
irqchip/gic-v3-its: Add a cache invalidation right after vPE unmapping
In order to be able to manipulate the VPT once a vPE has been unmapped, perform the required CMO to invalidate the CPU view of the VPT. Signed-off-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Shenming Lu <lushenming@huawei.com> Link: https://lore.kernel.org/r/20210322060158.1584-2-lushenming@huawei.com
This commit is contained in:
parent
1e28eed176
commit
301beaf197
@ -4554,6 +4554,15 @@ static void its_vpe_irq_domain_deactivate(struct irq_domain *domain,
|
|||||||
|
|
||||||
its_send_vmapp(its, vpe, false);
|
its_send_vmapp(its, vpe, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* There may be a direct read to the VPT after unmapping the
|
||||||
|
* vPE, to guarantee the validity of this, we make the VPT
|
||||||
|
* memory coherent with the CPU caches here.
|
||||||
|
*/
|
||||||
|
if (find_4_1_its() && !atomic_read(&vpe->vmapp_count))
|
||||||
|
gic_flush_dcache_to_poc(page_address(vpe->vpt_page),
|
||||||
|
LPI_PENDBASE_SZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct irq_domain_ops its_vpe_domain_ops = {
|
static const struct irq_domain_ops its_vpe_domain_ops = {
|
||||||
|
Loading…
Reference in New Issue
Block a user