@@ -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);
@@ -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);