A range of functions can't see their declarations, requiring the inclusion of
appropriate headers.
For pv/mm.h and pv/traps.h, this requires adjustements to become standalone.
In pv/mm.h, swap xen/lib.h for xen/bug.h now that ASSERT_UNREACHABLE() has
moved. For pv/traps.h, pv_trap_callback_registered() needs to see a complete
struct vcpu, and xen/sched.h is not something appropriate to pull in
conditionally.
stack-protector.c can't see the declaration of __stack_chk_guard, and fixing
that reveals that stack-protector.h needs get_cycles() too.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: consulting@bugseng.com <consulting@bugseng.com>
CC: Nicola Vetrini <nicola.vetrini@bugseng.com>
---
xen/arch/x86/include/asm/pv/mm.h | 8 +++++++-
xen/arch/x86/include/asm/pv/traps.h | 6 ++----
xen/arch/x86/mm/mem_paging.c | 6 ++++--
xen/arch/x86/pv/emul-gate-op.c | 2 ++
xen/arch/x86/pv/emul-inv-op.c | 1 +
xen/arch/x86/pv/emul-priv-op.c | 1 +
xen/arch/x86/pv/emulate.c | 1 +
xen/arch/x86/pv/grant_table.c | 1 +
xen/arch/x86/pv/mm.c | 1 +
xen/arch/x86/pv/ro-page-fault.c | 1 +
xen/arch/x86/pv/traps.c | 1 +
xen/arch/x86/x86_64/machine_kexec.c | 3 ++-
xen/common/stack-protector.c | 1 +
xen/include/xen/stack-protector.h | 2 ++
14 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/xen/arch/x86/include/asm/pv/mm.h b/xen/arch/x86/include/asm/pv/mm.h
index a5745908206a..11a43f15e222 100644
--- a/xen/arch/x86/include/asm/pv/mm.h
+++ b/xen/arch/x86/include/asm/pv/mm.h
@@ -10,6 +10,12 @@
#ifndef __X86_PV_MM_H__
#define __X86_PV_MM_H__
+#include <xen/stdbool.h>
+
+struct cpu_user_regs;
+struct page_info;
+struct vcpu;
+
#ifdef CONFIG_PV
int pv_ro_page_fault(unsigned long addr, struct cpu_user_regs *regs);
@@ -26,7 +32,7 @@ int validate_segdesc_page(struct page_info *page);
#else
#include <xen/errno.h>
-#include <xen/lib.h>
+#include <xen/bug.h>
static inline int pv_ro_page_fault(unsigned long addr,
struct cpu_user_regs *regs)
diff --git a/xen/arch/x86/include/asm/pv/traps.h b/xen/arch/x86/include/asm/pv/traps.h
index 8c31d5a793c5..8c201190923d 100644
--- a/xen/arch/x86/include/asm/pv/traps.h
+++ b/xen/arch/x86/include/asm/pv/traps.h
@@ -10,9 +10,9 @@
#ifndef __X86_PV_TRAPS_H__
#define __X86_PV_TRAPS_H__
-#ifdef CONFIG_PV
+#include <xen/sched.h>
-#include <public/xen.h>
+#ifdef CONFIG_PV
int pv_raise_nmi(struct vcpu *v);
@@ -28,8 +28,6 @@ static inline bool pv_trap_callback_registered(const struct vcpu *v,
#else /* !CONFIG_PV */
-#include <xen/errno.h>
-
static inline int pv_raise_nmi(struct vcpu *v) { return -EOPNOTSUPP; }
static inline int pv_emulate_privileged_op(struct cpu_user_regs *regs) { return 0; }
diff --git a/xen/arch/x86/mm/mem_paging.c b/xen/arch/x86/mm/mem_paging.c
index d4b3cb990c54..33929b526ab9 100644
--- a/xen/arch/x86/mm/mem_paging.c
+++ b/xen/arch/x86/mm/mem_paging.c
@@ -7,10 +7,12 @@
* Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
*/
-
-#include <asm/p2m.h>
#include <xen/guest_access.h>
#include <xen/vm_event.h>
+
+#include <asm/mem_paging.h>
+#include <asm/p2m.h>
+
#include <xsm/xsm.h>
#include "mm-locks.h"
diff --git a/xen/arch/x86/pv/emul-gate-op.c b/xen/arch/x86/pv/emul-gate-op.c
index 1faf13b962b1..c2c699fbff40 100644
--- a/xen/arch/x86/pv/emul-gate-op.c
+++ b/xen/arch/x86/pv/emul-gate-op.c
@@ -9,6 +9,8 @@
#include <xen/err.h>
+#include <asm/pv/traps.h>
+
#include "emulate.h"
static int read_gate_descriptor(unsigned int gate_sel,
diff --git a/xen/arch/x86/pv/emul-inv-op.c b/xen/arch/x86/pv/emul-inv-op.c
index 346ac1124d7b..23d2928b00cd 100644
--- a/xen/arch/x86/pv/emul-inv-op.c
+++ b/xen/arch/x86/pv/emul-inv-op.c
@@ -8,6 +8,7 @@
*/
#include <asm/pv/trace.h>
+#include <asm/pv/traps.h>
#include "emulate.h"
diff --git a/xen/arch/x86/pv/emul-priv-op.c b/xen/arch/x86/pv/emul-priv-op.c
index 1d9e57ad2763..a3c1fd12621d 100644
--- a/xen/arch/x86/pv/emul-priv-op.c
+++ b/xen/arch/x86/pv/emul-priv-op.c
@@ -21,6 +21,7 @@
#include <asm/mc146818rtc.h>
#include <asm/pv/domain.h>
#include <asm/pv/trace.h>
+#include <asm/pv/traps.h>
#include <asm/shared.h>
#include <asm/stubs.h>
diff --git a/xen/arch/x86/pv/emulate.c b/xen/arch/x86/pv/emulate.c
index 0022e0f55e30..a00d1c6c82eb 100644
--- a/xen/arch/x86/pv/emulate.c
+++ b/xen/arch/x86/pv/emulate.c
@@ -10,6 +10,7 @@
#include <xen/guest_access.h>
#include <asm/debugreg.h>
+#include <asm/pv/domain.h>
#include "emulate.h"
diff --git a/xen/arch/x86/pv/grant_table.c b/xen/arch/x86/pv/grant_table.c
index 247436a0156a..1df68440a24a 100644
--- a/xen/arch/x86/pv/grant_table.c
+++ b/xen/arch/x86/pv/grant_table.c
@@ -12,6 +12,7 @@
#include <public/grant_table.h>
#include <asm/p2m.h>
+#include <asm/pv/grant_table.h>
#include <asm/pv/mm.h>
#include "mm.h"
diff --git a/xen/arch/x86/pv/mm.c b/xen/arch/x86/pv/mm.c
index 187f5f6a3e8c..3f2e9dedcde3 100644
--- a/xen/arch/x86/pv/mm.c
+++ b/xen/arch/x86/pv/mm.c
@@ -12,6 +12,7 @@
#include <asm/current.h>
#include <asm/p2m.h>
+#include <asm/pv/mm.h>
#include "mm.h"
diff --git a/xen/arch/x86/pv/ro-page-fault.c b/xen/arch/x86/pv/ro-page-fault.c
index 9c6f66884675..d89306d34fc6 100644
--- a/xen/arch/x86/pv/ro-page-fault.c
+++ b/xen/arch/x86/pv/ro-page-fault.c
@@ -8,6 +8,7 @@
* Copyright (c) 2004 Christian Limpach
*/
+#include <asm/pv/mm.h>
#include <asm/pv/trace.h>
#include <asm/shadow.h>
diff --git a/xen/arch/x86/pv/traps.c b/xen/arch/x86/pv/traps.c
index 26a468108a77..b0395b99145a 100644
--- a/xen/arch/x86/pv/traps.c
+++ b/xen/arch/x86/pv/traps.c
@@ -16,6 +16,7 @@
#include <asm/idt.h>
#include <asm/irq-vectors.h>
#include <asm/pv/trace.h>
+#include <asm/pv/traps.h>
#include <asm/shared.h>
#include <asm/traps.h>
diff --git a/xen/arch/x86/x86_64/machine_kexec.c b/xen/arch/x86/x86_64/machine_kexec.c
index f4a005cd0c2f..f9e54d86fb53 100644
--- a/xen/arch/x86/x86_64/machine_kexec.c
+++ b/xen/arch/x86/x86_64/machine_kexec.c
@@ -6,8 +6,9 @@
* - Magnus Damm <magnus@valinux.co.jp>
*/
-#include <xen/types.h>
#include <xen/kernel.h>
+#include <xen/kexec.h>
+
#include <asm/page.h>
#include <public/kexec.h>
diff --git a/xen/common/stack-protector.c b/xen/common/stack-protector.c
index 2115912c3bd0..05e57d4509e2 100644
--- a/xen/common/stack-protector.c
+++ b/xen/common/stack-protector.c
@@ -2,6 +2,7 @@
#include <xen/init.h>
#include <xen/lib.h>
#include <xen/random.h>
+#include <xen/stack-protector.h>
#include <xen/time.h>
/*
diff --git a/xen/include/xen/stack-protector.h b/xen/include/xen/stack-protector.h
index 931affd919be..65488bdabced 100644
--- a/xen/include/xen/stack-protector.h
+++ b/xen/include/xen/stack-protector.h
@@ -1,6 +1,8 @@
#ifndef __XEN_STACK_PROTECTOR_H__
#define __XEN_STACK_PROTECTOR_H__
+#include <xen/time.h>
+
extern unsigned long __stack_chk_guard;
/*
--
2.39.5
On 20.02.2026 22:46, Andrew Cooper wrote: > A range of functions can't see their declarations, requiring the inclusion of > appropriate headers. > > For pv/mm.h and pv/traps.h, this requires adjustements to become standalone. > > In pv/mm.h, swap xen/lib.h for xen/bug.h now that ASSERT_UNREACHABLE() has > moved. For pv/traps.h, pv_trap_callback_registered() needs to see a complete > struct vcpu, and xen/sched.h is not something appropriate to pull in > conditionally. > > stack-protector.c can't see the declaration of __stack_chk_guard, and fixing > that reveals that stack-protector.h needs get_cycles() too. > > No functional change. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Jan Beulich <jbeulich@suse.com>
© 2016 - 2026 Red Hat, Inc.