From nobody Mon Feb 9 17:36:10 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1596789532; cv=none; d=zohomail.com; s=zohoarc; b=UijA8B1K7nOQSGelWDHtdP7gMJ+KK1VBvxDTI/4LP9h54kNq23HEM3uhkZ/S03hwqEqiB8E6Fz0QHiMzJxycHucrbPq4dRFLutGRWXm0UuKiovePcYod6h1WiB1341gtBqjOS1CCqjbqsOk/nEF4EI1L+ToOECTajP5v5B5Mh8Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596789532; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4qv5Uro8Z5uayPH7j9rsw+X+++juQw0btmNxlS0IrNs=; b=msrsl9KTcU/ARpMSqO774JJN0TIPy3sqZMsOiqmFBPoV+58Gx3ewBbLl7tvO2+HjCP9VwGlPqHugz+PXkyYeV1YbhTa+abuXyRJs/1wqmMZSIIESxec9p6KxM8DsaL3ZIkWtfU0jN/ZgogMM+cwp4miTq1GfKrTk3XI8eYTnzXY= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1596789532270556.826021709382; Fri, 7 Aug 2020 01:38:52 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1k3xtb-0006ss-1h; Fri, 07 Aug 2020 08:38:35 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1k3xta-0006sY-L2 for xen-devel@lists.xenproject.org; Fri, 07 Aug 2020 08:38:34 +0000 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 3847c3f2-9fdf-4493-85fc-38d497f0eb66; Fri, 07 Aug 2020 08:38:33 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 0815AB642; Fri, 7 Aug 2020 08:38:50 +0000 (UTC) X-Inumbo-ID: 3847c3f2-9fdf-4493-85fc-38d497f0eb66 X-Virus-Scanned: by amavisd-new at test-mx.suse.de From: Juergen Gross To: xen-devel@lists.xenproject.org, x86@kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: [PATCH v3 4/7] x86/paravirt: remove 32-bit support from PARAVIRT_XXL Date: Fri, 7 Aug 2020 10:38:23 +0200 Message-Id: <20200807083826.16794-5-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200807083826.16794-1-jgross@suse.com> References: <20200807083826.16794-1-jgross@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Stefano Stabellini , Deep Shah , "VMware, Inc." , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , Thomas Gleixner , Boris Ostrovsky Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Content-Type: text/plain; charset="utf-8" The last 32-bit user of stuff under CONFIG_PARAVIRT_XXL is gone. Remove 32-bit specific parts. Signed-off-by: Juergen Gross --- arch/x86/entry/vdso/vdso32/vclock_gettime.c | 1 + arch/x86/include/asm/paravirt.h | 92 +++------------------ arch/x86/include/asm/paravirt_types.h | 21 ----- arch/x86/include/asm/pgtable-3level_types.h | 5 -- arch/x86/include/asm/segment.h | 4 - arch/x86/kernel/cpu/common.c | 8 -- arch/x86/kernel/kprobes/core.c | 1 - arch/x86/kernel/kprobes/opt.c | 1 - arch/x86/kernel/paravirt.c | 18 ---- arch/x86/kernel/paravirt_patch.c | 17 ---- arch/x86/xen/enlighten_pv.c | 6 -- 11 files changed, 13 insertions(+), 161 deletions(-) diff --git a/arch/x86/entry/vdso/vdso32/vclock_gettime.c b/arch/x86/entry/v= dso/vdso32/vclock_gettime.c index 84a4a73f77f7..283ed9d00426 100644 --- a/arch/x86/entry/vdso/vdso32/vclock_gettime.c +++ b/arch/x86/entry/vdso/vdso32/vclock_gettime.c @@ -14,6 +14,7 @@ #undef CONFIG_ILLEGAL_POINTER_VALUE #undef CONFIG_SPARSEMEM_VMEMMAP #undef CONFIG_NR_CPUS +#undef CONFIG_PARAVIRT_XXL =20 #define CONFIG_X86_32 1 #define CONFIG_PGTABLE_LEVELS 2 diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravir= t.h index 3d2afecde50c..dedc89a07826 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -160,8 +160,6 @@ static inline void wbinvd(void) PVOP_VCALL0(cpu.wbinvd); } =20 -#define get_kernel_rpl() (pv_info.kernel_rpl) - static inline u64 paravirt_read_msr(unsigned msr) { return PVOP_CALL1(u64, cpu.read_msr, msr); @@ -277,12 +275,10 @@ static inline void load_TLS(struct thread_struct *t, = unsigned cpu) PVOP_VCALL2(cpu.load_tls, t, cpu); } =20 -#ifdef CONFIG_X86_64 static inline void load_gs_index(unsigned int gs) { PVOP_VCALL1(cpu.load_gs_index, gs); } -#endif =20 static inline void write_ldt_entry(struct desc_struct *dt, int entry, const void *desc) @@ -377,10 +373,7 @@ static inline pte_t __pte(pteval_t val) { pteval_t ret; =20 - if (sizeof(pteval_t) > sizeof(long)) - ret =3D PVOP_CALLEE2(pteval_t, mmu.make_pte, val, (u64)val >> 32); - else - ret =3D PVOP_CALLEE1(pteval_t, mmu.make_pte, val); + ret =3D PVOP_CALLEE1(pteval_t, mmu.make_pte, val); =20 return (pte_t) { .pte =3D ret }; } @@ -389,11 +382,7 @@ static inline pteval_t pte_val(pte_t pte) { pteval_t ret; =20 - if (sizeof(pteval_t) > sizeof(long)) - ret =3D PVOP_CALLEE2(pteval_t, mmu.pte_val, - pte.pte, (u64)pte.pte >> 32); - else - ret =3D PVOP_CALLEE1(pteval_t, mmu.pte_val, pte.pte); + ret =3D PVOP_CALLEE1(pteval_t, mmu.pte_val, pte.pte); =20 return ret; } @@ -402,10 +391,7 @@ static inline pgd_t __pgd(pgdval_t val) { pgdval_t ret; =20 - if (sizeof(pgdval_t) > sizeof(long)) - ret =3D PVOP_CALLEE2(pgdval_t, mmu.make_pgd, val, (u64)val >> 32); - else - ret =3D PVOP_CALLEE1(pgdval_t, mmu.make_pgd, val); + ret =3D PVOP_CALLEE1(pgdval_t, mmu.make_pgd, val); =20 return (pgd_t) { ret }; } @@ -414,11 +400,7 @@ static inline pgdval_t pgd_val(pgd_t pgd) { pgdval_t ret; =20 - if (sizeof(pgdval_t) > sizeof(long)) - ret =3D PVOP_CALLEE2(pgdval_t, mmu.pgd_val, - pgd.pgd, (u64)pgd.pgd >> 32); - else - ret =3D PVOP_CALLEE1(pgdval_t, mmu.pgd_val, pgd.pgd); + ret =3D PVOP_CALLEE1(pgdval_t, mmu.pgd_val, pgd.pgd); =20 return ret; } @@ -438,51 +420,32 @@ static inline void ptep_modify_prot_commit(struct vm_= area_struct *vma, unsigned pte_t *ptep, pte_t old_pte, pte_t pte) { =20 - if (sizeof(pteval_t) > sizeof(long)) - /* 5 arg words */ - pv_ops.mmu.ptep_modify_prot_commit(vma, addr, ptep, pte); - else - PVOP_VCALL4(mmu.ptep_modify_prot_commit, - vma, addr, ptep, pte.pte); + PVOP_VCALL4(mmu.ptep_modify_prot_commit, vma, addr, ptep, pte.pte); } =20 static inline void set_pte(pte_t *ptep, pte_t pte) { - if (sizeof(pteval_t) > sizeof(long)) - PVOP_VCALL3(mmu.set_pte, ptep, pte.pte, (u64)pte.pte >> 32); - else - PVOP_VCALL2(mmu.set_pte, ptep, pte.pte); + PVOP_VCALL2(mmu.set_pte, ptep, pte.pte); } =20 static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { - if (sizeof(pteval_t) > sizeof(long)) - /* 5 arg words */ - pv_ops.mmu.set_pte_at(mm, addr, ptep, pte); - else - PVOP_VCALL4(mmu.set_pte_at, mm, addr, ptep, pte.pte); + PVOP_VCALL4(mmu.set_pte_at, mm, addr, ptep, pte.pte); } =20 static inline void set_pmd(pmd_t *pmdp, pmd_t pmd) { pmdval_t val =3D native_pmd_val(pmd); =20 - if (sizeof(pmdval_t) > sizeof(long)) - PVOP_VCALL3(mmu.set_pmd, pmdp, val, (u64)val >> 32); - else - PVOP_VCALL2(mmu.set_pmd, pmdp, val); + PVOP_VCALL2(mmu.set_pmd, pmdp, val); } =20 -#if CONFIG_PGTABLE_LEVELS >=3D 3 static inline pmd_t __pmd(pmdval_t val) { pmdval_t ret; =20 - if (sizeof(pmdval_t) > sizeof(long)) - ret =3D PVOP_CALLEE2(pmdval_t, mmu.make_pmd, val, (u64)val >> 32); - else - ret =3D PVOP_CALLEE1(pmdval_t, mmu.make_pmd, val); + ret =3D PVOP_CALLEE1(pmdval_t, mmu.make_pmd, val); =20 return (pmd_t) { ret }; } @@ -491,11 +454,7 @@ static inline pmdval_t pmd_val(pmd_t pmd) { pmdval_t ret; =20 - if (sizeof(pmdval_t) > sizeof(long)) - ret =3D PVOP_CALLEE2(pmdval_t, mmu.pmd_val, - pmd.pmd, (u64)pmd.pmd >> 32); - else - ret =3D PVOP_CALLEE1(pmdval_t, mmu.pmd_val, pmd.pmd); + ret =3D PVOP_CALLEE1(pmdval_t, mmu.pmd_val, pmd.pmd); =20 return ret; } @@ -504,12 +463,9 @@ static inline void set_pud(pud_t *pudp, pud_t pud) { pudval_t val =3D native_pud_val(pud); =20 - if (sizeof(pudval_t) > sizeof(long)) - PVOP_VCALL3(mmu.set_pud, pudp, val, (u64)val >> 32); - else - PVOP_VCALL2(mmu.set_pud, pudp, val); + PVOP_VCALL2(mmu.set_pud, pudp, val); } -#if CONFIG_PGTABLE_LEVELS >=3D 4 + static inline pud_t __pud(pudval_t val) { pudval_t ret; @@ -574,29 +530,6 @@ static inline void p4d_clear(p4d_t *p4dp) set_p4d(p4dp, __p4d(0)); } =20 -#endif /* CONFIG_PGTABLE_LEVELS =3D=3D 4 */ - -#endif /* CONFIG_PGTABLE_LEVELS >=3D 3 */ - -#ifdef CONFIG_X86_PAE -/* Special-case pte-setting operations for PAE, which can't update a - 64-bit pte atomically */ -static inline void set_pte_atomic(pte_t *ptep, pte_t pte) -{ - PVOP_VCALL3(mmu.set_pte_atomic, ptep, pte.pte, pte.pte >> 32); -} - -static inline void pte_clear(struct mm_struct *mm, unsigned long addr, - pte_t *ptep) -{ - PVOP_VCALL3(mmu.pte_clear, mm, addr, ptep); -} - -static inline void pmd_clear(pmd_t *pmdp) -{ - PVOP_VCALL1(mmu.pmd_clear, pmdp); -} -#else /* !CONFIG_X86_PAE */ static inline void set_pte_atomic(pte_t *ptep, pte_t pte) { set_pte(ptep, pte); @@ -612,7 +545,6 @@ static inline void pmd_clear(pmd_t *pmdp) { set_pmd(pmdp, __pmd(0)); } -#endif /* CONFIG_X86_PAE */ =20 #define __HAVE_ARCH_START_CONTEXT_SWITCH static inline void arch_start_context_switch(struct task_struct *prev) diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/p= aravirt_types.h index 8dfcb2508e6d..f27c3febaa6e 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -68,12 +68,7 @@ struct paravirt_callee_save { /* general info */ struct pv_info { #ifdef CONFIG_PARAVIRT_XXL - unsigned int kernel_rpl; - int shared_kernel_pmd; - -#ifdef CONFIG_X86_64 u16 extra_user_64bit_cs; /* __USER_CS if none */ -#endif #endif =20 const char *name; @@ -126,9 +121,7 @@ struct pv_cpu_ops { void (*set_ldt)(const void *desc, unsigned entries); unsigned long (*store_tr)(void); void (*load_tls)(struct thread_struct *t, unsigned int cpu); -#ifdef CONFIG_X86_64 void (*load_gs_index)(unsigned int idx); -#endif void (*write_ldt_entry)(struct desc_struct *ldt, int entrynum, const void *desc); void (*write_gdt_entry)(struct desc_struct *, @@ -264,21 +257,11 @@ struct pv_mmu_ops { struct paravirt_callee_save pgd_val; struct paravirt_callee_save make_pgd; =20 -#if CONFIG_PGTABLE_LEVELS >=3D 3 -#ifdef CONFIG_X86_PAE - void (*set_pte_atomic)(pte_t *ptep, pte_t pteval); - void (*pte_clear)(struct mm_struct *mm, unsigned long addr, - pte_t *ptep); - void (*pmd_clear)(pmd_t *pmdp); - -#endif /* CONFIG_X86_PAE */ - void (*set_pud)(pud_t *pudp, pud_t pudval); =20 struct paravirt_callee_save pmd_val; struct paravirt_callee_save make_pmd; =20 -#if CONFIG_PGTABLE_LEVELS >=3D 4 struct paravirt_callee_save pud_val; struct paravirt_callee_save make_pud; =20 @@ -291,10 +274,6 @@ struct pv_mmu_ops { void (*set_pgd)(pgd_t *pgdp, pgd_t pgdval); #endif /* CONFIG_PGTABLE_LEVELS >=3D 5 */ =20 -#endif /* CONFIG_PGTABLE_LEVELS >=3D 4 */ - -#endif /* CONFIG_PGTABLE_LEVELS >=3D 3 */ - struct pv_lazy_ops lazy_mode; =20 /* dom0 ops */ diff --git a/arch/x86/include/asm/pgtable-3level_types.h b/arch/x86/include= /asm/pgtable-3level_types.h index 80fbb4a9ed87..56baf43befb4 100644 --- a/arch/x86/include/asm/pgtable-3level_types.h +++ b/arch/x86/include/asm/pgtable-3level_types.h @@ -20,12 +20,7 @@ typedef union { } pte_t; #endif /* !__ASSEMBLY__ */ =20 -#ifdef CONFIG_PARAVIRT_XXL -#define SHARED_KERNEL_PMD ((!static_cpu_has(X86_FEATURE_PTI) && \ - (pv_info.shared_kernel_pmd))) -#else #define SHARED_KERNEL_PMD (!static_cpu_has(X86_FEATURE_PTI)) -#endif =20 #define ARCH_PAGE_TABLE_SYNC_MASK (SHARED_KERNEL_PMD ? 0 : PGTBL_PMD_MODIF= IED) =20 diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h index 9646c300f128..517920928989 100644 --- a/arch/x86/include/asm/segment.h +++ b/arch/x86/include/asm/segment.h @@ -222,10 +222,6 @@ =20 #endif =20 -#ifndef CONFIG_PARAVIRT_XXL -# define get_kernel_rpl() 0 -#endif - #define IDT_ENTRIES 256 #define NUM_EXCEPTION_VECTORS 32 =20 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 965474d78cef..ca89cea31e81 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -1412,15 +1412,7 @@ static void generic_identify(struct cpuinfo_x86 *c) * ESPFIX issue, we can change this. */ #ifdef CONFIG_X86_32 -# ifdef CONFIG_PARAVIRT_XXL - do { - extern void native_iret(void); - if (pv_ops.cpu.iret =3D=3D native_iret) - set_cpu_bug(c, X86_BUG_ESPFIX); - } while (0); -# else set_cpu_bug(c, X86_BUG_ESPFIX); -# endif #endif } =20 diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c index fdadc37d72af..2ca10b770cff 100644 --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c @@ -793,7 +793,6 @@ __used __visible void *trampoline_handler(struct pt_reg= s *regs) /* fixup registers */ regs->cs =3D __KERNEL_CS; #ifdef CONFIG_X86_32 - regs->cs |=3D get_kernel_rpl(); regs->gs =3D 0; #endif /* We use pt_regs->sp for return address holder. */ diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c index 40f380461e6d..b8dd113a1284 100644 --- a/arch/x86/kernel/kprobes/opt.c +++ b/arch/x86/kernel/kprobes/opt.c @@ -181,7 +181,6 @@ optimized_callback(struct optimized_kprobe *op, struct = pt_regs *regs) /* Save skipped registers */ regs->cs =3D __KERNEL_CS; #ifdef CONFIG_X86_32 - regs->cs |=3D get_kernel_rpl(); regs->gs =3D 0; #endif regs->ip =3D (unsigned long)op->kp.addr + INT3_INSN_SIZE; diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index de2138ba38e5..e56a144c13b3 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c @@ -263,13 +263,8 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void) struct pv_info pv_info =3D { .name =3D "bare hardware", #ifdef CONFIG_PARAVIRT_XXL - .kernel_rpl =3D 0, - .shared_kernel_pmd =3D 1, /* Only used when CONFIG_X86_PAE is set */ - -#ifdef CONFIG_X86_64 .extra_user_64bit_cs =3D __USER_CS, #endif -#endif }; =20 /* 64-bit pagetable entries */ @@ -305,9 +300,7 @@ struct paravirt_patch_template pv_ops =3D { .cpu.load_idt =3D native_load_idt, .cpu.store_tr =3D native_store_tr, .cpu.load_tls =3D native_load_tls, -#ifdef CONFIG_X86_64 .cpu.load_gs_index =3D native_load_gs_index, -#endif .cpu.write_ldt_entry =3D native_write_ldt_entry, .cpu.write_gdt_entry =3D native_write_gdt_entry, .cpu.write_idt_entry =3D native_write_idt_entry, @@ -317,9 +310,7 @@ struct paravirt_patch_template pv_ops =3D { =20 .cpu.load_sp0 =3D native_load_sp0, =20 -#ifdef CONFIG_X86_64 .cpu.usergs_sysret64 =3D native_usergs_sysret64, -#endif .cpu.iret =3D native_iret, .cpu.swapgs =3D native_swapgs, =20 @@ -375,18 +366,11 @@ struct paravirt_patch_template pv_ops =3D { .mmu.ptep_modify_prot_start =3D __ptep_modify_prot_start, .mmu.ptep_modify_prot_commit =3D __ptep_modify_prot_commit, =20 -#if CONFIG_PGTABLE_LEVELS >=3D 3 -#ifdef CONFIG_X86_PAE - .mmu.set_pte_atomic =3D native_set_pte_atomic, - .mmu.pte_clear =3D native_pte_clear, - .mmu.pmd_clear =3D native_pmd_clear, -#endif .mmu.set_pud =3D native_set_pud, =20 .mmu.pmd_val =3D PTE_IDENT, .mmu.make_pmd =3D PTE_IDENT, =20 -#if CONFIG_PGTABLE_LEVELS >=3D 4 .mmu.pud_val =3D PTE_IDENT, .mmu.make_pud =3D PTE_IDENT, =20 @@ -398,8 +382,6 @@ struct paravirt_patch_template pv_ops =3D { =20 .mmu.set_pgd =3D native_set_pgd, #endif /* CONFIG_PGTABLE_LEVELS >=3D 5 */ -#endif /* CONFIG_PGTABLE_LEVELS >=3D 4 */ -#endif /* CONFIG_PGTABLE_LEVELS >=3D 3 */ =20 .mmu.pte_val =3D PTE_IDENT, .mmu.pgd_val =3D PTE_IDENT, diff --git a/arch/x86/kernel/paravirt_patch.c b/arch/x86/kernel/paravirt_pa= tch.c index 3eff63c090d2..ace6e334cb39 100644 --- a/arch/x86/kernel/paravirt_patch.c +++ b/arch/x86/kernel/paravirt_patch.c @@ -26,14 +26,10 @@ struct patch_xxl { const unsigned char mmu_read_cr3[3]; const unsigned char mmu_write_cr3[3]; const unsigned char irq_restore_fl[2]; -# ifdef CONFIG_X86_64 const unsigned char cpu_wbinvd[2]; const unsigned char cpu_usergs_sysret64[6]; const unsigned char cpu_swapgs[3]; const unsigned char mov64[3]; -# else - const unsigned char cpu_iret[1]; -# endif }; =20 static const struct patch_xxl patch_data_xxl =3D { @@ -42,7 +38,6 @@ static const struct patch_xxl patch_data_xxl =3D { .irq_save_fl =3D { 0x9c, 0x58 }, // pushf; pop %[re]ax .mmu_read_cr2 =3D { 0x0f, 0x20, 0xd0 }, // mov %cr2, %[re]ax .mmu_read_cr3 =3D { 0x0f, 0x20, 0xd8 }, // mov %cr3, %[re]ax -# ifdef CONFIG_X86_64 .mmu_write_cr3 =3D { 0x0f, 0x22, 0xdf }, // mov %rdi, %cr3 .irq_restore_fl =3D { 0x57, 0x9d }, // push %rdi; popfq .cpu_wbinvd =3D { 0x0f, 0x09 }, // wbinvd @@ -50,19 +45,11 @@ static const struct patch_xxl patch_data_xxl =3D { 0x48, 0x0f, 0x07 }, // swapgs; sysretq .cpu_swapgs =3D { 0x0f, 0x01, 0xf8 }, // swapgs .mov64 =3D { 0x48, 0x89, 0xf8 }, // mov %rdi, %rax -# else - .mmu_write_cr3 =3D { 0x0f, 0x22, 0xd8 }, // mov %eax, %cr3 - .irq_restore_fl =3D { 0x50, 0x9d }, // push %eax; popf - .cpu_iret =3D { 0xcf }, // iret -# endif }; =20 unsigned int paravirt_patch_ident_64(void *insn_buff, unsigned int len) { -#ifdef CONFIG_X86_64 return PATCH(xxl, mov64, insn_buff, len); -#endif - return 0; } # endif /* CONFIG_PARAVIRT_XXL */ =20 @@ -98,13 +85,9 @@ unsigned int native_patch(u8 type, void *insn_buff, unsi= gned long addr, PATCH_CASE(mmu, read_cr3, xxl, insn_buff, len); PATCH_CASE(mmu, write_cr3, xxl, insn_buff, len); =20 -# ifdef CONFIG_X86_64 PATCH_CASE(cpu, usergs_sysret64, xxl, insn_buff, len); PATCH_CASE(cpu, swapgs, xxl, insn_buff, len); PATCH_CASE(cpu, wbinvd, xxl, insn_buff, len); -# else - PATCH_CASE(cpu, iret, xxl, insn_buff, len); -# endif #endif =20 #ifdef CONFIG_PARAVIRT_SPINLOCKS diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c index 9fec952f84f3..b84d3d47082b 100644 --- a/arch/x86/xen/enlighten_pv.c +++ b/arch/x86/xen/enlighten_pv.c @@ -1017,8 +1017,6 @@ void __init xen_setup_vcpu_info_placement(void) } =20 static const struct pv_info xen_info __initconst =3D { - .shared_kernel_pmd =3D 0, - .extra_user_64bit_cs =3D FLAT_USER_CS64, .name =3D "Xen", }; @@ -1317,10 +1315,6 @@ asmlinkage __visible void __init xen_start_kernel(vo= id) xen_start_info->nr_pages); xen_reserve_special_pages(); =20 - /* keep using Xen gdt for now; no urgent need to change it */ - - pv_info.kernel_rpl =3D 0; - /* set the limit of our address space */ xen_reserve_top(); =20 --=20 2.26.2