Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

authored by

Juergen Gross and committed by
Borislav Petkov (AMD)
817f66e3 bc5e8e2f

+33 -50
+33 -49
arch/x86/xen/enlighten_pv.c
··· 1212 1212 .name = "Xen", 1213 1213 }; 1214 1214 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 - 1263 1215 static void xen_restart(char *msg) 1264 1216 { 1265 1217 xen_reboot(SHUTDOWN_reboot); ··· 1363 1411 1364 1412 /* Install Xen paravirt ops */ 1365 1413 pv_info = xen_info; 1366 - pv_ops.cpu = xen_cpu_ops.cpu; 1414 + 1415 + pv_ops.cpu.cpuid = xen_cpuid; 1416 + pv_ops.cpu.set_debugreg = xen_set_debugreg; 1417 + pv_ops.cpu.get_debugreg = xen_get_debugreg; 1418 + pv_ops.cpu.read_cr0 = xen_read_cr0; 1419 + pv_ops.cpu.write_cr0 = xen_write_cr0; 1420 + pv_ops.cpu.write_cr4 = xen_write_cr4; 1421 + pv_ops.cpu.read_msr = xen_read_msr; 1422 + pv_ops.cpu.write_msr = xen_write_msr; 1423 + pv_ops.cpu.read_msr_safe = xen_read_msr_safe; 1424 + pv_ops.cpu.write_msr_safe = xen_write_msr_safe; 1425 + pv_ops.cpu.read_pmc = xen_read_pmc; 1426 + pv_ops.cpu.load_tr_desc = paravirt_nop; 1427 + pv_ops.cpu.set_ldt = xen_set_ldt; 1428 + pv_ops.cpu.load_gdt = xen_load_gdt; 1429 + pv_ops.cpu.load_idt = xen_load_idt; 1430 + pv_ops.cpu.load_tls = xen_load_tls; 1431 + pv_ops.cpu.load_gs_index = xen_load_gs_index; 1432 + pv_ops.cpu.alloc_ldt = xen_alloc_ldt; 1433 + pv_ops.cpu.free_ldt = xen_free_ldt; 1434 + pv_ops.cpu.store_tr = xen_store_tr; 1435 + pv_ops.cpu.write_ldt_entry = xen_write_ldt_entry; 1436 + pv_ops.cpu.write_gdt_entry = xen_write_gdt_entry; 1437 + pv_ops.cpu.write_idt_entry = xen_write_idt_entry; 1438 + pv_ops.cpu.load_sp0 = xen_load_sp0; 1439 + #ifdef CONFIG_X86_IOPL_IOPERM 1440 + pv_ops.cpu.invalidate_io_bitmap = xen_invalidate_io_bitmap; 1441 + pv_ops.cpu.update_io_bitmap = xen_update_io_bitmap; 1442 + #endif 1443 + pv_ops.cpu.io_delay = xen_io_delay; 1444 + pv_ops.cpu.start_context_switch = xen_start_context_switch; 1445 + pv_ops.cpu.end_context_switch = xen_end_context_switch; 1446 + 1367 1447 xen_init_irq_ops(); 1368 1448 1369 1449 /*
-1
tools/objtool/check.c
··· 570 570 { 571 571 static const char *pv_ops_tables[] = { 572 572 "pv_ops", 573 - "xen_cpu_ops", 574 573 "xen_mmu_ops", 575 574 NULL, 576 575 };