[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 02/17] x86: do a revert of e871e80c38547d9faefc6604532ba3e985e65873
Revert "x86: allow Meltdown band-aid to be disabled" in order to prepare for a final Meltdown mitigation. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> --- docs/misc/xen-command-line.markdown | 12 ------------ xen/arch/x86/domain.c | 7 ++----- xen/arch/x86/mm.c | 12 +----------- xen/arch/x86/smpboot.c | 17 +++-------------- xen/arch/x86/x86_64/entry.S | 2 -- 5 files changed, 6 insertions(+), 44 deletions(-) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 79feba6bcd..6df39dae0b 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -1926,18 +1926,6 @@ In the case that x2apic is in use, this option switches between physical and clustered mode. The default, given no hint from the **FADT**, is cluster mode. -### xpti -> `= <boolean>` - -> Default: `false` on AMD hardware -> Default: `true` everywhere else - -Override default selection of whether to isolate 64-bit PV guest page -tables. - -** WARNING: Not yet a complete isolation implementation, but better than -nothing. ** - ### xsave > `= <boolean>` diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index f93327b0a2..752e0fafee 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1518,13 +1518,10 @@ void paravirt_ctxt_switch_from(struct vcpu *v) void paravirt_ctxt_switch_to(struct vcpu *v) { - root_pgentry_t *root_pgt = this_cpu(root_pgt); unsigned long cr4; - if ( root_pgt ) - root_pgt[root_table_offset(PERDOMAIN_VIRT_START)] = - l4e_from_page(v->domain->arch.perdomain_l3_pg, - __PAGE_HYPERVISOR_RW); + this_cpu(root_pgt)[root_table_offset(PERDOMAIN_VIRT_START)] = + l4e_from_page(v->domain->arch.perdomain_l3_pg, __PAGE_HYPERVISOR_RW); cr4 = pv_guest_cr4_to_real_cr4(v); if ( unlikely(cr4 != read_cr4()) ) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 35f204369b..fa0da7b0ff 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3706,17 +3706,7 @@ long do_mmu_update( break; rc = mod_l4_entry(va, l4e_from_intpte(req.val), mfn, cmd == MMU_PT_UPDATE_PRESERVE_AD, v); - /* - * No need to sync if all uses of the page can be accounted - * to the page lock we hold, its pinned status, and uses on - * this (v)CPU. - */ - if ( !rc && this_cpu(root_pgt) && - ((page->u.inuse.type_info & PGT_count_mask) > - (1 + !!(page->u.inuse.type_info & PGT_pinned) + - (pagetable_get_pfn(curr->arch.guest_table) == mfn) + - (pagetable_get_pfn(curr->arch.guest_table_user) == - mfn))) ) + if ( !rc ) sync_guest = true; break; diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index 2ebef03027..49978b3697 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -331,7 +331,7 @@ void start_secondary(void *unused) spin_debug_disable(); get_cpu_info()->xen_cr3 = 0; - get_cpu_info()->pv_cr3 = this_cpu(root_pgt) ? __pa(this_cpu(root_pgt)) : 0; + get_cpu_info()->pv_cr3 = __pa(this_cpu(root_pgt)); load_system_tables(); @@ -740,20 +740,14 @@ static int clone_mapping(const void *ptr, root_pgentry_t *rpt) return 0; } -static __read_mostly int8_t opt_xpti = -1; -boolean_param("xpti", opt_xpti); DEFINE_PER_CPU(root_pgentry_t *, root_pgt); static int setup_cpu_root_pgt(unsigned int cpu) { - root_pgentry_t *rpt; + root_pgentry_t *rpt = alloc_xen_pagetable(); unsigned int off; int rc; - if ( !opt_xpti ) - return 0; - - rpt = alloc_xen_pagetable(); if ( !rpt ) return -ENOMEM; @@ -1002,14 +996,10 @@ void __init smp_prepare_cpus(unsigned int max_cpus) stack_base[0] = stack_start; - if ( opt_xpti < 0 ) - opt_xpti = boot_cpu_data.x86_vendor != X86_VENDOR_AMD; - rc = setup_cpu_root_pgt(0); if ( rc ) panic("Error %d setting up PV root page table\n", rc); - if ( per_cpu(root_pgt, 0) ) - get_cpu_info()->pv_cr3 = __pa(per_cpu(root_pgt, 0)); + get_cpu_info()->pv_cr3 = __pa(per_cpu(root_pgt, 0)); set_nr_sockets(); @@ -1081,7 +1071,6 @@ void __init smp_prepare_boot_cpu(void) #endif get_cpu_info()->xen_cr3 = 0; - get_cpu_info()->pv_cr3 = 0; } static void diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 58f652d010..52f64cceda 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -50,7 +50,6 @@ restore_all_guest: movabs $DIRECTMAP_VIRT_START, %rcx mov %rdi, %rax and %rsi, %rdi - jz .Lrag_keep_cr3 and %r9, %rsi add %rcx, %rdi add %rcx, %rsi @@ -67,7 +66,6 @@ restore_all_guest: rep movsq mov %r9, STACK_CPUINFO_FIELD(xen_cr3)(%rdx) write_cr3 rax, rdi, rsi -.Lrag_keep_cr3: /* Restore stashed SPEC_CTRL value. */ mov %r15d, %eax -- 2.13.6 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |