Skip to content

Commit 817f66e

Browse files
jgross1bp3tk0v
authored andcommitted
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. This is in preparation of reducing the paravirt include hell by splitting paravirt.h into multiple more fine grained header files, which will in turn require to split up the pv_ops vector as well. Dropping the pre-filled array makes life easier for objtool to detect missing initializers in multiple pv_ops_ arrays. Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Link: https://patch.msgid.link/20260105110520.21356-17-jgross@suse.com
1 parent bc5e8e2 commit 817f66e

2 files changed

Lines changed: 33 additions & 50 deletions

File tree

arch/x86/xen/enlighten_pv.c

Lines changed: 33 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,54 +1212,6 @@ static const struct pv_info xen_info __initconst = {
12121212
.name = "Xen",
12131213
};
12141214

1215-
static const typeof(pv_ops) xen_cpu_ops __initconst = {
1216-
.cpu = {
1217-
.cpuid = xen_cpuid,
1218-
1219-
.set_debugreg = xen_set_debugreg,
1220-
.get_debugreg = xen_get_debugreg,
1221-
1222-
.read_cr0 = xen_read_cr0,
1223-
.write_cr0 = xen_write_cr0,
1224-
1225-
.write_cr4 = xen_write_cr4,
1226-
1227-
.read_msr = xen_read_msr,
1228-
.write_msr = xen_write_msr,
1229-
1230-
.read_msr_safe = xen_read_msr_safe,
1231-
.write_msr_safe = xen_write_msr_safe,
1232-
1233-
.read_pmc = xen_read_pmc,
1234-
1235-
.load_tr_desc = paravirt_nop,
1236-
.set_ldt = xen_set_ldt,
1237-
.load_gdt = xen_load_gdt,
1238-
.load_idt = xen_load_idt,
1239-
.load_tls = xen_load_tls,
1240-
.load_gs_index = xen_load_gs_index,
1241-
1242-
.alloc_ldt = xen_alloc_ldt,
1243-
.free_ldt = xen_free_ldt,
1244-
1245-
.store_tr = xen_store_tr,
1246-
1247-
.write_ldt_entry = xen_write_ldt_entry,
1248-
.write_gdt_entry = xen_write_gdt_entry,
1249-
.write_idt_entry = xen_write_idt_entry,
1250-
.load_sp0 = xen_load_sp0,
1251-
1252-
#ifdef CONFIG_X86_IOPL_IOPERM
1253-
.invalidate_io_bitmap = xen_invalidate_io_bitmap,
1254-
.update_io_bitmap = xen_update_io_bitmap,
1255-
#endif
1256-
.io_delay = xen_io_delay,
1257-
1258-
.start_context_switch = xen_start_context_switch,
1259-
.end_context_switch = xen_end_context_switch,
1260-
},
1261-
};
1262-
12631215
static void xen_restart(char *msg)
12641216
{
12651217
xen_reboot(SHUTDOWN_reboot);
@@ -1411,7 +1363,39 @@ asmlinkage __visible void __init xen_start_kernel(struct start_info *si)
14111363

14121364
/* Install Xen paravirt ops */
14131365
pv_info = xen_info;
1414-
pv_ops.cpu = xen_cpu_ops.cpu;
1366+
1367+
pv_ops.cpu.cpuid = xen_cpuid;
1368+
pv_ops.cpu.set_debugreg = xen_set_debugreg;
1369+
pv_ops.cpu.get_debugreg = xen_get_debugreg;
1370+
pv_ops.cpu.read_cr0 = xen_read_cr0;
1371+
pv_ops.cpu.write_cr0 = xen_write_cr0;
1372+
pv_ops.cpu.write_cr4 = xen_write_cr4;
1373+
pv_ops.cpu.read_msr = xen_read_msr;
1374+
pv_ops.cpu.write_msr = xen_write_msr;
1375+
pv_ops.cpu.read_msr_safe = xen_read_msr_safe;
1376+
pv_ops.cpu.write_msr_safe = xen_write_msr_safe;
1377+
pv_ops.cpu.read_pmc = xen_read_pmc;
1378+
pv_ops.cpu.load_tr_desc = paravirt_nop;
1379+
pv_ops.cpu.set_ldt = xen_set_ldt;
1380+
pv_ops.cpu.load_gdt = xen_load_gdt;
1381+
pv_ops.cpu.load_idt = xen_load_idt;
1382+
pv_ops.cpu.load_tls = xen_load_tls;
1383+
pv_ops.cpu.load_gs_index = xen_load_gs_index;
1384+
pv_ops.cpu.alloc_ldt = xen_alloc_ldt;
1385+
pv_ops.cpu.free_ldt = xen_free_ldt;
1386+
pv_ops.cpu.store_tr = xen_store_tr;
1387+
pv_ops.cpu.write_ldt_entry = xen_write_ldt_entry;
1388+
pv_ops.cpu.write_gdt_entry = xen_write_gdt_entry;
1389+
pv_ops.cpu.write_idt_entry = xen_write_idt_entry;
1390+
pv_ops.cpu.load_sp0 = xen_load_sp0;
1391+
#ifdef CONFIG_X86_IOPL_IOPERM
1392+
pv_ops.cpu.invalidate_io_bitmap = xen_invalidate_io_bitmap;
1393+
pv_ops.cpu.update_io_bitmap = xen_update_io_bitmap;
1394+
#endif
1395+
pv_ops.cpu.io_delay = xen_io_delay;
1396+
pv_ops.cpu.start_context_switch = xen_start_context_switch;
1397+
pv_ops.cpu.end_context_switch = xen_end_context_switch;
1398+
14151399
xen_init_irq_ops();
14161400

14171401
/*

tools/objtool/check.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,6 @@ static int init_pv_ops(struct objtool_file *file)
570570
{
571571
static const char *pv_ops_tables[] = {
572572
"pv_ops",
573-
"xen_cpu_ops",
574573
"xen_mmu_ops",
575574
NULL,
576575
};

0 commit comments

Comments
 (0)