[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 16/21] x86/xen: Drop xen_cpu_ops



Instead of having a pre-filled array xen_cpu_ops for Xen PV paravirt
functions, drop the array and assign each element individually.

Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
V2:
- new patch
---
 arch/x86/xen/enlighten_pv.c | 82 +++++++++++++++----------------------
 tools/objtool/check.c       |  1 -
 2 files changed, 33 insertions(+), 50 deletions(-)

diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index 26bbaf4b7330..45ce2be41628 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -1213,54 +1213,6 @@ static const struct pv_info xen_info __initconst = {
        .name = "Xen",
 };
 
-static const typeof(pv_ops) xen_cpu_ops __initconst = {
-       .cpu = {
-               .cpuid = xen_cpuid,
-
-               .set_debugreg = xen_set_debugreg,
-               .get_debugreg = xen_get_debugreg,
-
-               .read_cr0 = xen_read_cr0,
-               .write_cr0 = xen_write_cr0,
-
-               .write_cr4 = xen_write_cr4,
-
-               .read_msr = xen_read_msr,
-               .write_msr = xen_write_msr,
-
-               .read_msr_safe = xen_read_msr_safe,
-               .write_msr_safe = xen_write_msr_safe,
-
-               .read_pmc = xen_read_pmc,
-
-               .load_tr_desc = paravirt_nop,
-               .set_ldt = xen_set_ldt,
-               .load_gdt = xen_load_gdt,
-               .load_idt = xen_load_idt,
-               .load_tls = xen_load_tls,
-               .load_gs_index = xen_load_gs_index,
-
-               .alloc_ldt = xen_alloc_ldt,
-               .free_ldt = xen_free_ldt,
-
-               .store_tr = xen_store_tr,
-
-               .write_ldt_entry = xen_write_ldt_entry,
-               .write_gdt_entry = xen_write_gdt_entry,
-               .write_idt_entry = xen_write_idt_entry,
-               .load_sp0 = xen_load_sp0,
-
-#ifdef CONFIG_X86_IOPL_IOPERM
-               .invalidate_io_bitmap = xen_invalidate_io_bitmap,
-               .update_io_bitmap = xen_update_io_bitmap,
-#endif
-               .io_delay = xen_io_delay,
-
-               .start_context_switch = xen_start_context_switch,
-               .end_context_switch = xen_end_context_switch,
-       },
-};
-
 static void xen_restart(char *msg)
 {
        xen_reboot(SHUTDOWN_reboot);
@@ -1411,7 +1363,39 @@ asmlinkage __visible void __init xen_start_kernel(struct 
start_info *si)
 
        /* Install Xen paravirt ops */
        pv_info = xen_info;
-       pv_ops.cpu = xen_cpu_ops.cpu;
+
+       pv_ops.cpu.cpuid = xen_cpuid;
+       pv_ops.cpu.set_debugreg = xen_set_debugreg;
+       pv_ops.cpu.get_debugreg = xen_get_debugreg;
+       pv_ops.cpu.read_cr0 = xen_read_cr0;
+       pv_ops.cpu.write_cr0 = xen_write_cr0;
+       pv_ops.cpu.write_cr4 = xen_write_cr4;
+       pv_ops.cpu.read_msr = xen_read_msr;
+       pv_ops.cpu.write_msr = xen_write_msr;
+       pv_ops.cpu.read_msr_safe = xen_read_msr_safe;
+       pv_ops.cpu.write_msr_safe = xen_write_msr_safe;
+       pv_ops.cpu.read_pmc = xen_read_pmc;
+       pv_ops.cpu.load_tr_desc = paravirt_nop;
+       pv_ops.cpu.set_ldt = xen_set_ldt;
+       pv_ops.cpu.load_gdt = xen_load_gdt;
+       pv_ops.cpu.load_idt = xen_load_idt;
+       pv_ops.cpu.load_tls = xen_load_tls;
+       pv_ops.cpu.load_gs_index = xen_load_gs_index;
+       pv_ops.cpu.alloc_ldt = xen_alloc_ldt;
+       pv_ops.cpu.free_ldt = xen_free_ldt;
+       pv_ops.cpu.store_tr = xen_store_tr;
+       pv_ops.cpu.write_ldt_entry = xen_write_ldt_entry;
+       pv_ops.cpu.write_gdt_entry = xen_write_gdt_entry;
+       pv_ops.cpu.write_idt_entry = xen_write_idt_entry;
+       pv_ops.cpu.load_sp0 = xen_load_sp0;
+#ifdef CONFIG_X86_IOPL_IOPERM
+       pv_ops.cpu.invalidate_io_bitmap = xen_invalidate_io_bitmap;
+       pv_ops.cpu.update_io_bitmap = xen_update_io_bitmap;
+#endif
+       pv_ops.cpu.io_delay = xen_io_delay;
+       pv_ops.cpu.start_context_switch = xen_start_context_switch;
+       pv_ops.cpu.end_context_switch = xen_end_context_switch;
+
        xen_init_irq_ops();
 
        /*
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index 14ae91cc246a..c2a3079fe5f8 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -592,7 +592,6 @@ static int init_pv_ops(struct objtool_file *file)
 {
        static const char *pv_ops_tables[] = {
                "pv_ops",
-               "xen_cpu_ops",
                "xen_mmu_ops",
                NULL,
        };
-- 
2.51.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.