xen/arm: p2m: Provide an helper to generate the VTTBR

A follow-up patch will need to generate the VTTBR in a few places.

Signed-off-by: Julien Grall <julien.grall@arm.com>
Reviewed-by: Andrii Anisov <andrii_anisov@epam.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
Julien Grall authored and Stefano Stabellini committed 2019-01-28 16:53:17 -08:00
1 parent 2a65b43eb6
commit 8f88a2b4a2
1 file changed
+6 -1
+6 -1
View File
@@ -41,6 +41,11 @@ static const paddr_t level_masks[] =
static const uint8_t level_orders[] =
{ ZEROETH_ORDER, FIRST_ORDER, SECOND_ORDER, THIRD_ORDER };
static uint64_t generate_vttbr(uint16_t vmid, mfn_t root_mfn)
{
return (mfn_to_maddr(root_mfn) | ((uint64_t)vmid << 48));
}
/* Unlock the flush and do a P2M TLB flush if necessary */
void p2m_write_unlock(struct p2m_domain *p2m)
{
@@ -1364,7 +1369,7 @@ static int p2m_alloc_table(struct domain *d)
p2m->root = page;
p2m->vttbr = page_to_maddr(p2m->root) | ((uint64_t)p2m->vmid << 48);
p2m->vttbr = generate_vttbr(p2m->vmid, page_to_mfn(p2m->root));
/*
* Make sure that all TLBs corresponding to the new VMID are flushed
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.