aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2022-02-18 12:16:25 +0100
committerIngo Molnar <mingo@kernel.org>2022-03-15 12:57:43 +0100
commit1442fbb8b3fb1521aa501c2c14cf41199c60d2a8 (patch)
treed8d58023f72b35e0ee33c0b58036ea8b357ca792
parentc2af92668863ead4d1c74fb681fb04b02afa448a (diff)
downloadtip-1442fbb8b3fb1521aa501c2c14cf41199c60d2a8.tar.gz
headers/deps: Introduce the CONFIG_FAST_HEADERS=y config option
Temporary debug aid only, allows the old dependencies to be restored, in case there's a build failure with the new header dependencies. NOTE: not intended for merging! NOT-Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/include/asm/fpu/api.h11
-rw-r--r--arch/x86/include/asm/local.h3
-rw-r--r--arch/x86/include/asm/page.h4
-rw-r--r--arch/x86/include/asm/pgtable.h19
-rw-r--r--arch/x86/include/asm/processor.h40
-rw-r--r--arch/x86/include/asm/topology.h4
-rw-r--r--include/linux/bvec.h4
-rw-r--r--include/linux/cgroup.h4
-rw-r--r--include/linux/cpumask.h4
-rw-r--r--include/linux/device.h19
-rw-r--r--include/linux/dma-mapping.h9
-rw-r--r--include/linux/dynamic_queue_limits.h4
-rw-r--r--include/linux/etherdevice.h4
-rw-r--r--include/linux/filter.h4
-rw-r--r--include/linux/fs.h36
-rw-r--r--include/linux/gfp.h4
-rw-r--r--include/linux/hardirq.h5
-rw-r--r--include/linux/hashtable.h4
-rw-r--r--include/linux/highmem.h5
-rw-r--r--include/linux/hrtimer.h4
-rw-r--r--include/linux/idr.h4
-rw-r--r--include/linux/if_vlan.h4
-rw-r--r--include/linux/kobject.h4
-rw-r--r--include/linux/kref.h4
-rw-r--r--include/linux/ktime.h4
-rw-r--r--include/linux/list_bl.h4
-rw-r--r--include/linux/list_lru.h4
-rw-r--r--include/linux/llist.h4
-rw-r--r--include/linux/lockdep.h4
-rw-r--r--include/linux/mm.h15
-rw-r--r--include/linux/mmzone.h4
-rw-r--r--include/linux/mutex.h4
-rw-r--r--include/linux/net.h11
-rw-r--r--include/linux/netdevice.h4
-rw-r--r--include/linux/notifier.h4
-rw-r--r--include/linux/of.h4
-rw-r--r--include/linux/percpu_counter.h4
-rw-r--r--include/linux/percpu_rwsem.h4
-rw-r--r--include/linux/perf_event.h4
-rw-r--r--include/linux/ptrace.h4
-rw-r--r--include/linux/rbtree.h4
-rw-r--r--include/linux/refcount.h4
-rw-r--r--include/linux/resource_ext.h4
-rw-r--r--include/linux/rwsem.h4
-rw-r--r--include/linux/scatterlist.h4
-rw-r--r--include/linux/sched.h41
-rw-r--r--include/linux/seccomp.h16
-rw-r--r--include/linux/seqlock.h4
-rw-r--r--include/linux/siphash.h4
-rw-r--r--include/linux/skbuff.h41
-rw-r--r--include/linux/smp.h4
-rw-r--r--include/linux/socket.h4
-rw-r--r--include/linux/spinlock.h4
-rw-r--r--include/linux/swait.h4
-rw-r--r--include/linux/syscalls.h4
-rw-r--r--include/linux/time64.h4
-rw-r--r--include/linux/timerqueue.h4
-rw-r--r--include/linux/u64_stats_sync.h4
-rw-r--r--include/linux/uio.h4
-rw-r--r--include/linux/uuid.h4
-rw-r--r--include/linux/wait.h4
-rw-r--r--include/linux/workqueue.h4
-rw-r--r--include/linux/writeback.h4
-rw-r--r--include/linux/xarray.h4
-rw-r--r--include/net/dst.h4
-rw-r--r--include/net/inet_sock.h4
-rw-r--r--include/net/ip_fib.h4
-rw-r--r--include/net/ipv6.h4
-rw-r--r--include/net/ndisc.h4
-rw-r--r--include/net/neighbour.h4
-rw-r--r--include/net/net_namespace.h4
-rw-r--r--include/net/netlink.h4
-rw-r--r--include/net/route.h4
-rw-r--r--include/net/rtnetlink.h4
-rw-r--r--include/net/sch_generic.h4
-rw-r--r--include/net/sock.h60
-rw-r--r--include/net/xdp.h4
-rw-r--r--init/Kconfig16
78 files changed, 587 insertions, 8 deletions
diff --git a/arch/x86/include/asm/fpu/api.h b/arch/x86/include/asm/fpu/api.h
index 2acf18704c2cd5..089dca9d2780cf 100644
--- a/arch/x86/include/asm/fpu/api.h
+++ b/arch/x86/include/asm/fpu/api.h
@@ -168,3 +168,14 @@ struct task_struct;
extern long fpu_xstate_prctl(struct task_struct *tsk, int option, unsigned long arg2);
#endif /* _ASM_X86_FPU_API_H */
+
+
+#ifndef CONFIG_FAST_HEADERS
+#include <asm/mpspec.h>
+#include <asm/nospec-branch.h>
+#include <asm/pkru.h>
+#include <asm/math_emu.h>
+#include <asm/fsgsbase.h>
+#include <asm/vdso.h>
+#include <asm/unwind_hints.h>
+#endif
diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h
index bde5cf762eabb3..eb902afa388484 100644
--- a/arch/x86/include/asm/local.h
+++ b/arch/x86/include/asm/local.h
@@ -5,3 +5,6 @@
#include <asm/local_types.h>
#endif /* _ASM_X86_LOCAL_H */
+#ifndef CONFIG_FAST_HEADERS
+# include <asm/local_api.h>
+#endif
diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h
index 4d5810c8fab74f..fe6a6344ff4521 100644
--- a/arch/x86/include/asm/page.h
+++ b/arch/x86/include/asm/page.h
@@ -71,6 +71,10 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
extern bool __virt_addr_valid(unsigned long kaddr);
#define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr))
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/mem_encrypt.h>
+#endif
+
#endif /* __ASSEMBLY__ */
#include <asm-generic/memory_model.h>
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 2823086630c4a5..0f8e812eb7e7f9 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -1332,3 +1332,22 @@ bool arch_is_platform_page(u64 paddr);
#endif
#endif /* _ASM_X86_PGTABLE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <asm/ptrace.h>
+# include <asm/tsc.h>
+# include <asm/fpu/api.h>
+# include <linux/cache.h>
+# include <linux/seqlock.h>
+# include <linux/rcupdate.h>
+# include <linux/mutex.h>
+# include <linux/jiffies.h>
+# include <linux/notifier.h>
+# include <linux/llist.h>
+# include <linux/srcu.h>
+# include <linux/smp.h>
+# include <linux/personality.h>
+# include <linux/restart_block.h>
+# include <linux/rwsem.h>
+# include <linux/timex.h>
+#endif
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 4e72644af53d8a..2e6b2f7c3cd70d 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -5,3 +5,43 @@
#include <asm/processor_types.h>
#endif /* _ASM_X86_PROCESSOR_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <asm/cpufeatures.h>
+# include <asm/current.h>
+# include <asm/desc_defs.h>
+# include <asm/fpu/types.h>
+# include <asm/ist.h>
+# include <asm/math_emu.h>
+# include <asm/msr.h>
+# include <asm/nops.h>
+# include <asm/nospec-branch.h>
+# include <asm/page.h>
+# include <asm/paravirt.h>
+# include <asm/percpu.h>
+# include <asm/pgtable_types.h>
+# include <asm/processor_api.h>
+# include <asm/processor-flags.h>
+# include <asm/proto.h>
+# include <asm/ptrace.h>
+# include <asm/segment.h>
+# include <asm/special_insns.h>
+# include <asm/types.h>
+# include <asm/unwind_hints.h>
+# include <asm/vdso/processor.h>
+# include <asm/vmxfeatures.h>
+# include <linux/apm_bios.h>
+# include <linux/cache.h>
+# include <linux/cc_platform.h>
+# include <linux/edd.h>
+# include <linux/err.h>
+# include <linux/init.h>
+# include <linux/irqflags.h>
+# include <linux/math64.h>
+# include <linux/mem_encrypt.h>
+# include <linux/minmax.h>
+# include <linux/personality.h>
+# include <linux/screen_info.h>
+# include <linux/threads.h>
+# include <uapi/asm/sigcontext.h>
+#endif
diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index c519561fce6644..48e37425420d56 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -224,3 +224,7 @@ void init_freq_invariance_cppc(void);
#endif
#endif /* _ASM_X86_TOPOLOGY_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <asm/mpspec.h>
+#endif
diff --git a/include/linux/bvec.h b/include/linux/bvec.h
index af7c8c3e910934..045086d0785cdd 100644
--- a/include/linux/bvec.h
+++ b/include/linux/bvec.h
@@ -10,3 +10,7 @@
#include <linux/bvec_types.h>
#endif /* __LINUX_BVEC_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/bvec_api.h>
+#endif
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 28c2194d47364d..e2373e0cd9384c 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -5,3 +5,7 @@
#include <linux/cgroup_types.h>
#endif /* _LINUX_CGROUP_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/cgroup_api.h>
+#endif
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 4f760aa32e608b..43c3c7f5c94953 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -5,3 +5,7 @@
#include <linux/cpumask_types.h>
#endif /* __LINUX_CPUMASK_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/cpumask_api.h>
+#endif
diff --git a/include/linux/device.h b/include/linux/device.h
index 3a95cd321e44e2..f4427dcd3c2013 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -5,3 +5,22 @@
#include <linux/device_types.h>
#endif /* _DEVICE_H_ */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/device_api.h>
+# include <linux/module.h>
+# include <linux/fwnode.h>
+# include <linux/energy_model.h>
+# include <linux/sched/topology.h>
+# include <linux/error-injection.h>
+# include <linux/memory_hotplug.h>
+# include <linux/mmzone.h>
+# include <linux/notifier.h>
+# include <linux/rbtree_latch.h>
+# include <linux/rwsem.h>
+# include <linux/sched/cpufreq.h>
+# include <linux/srcu.h>
+# include <linux/sysfs.h>
+# include <linux/uprobes.h>
+# include <linux/xarray.h>
+#endif
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 908501bcd27a7a..a56795d6a47818 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -3,8 +3,8 @@
#define _LINUX_DMA_MAPPING_H
#include <linux/sizes.h>
-#include <linux/device_types.h>
-#include <linux/gfp_types.h>
+#include <linux/device.h>
+#include <linux/gfp.h>
#include <linux/minmax.h>
#include <linux/limits.h>
#include <linux/err.h>
@@ -583,3 +583,8 @@ static inline int dma_mmap_wc(struct device *dev,
#endif
#endif /* _LINUX_DMA_MAPPING_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/device.h>
+# include <linux/mem_encrypt.h>
+#endif
diff --git a/include/linux/dynamic_queue_limits.h b/include/linux/dynamic_queue_limits.h
index d4b906559ea6c0..9bb98a00e72a2a 100644
--- a/include/linux/dynamic_queue_limits.h
+++ b/include/linux/dynamic_queue_limits.h
@@ -5,3 +5,7 @@
#include <linux/dynamic_queue_limits_types.h>
#endif /* _LINUX_DQL_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/dynamic_queue_limits_api.h>
+#endif
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
index 3c2799f90169dd..807667d7594c9d 100644
--- a/include/linux/etherdevice.h
+++ b/include/linux/etherdevice.h
@@ -5,3 +5,7 @@
#include <linux/etherdevice_types.h>
#endif /* _LINUX_ETHERDEVICE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/etherdevice_api.h>
+#endif
diff --git a/include/linux/filter.h b/include/linux/filter.h
index d11bbc639e7526..9dafc9a6a2ff38 100644
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -8,3 +8,7 @@
#include <linux/filter_types.h>
#endif /* __LINUX_FILTER_H__ */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/filter_api.h>
+#endif
diff --git a/include/linux/fs.h b/include/linux/fs.h
index dcaa486ec838e7..c42612bee2d15e 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -5,3 +5,39 @@
#include <linux/fs_types.h>
#endif /* _LINUX_FS_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/fs_api.h>
+# include <linux/sched.h>
+# include <linux/rcuwait.h>
+# include <linux/sched/jobctl.h>
+# include <linux/sched/signal.h>
+# include <linux/sched/rt.h>
+# include <linux/sched/task.h>
+# include <linux/sched/user.h>
+# include <linux/bit_spinlock.h>
+# include <linux/delayed_call.h>
+# include <linux/hash.h>
+# include <linux/iocontext.h>
+# include <linux/ioprio.h>
+# include <linux/list_bl.h>
+# include <linux/list_lru.h>
+# include <linux/local_lock.h>
+# include <linux/memory_hotplug.h>
+# include <linux/mmzone.h>
+# include <linux/notifier.h>
+# include <linux/quota.h>
+# include <linux/radix-tree.h>
+# include <linux/rculist_bl.h>
+# include <linux/rcu_sync.h>
+# include <linux/seccomp.h>
+# include <linux/semaphore.h>
+# include <linux/shrinker.h>
+# include <linux/srcu.h>
+# include <linux/sysctl.h>
+# include <linux/uuid.h>
+# include <linux/wait_bit.h>
+# include <linux/xarray.h>
+# include <linux/dcache.h>
+# include <linux/stringhash.h>
+#endif
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index af925be9ba71e1..4702c82dddabad 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -5,3 +5,7 @@
#include <linux/gfp_types.h>
#endif /* __LINUX_GFP_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/gfp_api.h>
+#endif
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
index ef2a5b0e47df6a..7a708a7bb13d10 100644
--- a/include/linux/hardirq.h
+++ b/include/linux/hardirq.h
@@ -159,3 +159,8 @@ extern void rcu_nmi_exit(void);
} while (0)
#endif /* LINUX_HARDIRQ_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/vtime.h>
+# include <linux/siphash.h>
+#endif
diff --git a/include/linux/hashtable.h b/include/linux/hashtable.h
index eb2de56fbef99b..b0c38c4e14c93a 100644
--- a/include/linux/hashtable.h
+++ b/include/linux/hashtable.h
@@ -5,3 +5,7 @@
#include <linux/hashtable_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/hashtable_api.h>
+#endif
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index f9780db178ef5b..5dfc735c599c51 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -152,3 +152,8 @@ void *kmap_atomic(struct page *page);
*/
#endif /* _LINUX_HIGHMEM_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/hardirq.h>
+# include <linux/cacheflush.h>
+#endif
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 6e1e1f756466e6..0b82004db45cc6 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -5,3 +5,7 @@
#include <linux/hrtimer_types.h>
#endif /* __LINUX_HRTIMER_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/hrtimer_api.h>
+#endif
diff --git a/include/linux/idr.h b/include/linux/idr.h
index f405db422dd3a9..d17f26787baa6b 100644
--- a/include/linux/idr.h
+++ b/include/linux/idr.h
@@ -5,3 +5,7 @@
#include <linux/idr_types.h>
#endif /* __LINUX_IDR_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/idr_api.h>
+#endif
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 5519834c232ff1..c7f852880fdb69 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -5,3 +5,7 @@
#include <linux/if_vlan_types.h>
#endif /* !(_LINUX_IF_VLAN_H_) */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/if_vlan_api.h>
+#endif
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index 20eafe9f682b7f..f419ced9213c2e 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -5,3 +5,7 @@
#include <linux/kobject_types.h>
#endif /* _KOBJECT_H_ */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/kobject_api.h>
+#endif
diff --git a/include/linux/kref.h b/include/linux/kref.h
index a2ea825f01bcf0..c38ed6f2ea7195 100644
--- a/include/linux/kref.h
+++ b/include/linux/kref.h
@@ -5,3 +5,7 @@
#include <linux/kref_types.h>
#endif /* __LINUX_KREF_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/kref_api.h>
+#endif
diff --git a/include/linux/ktime.h b/include/linux/ktime.h
index 20bf8cefad2cc3..ed99be42d64856 100644
--- a/include/linux/ktime.h
+++ b/include/linux/ktime.h
@@ -5,3 +5,7 @@
#include <linux/ktime_types.h>
#endif /* __LINUX_KTIME_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/ktime_api.h>
+#endif
diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h
index 4a5a75980815c5..37b04e11e9d681 100644
--- a/include/linux/list_bl.h
+++ b/include/linux/list_bl.h
@@ -5,3 +5,7 @@
#include <linux/list_bl_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/list_bl_api.h>
+#endif
diff --git a/include/linux/list_lru.h b/include/linux/list_lru.h
index d1d24bce020a2e..2b6a73e39044c4 100644
--- a/include/linux/list_lru.h
+++ b/include/linux/list_lru.h
@@ -5,3 +5,7 @@
#include <linux/list_lru_types.h>
#endif /* _LINUX_LIST_LRU_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/list_lru_api.h>
+#endif
diff --git a/include/linux/llist.h b/include/linux/llist.h
index 4825b3715337bc..41508d7d761a91 100644
--- a/include/linux/llist.h
+++ b/include/linux/llist.h
@@ -5,3 +5,7 @@
#include <linux/llist_types.h>
#endif /* LLIST_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/llist_api.h>
+#endif
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index 8f76c47aa1eea9..f3af046156d69c 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -13,3 +13,7 @@
#include <linux/lockdep_types.h>
#endif /* __LINUX_LOCKDEP_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/lockdep_api.h>
+#endif
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 6e9d83afdc8dc2..72abc520e70c7a 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -5,3 +5,18 @@
#include <linux/mm_types.h>
#endif /* _LINUX_MM_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/mm_api.h>
+# include <linux/fs.h>
+# include <linux/sched.h>
+# include <linux/mmzone_api.h>
+# include <linux/rcuwait.h>
+# include <linux/huge_mm.h>
+# include <linux/pgtable.h>
+# include <linux/pgtable_api.h>
+# include <linux/memory_hotplug.h>
+# include <linux/memremap.h>
+# include <linux/vmstat.h>
+# include <linux/mmap_lock.h>
+#endif
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 855794c582c30d..0ad1aa07745563 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -5,3 +5,7 @@
#include <linux/mmzone_types.h>
#endif /* _LINUX_MMZONE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/mmzone_api.h>
+#endif
diff --git a/include/linux/mutex.h b/include/linux/mutex.h
index 23da1eb38a6f28..ada7a3288d05fa 100644
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
@@ -14,3 +14,7 @@
#include <linux/mutex_types.h>
#endif /* __LINUX_MUTEX_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/mutex_api.h>
+#endif
diff --git a/include/linux/net.h b/include/linux/net.h
index 96c13eb9277015..90f7bb5290d76c 100644
--- a/include/linux/net.h
+++ b/include/linux/net.h
@@ -335,3 +335,14 @@ u32 kernel_sock_ip_overhead(struct sock *sk);
MODULE_ALIAS("net-pf-" __stringify(pf) "-proto-" __stringify(proto) \
name)
#endif /* _LINUX_NET_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/stringify.h>
+# include <linux/wait.h>
+# include <linux/fcntl.h>
+# include <linux/rcupdate.h>
+# include <linux/once.h>
+# include <linux/fs.h>
+# include <linux/mm.h>
+# include <linux/sockptr.h>
+#endif
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 244f6cfed51e29..f34930dad9299b 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -5,3 +5,7 @@
#include <linux/netdevice_types.h>
#endif /* _LINUX_NETDEVICE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/netdevice_api.h>
+#endif
diff --git a/include/linux/notifier.h b/include/linux/notifier.h
index 4bb73f4d11ba38..a82a46b143286c 100644
--- a/include/linux/notifier.h
+++ b/include/linux/notifier.h
@@ -5,3 +5,7 @@
#include <linux/notifier_types.h>
#endif /* _LINUX_NOTIFIER_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/notifier_api.h>
+#endif
diff --git a/include/linux/of.h b/include/linux/of.h
index 33a170d5a145d3..258242ef1e74a8 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -5,3 +5,7 @@
#include <linux/of_types.h>
#endif /* _LINUX_OF_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/of_api.h>
+#endif
diff --git a/include/linux/percpu_counter.h b/include/linux/percpu_counter.h
index 813fe718087f1a..3972aadf9817e1 100644
--- a/include/linux/percpu_counter.h
+++ b/include/linux/percpu_counter.h
@@ -5,3 +5,7 @@
#include <linux/percpu_counter_types.h>
#endif /* __LINUX_PERCPU_COUNTER_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/percpu_counter_api.h>
+#endif
diff --git a/include/linux/percpu_rwsem.h b/include/linux/percpu_rwsem.h
index a5e186cc61dd47..df7891812c6759 100644
--- a/include/linux/percpu_rwsem.h
+++ b/include/linux/percpu_rwsem.h
@@ -5,3 +5,7 @@
#include <linux/percpu_rwsem_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/percpu_rwsem_api.h>
+#endif
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 1a6569f4488258..24d9d72dd18910 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -17,3 +17,7 @@
#include <linux/perf_event_types.h>
#endif /* _LINUX_PERF_EVENT_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/perf_event_api.h>
+#endif
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
index baa8785b21ae86..1147158f16c070 100644
--- a/include/linux/ptrace.h
+++ b/include/linux/ptrace.h
@@ -5,3 +5,7 @@
#include <linux/ptrace_types.h>
#endif /* _LINUX_PTRACE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/ptrace_api.h>
+#endif
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h
index 863821b4947de5..63d097b2f1d0fe 100644
--- a/include/linux/rbtree.h
+++ b/include/linux/rbtree.h
@@ -5,3 +5,7 @@
#include <linux/rbtree_types.h>
#endif /* __LINUX_RBTREE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/rbtree_api.h>
+#endif
diff --git a/include/linux/refcount.h b/include/linux/refcount.h
index a366e2cf20ab92..a733e62b777f6d 100644
--- a/include/linux/refcount.h
+++ b/include/linux/refcount.h
@@ -5,3 +5,7 @@
#include <linux/refcount_types.h>
#endif /* _LINUX_REFCOUNT_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/refcount_api.h>
+#endif
diff --git a/include/linux/resource_ext.h b/include/linux/resource_ext.h
index 9adb230c3a4eb4..b9c765b14b4b90 100644
--- a/include/linux/resource_ext.h
+++ b/include/linux/resource_ext.h
@@ -9,3 +9,7 @@
#include <linux/resource_ext_types.h>
#endif /* _LINUX_RESOURCE_EXT_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/resource_ext_api.h>
+#endif
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index 56856ec54f505e..ee89a31c7eef61 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -5,3 +5,7 @@
#include <linux/rwsem_types.h>
#endif /* _LINUX_RWSEM_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/rwsem_api.h>
+#endif
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
index a0e601550c5c6d..9d5a7fc2c8dc9e 100644
--- a/include/linux/scatterlist.h
+++ b/include/linux/scatterlist.h
@@ -5,3 +5,7 @@
#include <linux/scatterlist_types.h>
#endif /* _LINUX_SCATTERLIST_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/scatterlist_api.h>
+#endif
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 61f46cd2eceba8..8b45921d80e313 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1,3 +1,8 @@
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/thread_info.h>
+# include <linux/seccomp.h>
+#endif
+
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_H
#define _LINUX_SCHED_H
@@ -1088,3 +1093,39 @@ extern bool sched_task_on_rq(struct task_struct *p);
extern unsigned long get_wchan(struct task_struct *p);
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <asm/processor.h>
+# include <asm/ptrace.h>
+# include <linux/sched/thread_info_api.h>
+# include <linux/wait_api.h>
+# include <linux/hrtimer_api.h>
+# include <linux/rcupdate.h>
+# include <linux/sched/cond_resched.h>
+# include <linux/sched/thread.h>
+# include <linux/sched/types.h>
+# include <linux/debugobjects.h>
+# include <linux/timex.h>
+# include <linux/osq_lock.h>
+# include <linux/alarmtimer.h>
+# include <linux/ipc.h>
+# include <linux/sem.h>
+# include <linux/shm.h>
+# include <linux/debug_locks.h>
+# include <linux/apm_bios.h>
+# include <linux/kcsan.h>
+# include <linux/llist.h>
+# include <linux/pid.h>
+# include <linux/resource.h>
+# include <linux/restart_block.h>
+# include <linux/plist.h>
+# include <linux/jiffies.h>
+# include <linux/objtool.h>
+# include <linux/personality.h>
+# include <linux/posix-timers.h>
+# include <linux/task_work.h>
+# include <linux/numa.h>
+# include <linux/nodemask.h>
+# include <linux/smp.h>
+# include <linux/mmdebug.h>
+#endif
diff --git a/include/linux/seccomp.h b/include/linux/seccomp.h
index 8dfcb688b25310..77f22694f9a401 100644
--- a/include/linux/seccomp.h
+++ b/include/linux/seccomp.h
@@ -10,12 +10,16 @@
#ifdef CONFIG_HAVE_ARCH_SECCOMP_FILTER
extern int __secure_computing(const struct seccomp_data *sd);
-static inline int secure_computing(void)
-{
- if (unlikely(test_syscall_work(SECCOMP)))
- return __secure_computing(NULL);
- return 0;
-}
+#define secure_computing(void) \
+({ \
+ int __ret; \
+ \
+ if (unlikely(test_syscall_work(SECCOMP))) \
+ __ret = __secure_computing(NULL); \
+ else \
+ __ret = 0; \
+ __ret; \
+})
#else
extern void secure_computing_strict(int this_syscall);
#endif
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
index 2c50965d5074f0..e20562569cac82 100644
--- a/include/linux/seqlock.h
+++ b/include/linux/seqlock.h
@@ -5,3 +5,7 @@
#include <linux/seqlock_types.h>
#endif /* __LINUX_SEQLOCK_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/seqlock_api.h>
+#endif
diff --git a/include/linux/siphash.h b/include/linux/siphash.h
index 6bba6d02f6074e..18360378d157b6 100644
--- a/include/linux/siphash.h
+++ b/include/linux/siphash.h
@@ -16,3 +16,7 @@
#include <linux/siphash_types.h>
#endif /* _LINUX_SIPHASH_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/siphash_api.h>
+#endif
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 351668c9a4e591..083ec64d512767 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -5,3 +5,44 @@
#include <linux/skbuff_types.h>
#endif /* _LINUX_SKBUFF_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/atomic.h>
+# include <linux/bug.h>
+# include <linux/bvec.h>
+# include <linux/cache.h>
+# include <linux/compiler.h>
+# include <linux/dma-mapping.h>
+# include <linux/fs.h>
+# include <linux/highmem.h>
+# include <linux/hrtimer.h>
+# include <linux/huge_mm.h>
+# include <linux/if_packet.h>
+# include <linux/in6.h>
+# include <linux/kernel.h>
+# include <linux/mm.h>
+# include <linux/mmzone.h>
+# include <linux/netdev_features.h>
+# include <linux/net.h>
+# include <linux/random.h>
+# include <linux/rbtree.h>
+# include <linux/rcupdate.h>
+# include <linux/rcuwait.h>
+# include <linux/refcount.h>
+# include <linux/sched/clock.h>
+# include <linux/sched.h>
+# include <linux/socket.h>
+# include <linux/spinlock.h>
+# include <linux/splice.h>
+# include <linux/sysfs.h>
+# include <linux/textsearch.h>
+# include <linux/time.h>
+# include <linux/vmalloc.h>
+# include <net/checksum.h>
+# include <net/flow_dissector.h>
+# include <net/flow.h>
+# include <net/page_pool.h>
+#if IS_ENABLED(CONFIG_NF_CONNTRACK)
+# include <linux/netfilter/nf_conntrack_common.h>
+#endif
+#endif
diff --git a/include/linux/smp.h b/include/linux/smp.h
index bf07a07593e264..91029712048b7a 100644
--- a/include/linux/smp.h
+++ b/include/linux/smp.h
@@ -5,3 +5,7 @@
#include <linux/smp_types.h>
#endif /* __LINUX_SMP_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/smp_api.h>
+#endif
diff --git a/include/linux/socket.h b/include/linux/socket.h
index f5e4cf55cd1090..a9b7aedcd921e2 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -429,3 +429,7 @@ extern int __sys_socketpair(int family, int type, int protocol,
extern int __sys_shutdown_sock(struct socket *sock, int how);
extern int __sys_shutdown(int fd, int how);
#endif /* _LINUX_SOCKET_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/uio.h>
+#endif
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
index e4bec5377db9f5..cbd63317358cfc 100644
--- a/include/linux/spinlock.h
+++ b/include/linux/spinlock.h
@@ -5,3 +5,7 @@
#include <linux/spinlock_types.h>
#endif /* __LINUX_SPINLOCK_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/spinlock_api.h>
+#endif
diff --git a/include/linux/swait.h b/include/linux/swait.h
index 89ea61c015b6fd..bc3ce286230814 100644
--- a/include/linux/swait.h
+++ b/include/linux/swait.h
@@ -5,3 +5,7 @@
#include <linux/swait_types.h>
#endif /* __LINUX_SWAIT_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/swait_api.h>
+#endif
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index c41281620bfff6..b2487d4af57c76 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -5,3 +5,7 @@
#include <linux/syscalls_types.h>
#endif /* __LINUX_SYSCALLS_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/syscalls_api.h>
+#endif
diff --git a/include/linux/time64.h b/include/linux/time64.h
index 12a1d04209049c..f3e90abec1281b 100644
--- a/include/linux/time64.h
+++ b/include/linux/time64.h
@@ -5,3 +5,7 @@
#include <linux/time64_types.h>
#endif /* _LINUX_TIME64_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/time64_api.h>
+#endif
diff --git a/include/linux/timerqueue.h b/include/linux/timerqueue.h
index 12462cbc541214..1a7c0afa2a72c3 100644
--- a/include/linux/timerqueue.h
+++ b/include/linux/timerqueue.h
@@ -5,3 +5,7 @@
#include <linux/timerqueue_types.h>
#endif /* _LINUX_TIMERQUEUE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/timerqueue_api.h>
+#endif
diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h
index c60177d96643b6..114ee4567d569e 100644
--- a/include/linux/u64_stats_sync.h
+++ b/include/linux/u64_stats_sync.h
@@ -5,3 +5,7 @@
#include <linux/u64_stats_sync_types.h>
#endif /* _LINUX_U64_STATS_SYNC_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/u64_stats_sync_api.h>
+#endif
diff --git a/include/linux/uio.h b/include/linux/uio.h
index 3748d79a98a044..00512c7fae5f30 100644
--- a/include/linux/uio.h
+++ b/include/linux/uio.h
@@ -5,3 +5,7 @@
#include <linux/uio_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/uio_api.h>
+#endif
diff --git a/include/linux/uuid.h b/include/linux/uuid.h
index c4173d9df798bd..5743e7b908b634 100644
--- a/include/linux/uuid.h
+++ b/include/linux/uuid.h
@@ -11,3 +11,7 @@
#include <linux/uuid_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/uuid_api.h>
+#endif
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 74b324c506a409..ca73ef9fbfcbc4 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -5,3 +5,7 @@
#include <linux/wait_types.h>
#endif /* _LINUX_WAIT_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/wait_api.h>
+#endif
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index a8c321f44d49de..1e753c8b97a5e2 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -5,3 +5,7 @@
#include <linux/workqueue_types.h>
#endif /* __LINUX_WORKQUEUE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/workqueue_api.h>
+#endif
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index 2a05a656dd7248..b7f4c2b87649a1 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -5,3 +5,7 @@
#include <linux/writeback_types.h>
#endif /* __LINUX_WRITEBACK_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/writeback_api.h>
+#endif
diff --git a/include/linux/xarray.h b/include/linux/xarray.h
index 66bb8074a82d52..c30ef0aae04410 100644
--- a/include/linux/xarray.h
+++ b/include/linux/xarray.h
@@ -5,3 +5,7 @@
#include <linux/xarray_types.h>
#endif /* _LINUX_XARRAY_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/xarray_api.h>
+#endif
diff --git a/include/net/dst.h b/include/net/dst.h
index ce8a4fc253f603..a0f5c3836015d4 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -5,3 +5,7 @@
#include <net/dst_types.h>
#endif /* _NET_DST_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/dst_api.h>
+#endif
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
index f99e54d35a148c..d2fab6e0fba34c 100644
--- a/include/net/inet_sock.h
+++ b/include/net/inet_sock.h
@@ -5,3 +5,7 @@
#include <net/inet_sock_types.h>
#endif /* _INET_SOCK_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/inet_sock_api.h>
+#endif
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
index 1fd39148fee485..34bd8427bc476b 100644
--- a/include/net/ip_fib.h
+++ b/include/net/ip_fib.h
@@ -5,3 +5,7 @@
#include <net/ip_fib_types.h>
#endif /* _NET_IF_FIB_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/ip_fib_api.h>
+#endif
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 5d720638f5ae0e..4f332edc18e839 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -5,3 +5,7 @@
#include <net/ipv6_types.h>
#endif /* _NET_IPV6_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/ipv6_api.h>
+#endif
diff --git a/include/net/ndisc.h b/include/net/ndisc.h
index 707eade47cc36f..a1b2309783642f 100644
--- a/include/net/ndisc.h
+++ b/include/net/ndisc.h
@@ -5,3 +5,7 @@
#include <net/ndisc_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/ndisc_api.h>
+#endif
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index 5aeca18118aa45..61563bb5c561df 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -5,3 +5,7 @@
#include <net/neighbour_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/neighbour_api.h>
+#endif
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
index 4948175905cd04..43554bfbaeef28 100644
--- a/include/net/net_namespace.h
+++ b/include/net/net_namespace.h
@@ -8,3 +8,7 @@
#include <net/net_namespace_types.h>
#endif /* __NET_NET_NAMESPACE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/net_namespace_api.h>
+#endif
diff --git a/include/net/netlink.h b/include/net/netlink.h
index 47b1e3c8f34b52..9038f25ce95fcf 100644
--- a/include/net/netlink.h
+++ b/include/net/netlink.h
@@ -5,3 +5,7 @@
#include <net/netlink_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/netlink_api.h>
+#endif
diff --git a/include/net/route.h b/include/net/route.h
index 638fb9f6aa7c24..ce8f8d1644c5b3 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -5,3 +5,7 @@
#include <net/route_types.h>
#endif /* _ROUTE_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/route_api.h>
+#endif
diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h
index 4c445e60f91179..0ef8e1797184b6 100644
--- a/include/net/rtnetlink.h
+++ b/include/net/rtnetlink.h
@@ -5,3 +5,7 @@
#include <net/rtnetlink_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/rtnetlink_api.h>
+#endif
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 3e3a1cb6b250d2..6762a603a5d503 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -5,3 +5,7 @@
#include <net/sch_generic_types.h>
#endif
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/sch_generic_api.h>
+#endif
diff --git a/include/net/sock.h b/include/net/sock.h
index cc22303bbaef62..0337988f0add65 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -5,3 +5,63 @@
#include <net/sock_types.h>
#endif /* _SOCK_H */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <linux/bio.h>
+# include <linux/bpf-cgroup.h>
+# include <linux/cgroup.h>
+# include <linux/compat.h>
+# include <linux/cred.h>
+# include <linux/delay.h>
+# include <linux/dma-mapping.h>
+# include <linux/eventfd.h>
+# include <linux/filter.h>
+# include <linux/flex_proportions.h>
+# include <linux/freezer.h>
+# include <linux/fs.h>
+# include <linux/huge_mm.h>
+# include <linux/if_link.h>
+# include <linux/if_vlan.h>
+# include <linux/interrupt.h>
+# include <linux/iocontext.h>
+# include <linux/ioport.h>
+# include <linux/ioprio.h>
+# include <linux/kthread.h>
+# include <linux/list_bl.h>
+# include <linux/list_lru.h>
+# include <linux/memcontrol.h>
+# include <linux/mempool.h>
+# include <linux/mmap_lock.h>
+# include <linux/mm.h>
+# include <linux/mmzone.h>
+# include <linux/netdevice.h>
+# include <linux/nsproxy.h>
+# include <linux/poll.h>
+# include <linux/rbtree_latch.h>
+# include <linux/rcu_sync.h>
+# include <linux/rcuwait.h>
+# include <linux/sched/mm.h>
+# include <linux/sched/signal.h>
+# include <linux/seq_file.h>
+# include <linux/seq_file_net.h>
+# include <linux/skbuff.h>
+# include <linux/srcu.h>
+# include <linux/swap.h>
+# include <linux/uaccess.h>
+# include <linux/uio.h>
+# include <linux/user_namespace.h>
+# include <linux/vmstat.h>
+# include <linux/vtime.h>
+# include <linux/writeback.h>
+# include <net/dcbnl.h>
+# include <net/fib_notifier.h>
+# include <net/fib_rules.h>
+# include <net/inet_frag.h>
+# include <net/l3mdev.h>
+# include <net/neighbour.h>
+# include <net/netlink.h>
+# include <net/net_namespace.h>
+# include <net/netprio_cgroup.h>
+# include <net/scm.h>
+# include <net/sock_api.h>
+#endif
diff --git a/include/net/xdp.h b/include/net/xdp.h
index cb1c138c9148d5..40b0aa9cfc9661 100644
--- a/include/net/xdp.h
+++ b/include/net/xdp.h
@@ -5,3 +5,7 @@
#include <net/xdp_types.h>
#endif /* __LINUX_NET_XDP_H__ */
+
+#ifndef CONFIG_FAST_HEADERS
+# include <net/xdp_api.h>
+#endif
diff --git a/init/Kconfig b/init/Kconfig
index e962b847ee4daa..202e3a2e4284da 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -693,6 +693,22 @@ config IKCONFIG
It can also be extracted from a running kernel by reading
/proc/config.gz if enabled (below).
+config FAST_HEADERS
+ bool "Fast headers support" if COMPILE_TEST
+ default y
+ help
+ This option enables the 'fast headers' build feature, which produces
+ the exact same kernel, but with up to 70%-80% faster build time.
+
+ Since the new headers have much fewer dependencies, the chance
+ of build breakage is higher, and some architectures do not work.
+
+ Disabling this feature on a kernel that builds fine will slow down
+ the kernel build.
+
+ If unsure, leave this enabled, otherwise disable this if you see
+ a build failure with the fast-headers build.
+
config IKCONFIG_PROC
bool "Enable access to .config through /proc/config.gz"
depends on IKCONFIG && PROC_FS