diff --git a/xen/arch/ppc/include/asm/cache.h b/xen/arch/ppc/include/asm/cache.h
index 13c0bf3242c8..8a0a6b7b1756 100644
--- a/xen/arch/ppc/include/asm/cache.h
+++ b/xen/arch/ppc/include/asm/cache.h
@@ -3,7 +3,4 @@
 #ifndef _ASM_PPC_CACHE_H
 #define _ASM_PPC_CACHE_H
 
-/* TODO: Phase out the use of this via cache.h */
-#define __read_mostly __section(".data.read_mostly")
-
 #endif /* _ASM_PPC_CACHE_H */
diff --git a/xen/arch/ppc/mm-radix.c b/xen/arch/ppc/mm-radix.c
index ab5a10695c5f..0a47959e64f2 100644
--- a/xen/arch/ppc/mm-radix.c
+++ b/xen/arch/ppc/mm-radix.c
@@ -2,6 +2,7 @@
 #include <xen/init.h>
 #include <xen/kernel.h>
 #include <xen/mm.h>
+#include <xen/sections.h>
 #include <xen/types.h>
 #include <xen/lib.h>
 
diff --git a/xen/arch/ppc/stubs.c b/xen/arch/ppc/stubs.c
index a10691165b1b..0e7a26dadbc1 100644
--- a/xen/arch/ppc/stubs.c
+++ b/xen/arch/ppc/stubs.c
@@ -3,6 +3,7 @@
 #include <xen/domain.h>
 #include <xen/irq.h>
 #include <xen/nodemask.h>
+#include <xen/sections.h>
 #include <xen/time.h>
 #include <public/domctl.h>
 #include <public/vm_event.h>
diff --git a/xen/common/argo.c b/xen/common/argo.c
index 901f41eb2dbe..df19006744a3 100644
--- a/xen/common/argo.c
+++ b/xen/common/argo.c
@@ -25,6 +25,7 @@
 #include <xen/nospec.h>
 #include <xen/param.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/time.h>
 
 #include <xsm/xsm.h>
diff --git a/xen/common/cpu.c b/xen/common/cpu.c
index 6e35b114c080..f09af0444b6a 100644
--- a/xen/common/cpu.c
+++ b/xen/common/cpu.c
@@ -3,6 +3,7 @@
 #include <xen/event.h>
 #include <xen/init.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/stop_machine.h>
 #include <xen/rcupdate.h>
 
diff --git a/xen/common/debugtrace.c b/xen/common/debugtrace.c
index a272e5e43761..ca883ad9198d 100644
--- a/xen/common/debugtrace.c
+++ b/xen/common/debugtrace.c
@@ -13,6 +13,7 @@
 #include <xen/mm.h>
 #include <xen/param.h>
 #include <xen/percpu.h>
+#include <xen/sections.h>
 #include <xen/serial.h>
 #include <xen/smp.h>
 #include <xen/spinlock.h>
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 67cadb7c3f4f..3db0e0b793f9 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -11,6 +11,7 @@
 #include <xen/err.h>
 #include <xen/param.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/domain.h>
 #include <xen/mm.h>
 #include <xen/event.h>
diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c
index a67feff98976..822b2c982489 100644
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -26,6 +26,8 @@
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
 #include <xen/keyhandler.h>
+#include <xen/sections.h>
+
 #include <asm/current.h>
 
 #include <public/xen.h>
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
index 127ca506965c..674e7be39e9d 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -6,6 +6,7 @@
 #include <xen/delay.h>
 #include <xen/keyhandler.h>
 #include <xen/param.h>
+#include <xen/sections.h>
 #include <xen/shutdown.h>
 #include <xen/event.h>
 #include <xen/console.h>
diff --git a/xen/common/memory.c b/xen/common/memory.c
index de2cc7ad92a5..a6f2f6d1b348 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -23,6 +23,7 @@
 #include <xen/param.h>
 #include <xen/perfc.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/trace.h>
 #include <xen/types.h>
 #include <asm/current.h>
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 054b7edb3989..33c8c917d984 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -134,6 +134,7 @@
 #include <xen/pfn.h>
 #include <xen/types.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/softirq.h>
 #include <xen/spinlock.h>
 
diff --git a/xen/common/pdx.c b/xen/common/pdx.c
index d3d63b075032..b8384e6189df 100644
--- a/xen/common/pdx.c
+++ b/xen/common/pdx.c
@@ -19,6 +19,7 @@
 #include <xen/mm.h>
 #include <xen/bitops.h>
 #include <xen/nospec.h>
+#include <xen/sections.h>
 
 /**
  * Maximum (non-inclusive) usable pdx. Must be
diff --git a/xen/common/radix-tree.c b/xen/common/radix-tree.c
index adc3034222dc..fb283a9d52fc 100644
--- a/xen/common/radix-tree.c
+++ b/xen/common/radix-tree.c
@@ -21,6 +21,7 @@
 #include <xen/init.h>
 #include <xen/radix-tree.h>
 #include <xen/errno.h>
+#include <xen/sections.h>
 
 struct radix_tree_path {
 	struct radix_tree_node *node;
diff --git a/xen/common/random.c b/xen/common/random.c
index a29f2fcb991a..35a9f387fd5c 100644
--- a/xen/common/random.c
+++ b/xen/common/random.c
@@ -1,6 +1,6 @@
-#include <xen/cache.h>
 #include <xen/init.h>
 #include <xen/percpu.h>
+#include <xen/sections.h>
 #include <xen/random.h>
 #include <xen/time.h>
 #include <asm/random.h>
diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c
index 212a99acd8c8..fd5d3d7484a5 100644
--- a/xen/common/rcupdate.c
+++ b/xen/common/rcupdate.c
@@ -35,6 +35,7 @@
 #include <xen/kernel.h>
 #include <xen/init.h>
 #include <xen/param.h>
+#include <xen/sections.h>
 #include <xen/spinlock.h>
 #include <xen/smp.h>
 #include <xen/rcupdate.h>
diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index d84b65f197b3..1a3ff5ae4dec 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -18,6 +18,7 @@
 #include <xen/lib.h>
 #include <xen/param.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/domain.h>
 #include <xen/delay.h>
 #include <xen/event.h>
diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c
index ad8f60846273..57dfee26f21f 100644
--- a/xen/common/sched/cpupool.c
+++ b/xen/common/sched/cpupool.c
@@ -22,6 +22,7 @@
 #include <xen/param.h>
 #include <xen/percpu.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/warning.h>
 
 #include "private.h"
diff --git a/xen/common/sched/credit.c b/xen/common/sched/credit.c
index 020f44595ed0..a6bb321e7da1 100644
--- a/xen/common/sched/credit.c
+++ b/xen/common/sched/credit.c
@@ -12,6 +12,7 @@
 #include <xen/lib.h>
 #include <xen/param.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/domain.h>
 #include <xen/delay.h>
 #include <xen/event.h>
diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c
index 685929c2902b..a7da60f40376 100644
--- a/xen/common/sched/credit2.c
+++ b/xen/common/sched/credit2.c
@@ -14,6 +14,7 @@
 #include <xen/lib.h>
 #include <xen/param.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/domain.h>
 #include <xen/delay.h>
 #include <xen/event.h>
diff --git a/xen/common/shutdown.c b/xen/common/shutdown.c
index 5f8141edc6b2..f413f331af17 100644
--- a/xen/common/shutdown.c
+++ b/xen/common/shutdown.c
@@ -2,6 +2,7 @@
 #include <xen/lib.h>
 #include <xen/param.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/domain.h>
 #include <xen/delay.h>
 #include <xen/watchdog.h>
diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c
index 28c6e9d3ac60..0b877384451d 100644
--- a/xen/common/spinlock.c
+++ b/xen/common/spinlock.c
@@ -5,6 +5,7 @@
 #include <xen/param.h>
 #include <xen/smp.h>
 #include <xen/time.h>
+#include <xen/sections.h>
 #include <xen/spinlock.h>
 #include <xen/guest_access.h>
 #include <xen/preempt.h>
diff --git a/xen/common/timer.c b/xen/common/timer.c
index a21798b76f38..da0d069cc674 100644
--- a/xen/common/timer.c
+++ b/xen/common/timer.c
@@ -11,6 +11,7 @@
 #include <xen/sched.h>
 #include <xen/lib.h>
 #include <xen/param.h>
+#include <xen/sections.h>
 #include <xen/smp.h>
 #include <xen/perfc.h>
 #include <xen/time.h>
diff --git a/xen/common/version.c b/xen/common/version.c
index 80869430fc7c..b7d7d515a3dc 100644
--- a/xen/common/version.c
+++ b/xen/common/version.c
@@ -3,14 +3,13 @@
 #include <xen/init.h>
 #include <xen/errno.h>
 #include <xen/lib.h>
+#include <xen/sections.h>
 #include <xen/string.h>
 #include <xen/types.h>
 #include <xen/efi.h>
 #include <xen/elf.h>
 #include <xen/version.h>
 
-#include <asm/cache.h>
-
 const char *xen_compile_date(void)
 {
     return XEN_COMPILE_DATE;
diff --git a/xen/common/virtual_region.c b/xen/common/virtual_region.c
index 52405d84b25c..1dc2e9f592ed 100644
--- a/xen/common/virtual_region.c
+++ b/xen/common/virtual_region.c
@@ -6,6 +6,7 @@
 #include <xen/kernel.h>
 #include <xen/mm.h>
 #include <xen/rcupdate.h>
+#include <xen/sections.h>
 #include <xen/spinlock.h>
 #include <xen/virtual_region.h>
 
diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index 966a7e763f0f..b3b4ddf65311 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -1,6 +1,6 @@
 #ifdef VMAP_VIRT_START
 #include <xen/bitmap.h>
-#include <xen/cache.h>
+#include <xen/sections.h>
 #include <xen/init.h>
 #include <xen/mm.h>
 #include <xen/pfn.h>
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 3a3a97bcbe3a..7da8c5296f3b 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -32,6 +32,7 @@
 #include <xen/warning.h>
 #include <xen/pv_console.h>
 #include <asm/setup.h>
+#include <xen/sections.h>
 
 #ifdef CONFIG_X86
 #include <xen/consoled.h>
diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c
index 8f76bbe676bc..eaeb0e09d01e 100644
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -22,6 +22,7 @@
 #include <xen/irq.h>
 #include <xen/param.h>
 #include <xen/sched.h>
+#include <xen/sections.h>
 #include <xen/timer.h>
 #include <xen/serial.h>
 #include <xen/iocap.h>
diff --git a/xen/drivers/char/serial.c b/xen/drivers/char/serial.c
index f28d8557c0a5..591a00900869 100644
--- a/xen/drivers/char/serial.c
+++ b/xen/drivers/char/serial.c
@@ -10,8 +10,8 @@
 #include <xen/init.h>
 #include <xen/mm.h>
 #include <xen/param.h>
+#include <xen/sections.h>
 #include <xen/serial.h>
-#include <xen/cache.h>
 
 #include <asm/processor.h>
 
diff --git a/xen/include/xen/cache.h b/xen/include/xen/cache.h
index 82a3ba38e3e7..a19942fd63ef 100644
--- a/xen/include/xen/cache.h
+++ b/xen/include/xen/cache.h
@@ -15,7 +15,7 @@
 #define __cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
 #endif
 
-#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_PPC64)
+#if defined(CONFIG_ARM) || defined(CONFIG_X86)
 /* TODO: Phase out the use of this via cache.h */
 #define __ro_after_init __section(".data.ro_after_init")
 #endif
diff --git a/xen/include/xen/hypfs.h b/xen/include/xen/hypfs.h
index 1b65a9188c6c..d8fcac23b46b 100644
--- a/xen/include/xen/hypfs.h
+++ b/xen/include/xen/hypfs.h
@@ -4,6 +4,7 @@
 #ifdef CONFIG_HYPFS
 #include <xen/lib.h>
 #include <xen/list.h>
+#include <xen/sections.h>
 #include <xen/string.h>
 #include <public/hypfs.h>
 
