git: a2fbd988638e - main - ifuncs: Include <machine/ifunc.h> instead of <x86/ifunc.h>
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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>