git: a2fbd988638e - main - ifuncs: Include <machine/ifunc.h> instead of <x86/ifunc.h>

From: Olivier Certner <olce_at_FreeBSD.org>
Date: Thu, 01 Oct 2026 19:47:34 UTC
The branch main has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=a2fbd988638e94b61cc78449e893f2c02d43dec0

commit a2fbd988638e94b61cc78449e893f2c02d43dec0
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2026-09-30 13:01:46 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2026-10-01 19:46:53 +0000

    ifuncs: Include <machine/ifunc.h> instead of <x86/ifunc.h>
    
    All architectures have been providing an 'ifunc.h' header with
    DEFINE_IFUNC() et alter working both in kernel and userland since commit
    cf41d1113377 ("riscv: implement kernel ifunc resolution"), and separate
    <i386/ifunc.h> and <amd64/ifunc.h> headers were introduced in commit
    2b1db07bec92 ("x86: add machine/ifunc.h"), so stop including
    <x86/ifunc.h> directly and use the common <machine/ifunc.h> idiom.
    
    While here, re-order includes in the blocks featuring <x86/ifunc.h>,
    which requires fixing <x86/apicvar.h> so that it can be included before
    <machine/intr_machdep.h>.
    
    Reviewed by:    kib
    MFC after:      3 days
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D60194
---
 sys/amd64/amd64/copyout.c              |  2 +-
 sys/amd64/amd64/fpu.c                  |  4 ++--
 sys/amd64/amd64/machdep.c              | 10 +++++-----
 sys/amd64/amd64/pmap.c                 |  8 ++++----
 sys/amd64/linux/linux_machdep.c        |  2 +-
 sys/amd64/linux32/linux32_machdep.c    |  2 +-
 sys/amd64/vmm/vmm.c                    |  8 ++++----
 sys/cddl/dev/dtrace/amd64/dtrace_isa.c |  2 +-
 sys/i386/i386/npx.c                    |  4 ++--
 sys/i386/i386/pmap.c                   |  2 +-
 sys/i386/i386/pmap_base.c              |  2 +-
 sys/libkern/gsb_crc32.c                |  2 +-
 sys/x86/include/apicvar.h              |  3 +++
 sys/x86/x86/cpu_machdep.c              |  4 ++--
 14 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/sys/amd64/amd64/copyout.c b/sys/amd64/amd64/copyout.c
index 7e07cb810c4e..e042c0b18654 100644
--- a/sys/amd64/amd64/copyout.c
+++ b/sys/amd64/amd64/copyout.c
@@ -36,9 +36,9 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
 #include <machine/specialreg.h>
-#include <x86/ifunc.h>
 
 int fubyte_nosmap(volatile const void *base);
 int fubyte_smap(volatile const void *base);
diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c
index 11f9c5b98134..1a63aaf7d4cc 100644
--- a/sys/amd64/amd64/fpu.c
+++ b/sys/amd64/amd64/fpu.c
@@ -51,15 +51,15 @@
 
 #include <machine/cputypes.h>
 #include <machine/frame.h>
+#include <machine/ifunc.h>
 #include <machine/intr_machdep.h>
 #include <machine/md_var.h>
 #include <machine/pcb.h>
 #include <machine/psl.h>
 #include <machine/resource.h>
-#include <machine/specialreg.h>
 #include <machine/segments.h>
+#include <machine/specialreg.h>
 #include <machine/ucontext.h>
-#include <x86/ifunc.h>
 
 /*
  * Floating point support.
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index 099bc7163bde..b5a06efd37e6 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -115,7 +115,11 @@
 #include <machine/clock.h>
 #include <machine/cpu.h>
 #include <machine/cputypes.h>
+#ifdef FDT
+#include <x86/fdt.h>
+#endif
 #include <machine/frame.h>
+#include <machine/ifunc.h>
 #include <machine/intr_machdep.h>
 #include <x86/mca.h>
 #include <machine/md_var.h>
@@ -124,15 +128,11 @@
 #include <machine/pcb.h>
 #include <machine/proc.h>
 #include <machine/sigframe.h>
+#include <machine/smp.h>
 #include <machine/specialreg.h>
 #include <machine/trap.h>
 #include <machine/tss.h>
 #include <x86/ucode.h>
-#include <x86/ifunc.h>
-#include <machine/smp.h>
-#ifdef FDT
-#include <x86/fdt.h>
-#endif
 
 #ifdef DEV_ATPIC
 #include <x86/isa/icu.h>
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 74c1fc0d755e..12c17a8ced64 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -153,17 +153,17 @@
 #include <vm/vm_dumpset.h>
 #include <vm/uma.h>
 
-#include <machine/asan.h>
-#include <machine/intr_machdep.h>
 #include <x86/apicvar.h>
-#include <x86/ifunc.h>
+#include <machine/asan.h>
 #include <machine/cpu.h>
 #include <machine/cputypes.h>
+#include <machine/ifunc.h>
+#include <machine/intr_machdep.h>
 #include <machine/md_var.h>
 #include <machine/msan.h>
 #include <machine/pcb.h>
-#include <machine/specialreg.h>
 #include <machine/smp.h>
+#include <machine/specialreg.h>
 #include <machine/sysarch.h>
 #include <machine/tss.h>
 
diff --git a/sys/amd64/linux/linux_machdep.c b/sys/amd64/linux/linux_machdep.c
index e05f824cbea1..dc7f55f6f198 100644
--- a/sys/amd64/linux/linux_machdep.c
+++ b/sys/amd64/linux/linux_machdep.c
@@ -40,6 +40,7 @@
 #include <sys/ptrace.h>
 #include <sys/syscallsubr.h>
 
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
 #include <machine/pcb.h>
 #include <machine/specialreg.h>
@@ -48,7 +49,6 @@
 #include <vm/vm.h>
 #include <vm/vm_param.h>
 
-#include <x86/ifunc.h>
 #include <x86/reg.h>
 #include <x86/sysarch.h>
 
diff --git a/sys/amd64/linux32/linux32_machdep.c b/sys/amd64/linux32/linux32_machdep.c
index 7f1c85cee201..a9517b42a4d9 100644
--- a/sys/amd64/linux32/linux32_machdep.c
+++ b/sys/amd64/linux32/linux32_machdep.c
@@ -38,9 +38,9 @@
 #include <sys/reg.h>
 #include <sys/syscallsubr.h>
 
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
 #include <machine/specialreg.h>
-#include <x86/ifunc.h>
 
 #include <compat/freebsd32/freebsd32_util.h>
 #include <amd64/linux32/linux.h>
diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c
index cea8ee99609d..fe31e76d600c 100644
--- a/sys/amd64/vmm/vmm.c
+++ b/sys/amd64/vmm/vmm.c
@@ -56,13 +56,13 @@
 #include <vm/swap_pager.h>
 #include <vm/uma.h>
 
+#include <x86/apicreg.h>
 #include <machine/cpu.h>
-#include <machine/pcb.h>
-#include <machine/smp.h>
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
+#include <machine/pcb.h>
 #include <x86/psl.h>
-#include <x86/apicreg.h>
-#include <x86/ifunc.h>
+#include <machine/smp.h>
 
 #include <machine/vmm.h>
 #include <machine/vmm_instruction_emul.h>
diff --git a/sys/cddl/dev/dtrace/amd64/dtrace_isa.c b/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
index f14e90d974bc..a46acaf9e5f2 100644
--- a/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
+++ b/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
@@ -38,7 +38,7 @@
 #include <machine/frame.h>
 #include <machine/md_var.h>
 #include <machine/stack.h>
-#include <x86/ifunc.h>
+#include <machine/ifunc.h>
 
 #include <vm/vm.h>
 #include <vm/vm_param.h>
diff --git a/sys/i386/i386/npx.c b/sys/i386/i386/npx.c
index a81413c291b3..bd8a2fb8a004 100644
--- a/sys/i386/i386/npx.c
+++ b/sys/i386/i386/npx.c
@@ -56,14 +56,14 @@
 #include <machine/asmacros.h>
 #include <machine/cputypes.h>
 #include <machine/frame.h>
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
 #include <machine/pcb.h>
 #include <machine/psl.h>
 #include <machine/resource.h>
-#include <machine/specialreg.h>
 #include <machine/segments.h>
+#include <machine/specialreg.h>
 #include <machine/ucontext.h>
-#include <x86/ifunc.h>
 
 #include <machine/intr_machdep.h>
 
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index efaaf103ab29..3ca917d001dc 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -145,10 +145,10 @@
 #include <machine/intr_machdep.h>
 #include <x86/apicvar.h>
 #endif
-#include <x86/ifunc.h>
 #include <machine/bootinfo.h>
 #include <machine/cpu.h>
 #include <machine/cputypes.h>
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
 #include <machine/pcb.h>
 #include <machine/specialreg.h>
diff --git a/sys/i386/i386/pmap_base.c b/sys/i386/i386/pmap_base.c
index 7a45279775cd..7a1aa03320be 100644
--- a/sys/i386/i386/pmap_base.c
+++ b/sys/i386/i386/pmap_base.c
@@ -95,13 +95,13 @@
 #include <machine/bootinfo.h>
 #include <machine/cpu.h>
 #include <machine/cputypes.h>
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
 #ifdef DEV_APIC
 #include <sys/bus.h>
 #include <machine/intr_machdep.h>
 #include <x86/apicvar.h>
 #endif
-#include <x86/ifunc.h>
 
 static SYSCTL_NODE(_vm, OID_AUTO, pmap, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
     "VM/pmap parameters");
diff --git a/sys/libkern/gsb_crc32.c b/sys/libkern/gsb_crc32.c
index ab8c13d3023c..d1af6af0d01c 100644
--- a/sys/libkern/gsb_crc32.c
+++ b/sys/libkern/gsb_crc32.c
@@ -52,7 +52,7 @@
 #if defined(__amd64__) || defined(__i386__)
 #include <machine/md_var.h>
 #include <machine/specialreg.h>
-#include <x86/ifunc.h>
+#include <machine/ifunc.h>
 #endif
 
 #if defined(__aarch64__)
diff --git a/sys/x86/include/apicvar.h b/sys/x86/include/apicvar.h
index a6116591eb83..1231b8563ab3 100644
--- a/sys/x86/include/apicvar.h
+++ b/sys/x86/include/apicvar.h
@@ -28,6 +28,9 @@
 #ifndef _X86_APICVAR_H_
 #define _X86_APICVAR_H_
 
+/* For inthand_t. */
+#include <machine/intr_machdep.h>
+
 /*
  * Local && I/O APIC variable definitions.
  */
diff --git a/sys/x86/x86/cpu_machdep.c b/sys/x86/x86/cpu_machdep.c
index 422bdf9cfb0d..274c2854b27d 100644
--- a/sys/x86/x86/cpu_machdep.c
+++ b/sys/x86/x86/cpu_machdep.c
@@ -74,8 +74,9 @@
 #include <machine/cpu.h>
 #include <machine/cpufunc.h>
 #include <machine/cputypes.h>
-#include <machine/specialreg.h>
+#include <machine/ifunc.h>
 #include <machine/md_var.h>
+#include <machine/specialreg.h>
 #include <machine/trap.h>
 #include <machine/tss.h>
 #ifdef SMP
@@ -85,7 +86,6 @@
 #include <machine/elan_mmcr.h>
 #endif
 #include <x86/acpica_machdep.h>
-#include <x86/ifunc.h>
 
 #include <vm/vm.h>
 #include <vm/vm_extern.h>