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_mmu_ops

Instead of having a pre-filled array xen_mmu_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-18-jgross@suse.com

authored by

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

+38 -63
+38 -62
arch/x86/xen/mmu_pv.c
··· 2175 2175 preempt_enable(); 2176 2176 } 2177 2177 2178 - static const typeof(pv_ops) xen_mmu_ops __initconst = { 2179 - .mmu = { 2180 - .read_cr2 = __PV_IS_CALLEE_SAVE(xen_read_cr2), 2181 - .write_cr2 = xen_write_cr2, 2182 - 2183 - .read_cr3 = xen_read_cr3, 2184 - .write_cr3 = xen_write_cr3_init, 2185 - 2186 - .flush_tlb_user = xen_flush_tlb, 2187 - .flush_tlb_kernel = xen_flush_tlb, 2188 - .flush_tlb_one_user = xen_flush_tlb_one_user, 2189 - .flush_tlb_multi = xen_flush_tlb_multi, 2190 - 2191 - .pgd_alloc = xen_pgd_alloc, 2192 - .pgd_free = xen_pgd_free, 2193 - 2194 - .alloc_pte = xen_alloc_pte_init, 2195 - .release_pte = xen_release_pte_init, 2196 - .alloc_pmd = xen_alloc_pmd_init, 2197 - .release_pmd = xen_release_pmd_init, 2198 - 2199 - .set_pte = xen_set_pte_init, 2200 - .set_pmd = xen_set_pmd_hyper, 2201 - 2202 - .ptep_modify_prot_start = xen_ptep_modify_prot_start, 2203 - .ptep_modify_prot_commit = xen_ptep_modify_prot_commit, 2204 - 2205 - .pte_val = PV_CALLEE_SAVE(xen_pte_val), 2206 - .pgd_val = PV_CALLEE_SAVE(xen_pgd_val), 2207 - 2208 - .make_pte = PV_CALLEE_SAVE(xen_make_pte_init), 2209 - .make_pgd = PV_CALLEE_SAVE(xen_make_pgd), 2210 - 2211 - .set_pud = xen_set_pud_hyper, 2212 - 2213 - .make_pmd = PV_CALLEE_SAVE(xen_make_pmd), 2214 - .pmd_val = PV_CALLEE_SAVE(xen_pmd_val), 2215 - 2216 - .pud_val = PV_CALLEE_SAVE(xen_pud_val), 2217 - .make_pud = PV_CALLEE_SAVE(xen_make_pud), 2218 - .set_p4d = xen_set_p4d_hyper, 2219 - 2220 - .alloc_pud = xen_alloc_pmd_init, 2221 - .release_pud = xen_release_pmd_init, 2222 - 2223 - .p4d_val = PV_CALLEE_SAVE(xen_p4d_val), 2224 - .make_p4d = PV_CALLEE_SAVE(xen_make_p4d), 2225 - 2226 - .enter_mmap = xen_enter_mmap, 2227 - .exit_mmap = xen_exit_mmap, 2228 - 2229 - .lazy_mode = { 2230 - .enter = xen_enter_lazy_mmu, 2231 - .leave = xen_leave_lazy_mmu, 2232 - .flush = xen_flush_lazy_mmu, 2233 - }, 2234 - 2235 - .set_fixmap = xen_set_fixmap, 2236 - }, 2237 - }; 2238 - 2239 2178 void __init xen_init_mmu_ops(void) 2240 2179 { 2241 2180 x86_init.paging.pagetable_init = xen_pagetable_init; 2242 2181 x86_init.hyper.init_after_bootmem = xen_after_bootmem; 2243 2182 2244 - pv_ops.mmu = xen_mmu_ops.mmu; 2183 + pv_ops.mmu.read_cr2 = __PV_IS_CALLEE_SAVE(xen_read_cr2); 2184 + pv_ops.mmu.write_cr2 = xen_write_cr2; 2185 + pv_ops.mmu.read_cr3 = xen_read_cr3; 2186 + pv_ops.mmu.write_cr3 = xen_write_cr3_init; 2187 + pv_ops.mmu.flush_tlb_user = xen_flush_tlb; 2188 + pv_ops.mmu.flush_tlb_kernel = xen_flush_tlb; 2189 + pv_ops.mmu.flush_tlb_one_user = xen_flush_tlb_one_user; 2190 + pv_ops.mmu.flush_tlb_multi = xen_flush_tlb_multi; 2191 + pv_ops.mmu.pgd_alloc = xen_pgd_alloc; 2192 + pv_ops.mmu.pgd_free = xen_pgd_free; 2193 + pv_ops.mmu.alloc_pte = xen_alloc_pte_init; 2194 + pv_ops.mmu.release_pte = xen_release_pte_init; 2195 + pv_ops.mmu.alloc_pmd = xen_alloc_pmd_init; 2196 + pv_ops.mmu.release_pmd = xen_release_pmd_init; 2197 + pv_ops.mmu.set_pte = xen_set_pte_init; 2198 + pv_ops.mmu.set_pmd = xen_set_pmd_hyper; 2199 + pv_ops.mmu.ptep_modify_prot_start = xen_ptep_modify_prot_start; 2200 + pv_ops.mmu.ptep_modify_prot_commit = xen_ptep_modify_prot_commit; 2201 + pv_ops.mmu.pte_val = PV_CALLEE_SAVE(xen_pte_val); 2202 + pv_ops.mmu.pgd_val = PV_CALLEE_SAVE(xen_pgd_val); 2203 + pv_ops.mmu.make_pte = PV_CALLEE_SAVE(xen_make_pte_init); 2204 + pv_ops.mmu.make_pgd = PV_CALLEE_SAVE(xen_make_pgd); 2205 + pv_ops.mmu.set_pud = xen_set_pud_hyper; 2206 + pv_ops.mmu.make_pmd = PV_CALLEE_SAVE(xen_make_pmd); 2207 + pv_ops.mmu.pmd_val = PV_CALLEE_SAVE(xen_pmd_val); 2208 + pv_ops.mmu.pud_val = PV_CALLEE_SAVE(xen_pud_val); 2209 + pv_ops.mmu.make_pud = PV_CALLEE_SAVE(xen_make_pud); 2210 + pv_ops.mmu.set_p4d = xen_set_p4d_hyper; 2211 + pv_ops.mmu.alloc_pud = xen_alloc_pmd_init; 2212 + pv_ops.mmu.release_pud = xen_release_pmd_init; 2213 + pv_ops.mmu.p4d_val = PV_CALLEE_SAVE(xen_p4d_val); 2214 + pv_ops.mmu.make_p4d = PV_CALLEE_SAVE(xen_make_p4d); 2215 + pv_ops.mmu.enter_mmap = xen_enter_mmap; 2216 + pv_ops.mmu.exit_mmap = xen_exit_mmap; 2217 + pv_ops.mmu.lazy_mode.enter = xen_enter_lazy_mmu; 2218 + pv_ops.mmu.lazy_mode.leave = xen_leave_lazy_mmu; 2219 + pv_ops.mmu.lazy_mode.flush = xen_flush_lazy_mmu; 2220 + pv_ops.mmu.set_fixmap = xen_set_fixmap; 2245 2221 2246 2222 memset(dummy_mapping, 0xff, PAGE_SIZE); 2247 2223 }
-1
tools/objtool/check.c
··· 570 570 { 571 571 static const char *pv_ops_tables[] = { 572 572 "pv_ops", 573 - "xen_mmu_ops", 574 573 NULL, 575 574 }; 576 575 const char *pv_ops;