From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> It seems that <linux/interrupt.h> does not need <linux/linkage.h> nor <linux/preempt.h>. 8 kernels builds are successful without these 2 headers (allmodconfig, allyesconfig, allnoconfig, and tinyconfig on both i386 and x86_64). <linux/interrupt.h> is #included 3875 times in 4.16-rc1, so this reduces #include processing of these 2 files by a total of 7750 times. Since I only tested x86 builds, this needs to be tested on other $ARCHes as well. Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> --- Does anyone know or see why <linux/interrupt.h> needs <linux/linkage.h> or <linux/preempt.h>? There are no direct uses in <linux/interrupt.h> AFAICT. include/linux/interrupt.h | 2 -- 1 file changed, 2 deletions(-) --- lnx-416-rc1.orig/include/linux/interrupt.h +++ lnx-416-rc1/include/linux/interrupt.h @@ -4,9 +4,7 @@ #define _LINUX_INTERRUPT_H #include <linux/kernel.h> -#include <linux/linkage.h> #include <linux/bitops.h> -#include <linux/preempt.h> #include <linux/cpumask.h> #include <linux/irqreturn.h> #include <linux/irqnr.h>