|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH 64/84] mapcache: initialise the mapcache even for the idle domain.
From: Hongyan Xia <hongyax@xxxxxxxxxx>
In situations like in irqs or domain creation, PMAP cannot be used or
the mapcache of that domain is simply not ready. We need to have a
mapcache in the idle domain to map pages to deal with these.
After this patch, map_domain_page() completely gets rid of the direct
map. The assertions ensure mappings only happen within PMAP or MAPCACHE
regions. As a result, map_xen_pagetable() gets rid of the direct map as
well.
Signed-off-by: Hongyan Xia <hongyax@xxxxxxxxxx>
---
xen/arch/x86/mm.c | 3 +++
xen/common/schedule.c | 1 +
2 files changed, 4 insertions(+)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 9619182f52..f30b5b3951 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -5858,6 +5858,9 @@ int create_perdomain_mapping(struct domain *d, unsigned
long va,
l3tab = __map_domain_page(pg);
clear_page(l3tab);
d->arch.perdomain_l3_pg = pg;
+ if ( is_idle_domain(d) )
+ idle_pg_table[l4_table_offset(PERDOMAIN_VIRT_START)] =
+ l4e_from_page(pg, __PAGE_HYPERVISOR_RW);
if ( !nr )
{
unmap_domain_page(l3tab);
diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index 7b71581756..e687be33a3 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -1814,6 +1814,7 @@ void __init scheduler_init(void)
BUG_ON(nr_cpu_ids > ARRAY_SIZE(idle_vcpu));
idle_domain->vcpu = idle_vcpu;
idle_domain->max_vcpus = nr_cpu_ids;
+ mapcache_domain_init(idle_domain);
if ( vcpu_create(idle_domain, 0, 0) == NULL )
BUG();
this_cpu(schedule_data).sched_priv = sched_alloc_pdata(&ops, 0);
--
2.17.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |