I do not see any consistency about headers_install of <linux/kvm_para.h> and <asm/kvm_para.h>. According to my analysis of Linux 5.1-rc1, there are 3 groups: [1] Both <linux/kvm_para.h> and <asm/kvm_para.h> are exported alpha, arm, hexagon, mips, powerpc, s390, sparc, x86 [2] <asm/kvm_para.h> is exported, but <linux/kvm_para.h> is not arc, arm64, c6x, h8300, ia64, m68k, microblaze, nios2, openrisc, parisc, sh, unicore32, xtensa [3] Neither <linux/kvm_para.h> nor <asm/kvm_para.h> is exported csky, nds32, riscv This does not match to the actual KVM support. At least, [2] is half-baked. Nor do arch maintainers look like they care about this. For example, commit 0add53713b1c ("microblaze: Add missing kvm_para.h to Kbuild") exported <asm/kvm_para.h> to user-space in order to fix an in-kernel build error. We have two ways to make this consistent: [A] export both <linux/kvm_para.h> and <asm/kvm_para.h> for all architectures, irrespective of the KVM support [B] Match the header export of <linux/kvm_para.h> and <asm/kvm_para.h> to the KVM support My first attempt was [A] because the code looks cleaner, but Paolo suggested [B]. So, this commit goes with [B]. For most architectures, <asm/kvm_para.h> was moved to the kernel-space. I changed include/uapi/linux/Kbuild so that it checks generated asm/kvm_para.h as well as check-in ones. After this commit, there will be two groups: [1] Both <linux/kvm_para.h> and <asm/kvm_para.h> are exported arm, arm64, mips, powerpc, s390, x86 [2] Neither <linux/kvm_para.h> nor <asm/kvm_para.h> is exported alpha, arc, c6x, csky, h8300, hexagon, ia64, m68k, microblaze, nds32, nios2, openrisc, parisc, riscv, sh, sparc, unicore32, xtensa
Unified · Split
| @@ -6,6 +6,7 @@ generic-y += exec.h · 5 unmodified lines | ||
| 6 | 6 | generic-y += export.h |
| 7 | 7 | generic-y += fb.h |
| 8 | 8 | generic-y += irq_work.h |
| 9 | +generic-y += kvm_para.h | |
| 9 | 10 | generic-y += mcs_spinlock.h |
| 10 | 11 | generic-y += mm-arch-hooks.h |
| 11 | 12 | generic-y += preempt.h |
| @@ -1,2 +0,0 @@ | ||
| 1 | −/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 2 | −#include <asm-generic/kvm_para.h> | |
| @@ -11,6 +11,7 @@ generic-y += hardirq.h · 10 unmodified lines | ||
| 11 | 11 | generic-y += hw_irq.h |
| 12 | 12 | generic-y += irq_regs.h |
| 13 | 13 | generic-y += irq_work.h |
| 14 | +generic-y += kvm_para.h | |
| 14 | 15 | generic-y += local.h |
| 15 | 16 | generic-y += local64.h |
| 16 | 17 | generic-y += mcs_spinlock.h |
| @@ -1,2 +1 @@ | ||
| 1 | −generic-y += kvm_para.h | |
| 2 | 1 | generic-y += ucontext.h |
| @@ -3,3 +3,4 @@ · 2 unmodified lines | ||
| 3 | 3 | generated-y += unistd-common.h |
| 4 | 4 | generated-y += unistd-oabi.h |
| 5 | 5 | generated-y += unistd-eabi.h |
| 6 | +generic-y += kvm_para.h | |
| @@ -1,2 +0,0 @@ | ||
| 1 | −/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 2 | −#include <asm-generic/kvm_para.h> | |
| @@ -19,6 +19,7 @@ generic-y += irq_work.h · 18 unmodified lines | ||
| 19 | 19 | generic-y += kdebug.h |
| 20 | 20 | generic-y += kmap_types.h |
| 21 | 21 | generic-y += kprobes.h |
| 22 | +generic-y += kvm_para.h | |
| 22 | 23 | generic-y += local.h |
| 23 | 24 | generic-y += mcs_spinlock.h |
| 24 | 25 | generic-y += mm-arch-hooks.h |
| @@ -1,2 +1 @@ | ||
| 1 | −generic-y += kvm_para.h | |
| 2 | 1 | generic-y += ucontext.h |
| @@ -23,6 +23,7 @@ generic-y += irq_work.h · 22 unmodified lines | ||
| 23 | 23 | generic-y += kdebug.h |
| 24 | 24 | generic-y += kmap_types.h |
| 25 | 25 | generic-y += kprobes.h |
| 26 | +generic-y += kvm_para.h | |
| 26 | 27 | generic-y += linkage.h |
| 27 | 28 | generic-y += local.h |
| 28 | 29 | generic-y += local64.h |
| @@ -1,2 +1 @@ | ||
| 1 | −generic-y += kvm_para.h | |
| 2 | 1 | generic-y += ucontext.h |
| @@ -19,6 +19,7 @@ generic-y += irq_work.h · 18 unmodified lines | ||
| 19 | 19 | generic-y += kdebug.h |
| 20 | 20 | generic-y += kmap_types.h |
| 21 | 21 | generic-y += kprobes.h |
| 22 | +generic-y += kvm_para.h | |
| 22 | 23 | generic-y += local.h |
| 23 | 24 | generic-y += local64.h |
| 24 | 25 | generic-y += mcs_spinlock.h |
| @@ -1,2 +0,0 @@ | ||
| 1 | −/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 2 | −#include <asm-generic/kvm_para.h> | |
| @@ -2,6 +2,7 @@ generated-y += syscall_table.h · 1 unmodified line | ||
| 2 | 2 | generic-y += compat.h |
| 3 | 3 | generic-y += exec.h |
| 4 | 4 | generic-y += irq_work.h |
| 5 | +generic-y += kvm_para.h | |
| 5 | 6 | generic-y += mcs_spinlock.h |
| 6 | 7 | generic-y += mm-arch-hooks.h |
| 7 | 8 | generic-y += preempt.h |
| @@ -1,2 +1 @@ | ||
| 1 | 1 | generated-y += unistd_64.h |
| 2 | −generic-y += kvm_para.h | |
| @@ -13,6 +13,7 @@ generic-y += irq_work.h · 12 unmodified lines | ||
| 13 | 13 | generic-y += kdebug.h |
| 14 | 14 | generic-y += kmap_types.h |
| 15 | 15 | generic-y += kprobes.h |
| 16 | +generic-y += kvm_para.h | |
| 16 | 17 | generic-y += local.h |
| 17 | 18 | generic-y += local64.h |
| 18 | 19 | generic-y += mcs_spinlock.h |
| @@ -1,2 +1 @@ | ||
| 1 | 1 | generated-y += unistd_32.h |
| 2 | −generic-y += kvm_para.h | |
| @@ -17,6 +17,7 @@ generic-y += irq_work.h · 16 unmodified lines | ||
| 17 | 17 | generic-y += kdebug.h |
| 18 | 18 | generic-y += kmap_types.h |
| 19 | 19 | generic-y += kprobes.h |
| 20 | +generic-y += kvm_para.h | |
| 20 | 21 | generic-y += linkage.h |
| 21 | 22 | generic-y += local.h |
| 22 | 23 | generic-y += local64.h |
| @@ -1,3 +1,2 @@ | ||
| 1 | 1 | generated-y += unistd_32.h |
| 2 | −generic-y += kvm_para.h | |
| 3 | 2 | generic-y += ucontext.h |
| @@ -23,6 +23,7 @@ generic-y += irq_work.h · 22 unmodified lines | ||
| 23 | 23 | generic-y += kdebug.h |
| 24 | 24 | generic-y += kmap_types.h |
| 25 | 25 | generic-y += kprobes.h |
| 26 | +generic-y += kvm_para.h | |
| 26 | 27 | generic-y += local.h |
| 27 | 28 | generic-y += mcs_spinlock.h |
| 28 | 29 | generic-y += mm-arch-hooks.h |
| @@ -1,2 +1 @@ | ||
| 1 | −generic-y += kvm_para.h | |
| 2 | 1 | generic-y += ucontext.h |
| @@ -20,6 +20,7 @@ generic-y += irq_work.h · 19 unmodified lines | ||
| 20 | 20 | generic-y += kdebug.h |
| 21 | 21 | generic-y += kmap_types.h |
| 22 | 22 | generic-y += kprobes.h |
| 23 | +generic-y += kvm_para.h | |
| 23 | 24 | generic-y += local.h |
| 24 | 25 | generic-y += mcs_spinlock.h |
| 25 | 26 | generic-y += mm-arch-hooks.h |
| @@ -1,2 +1 @@ | ||
| 1 | −generic-y += kvm_para.h | |
| 2 | 1 | generic-y += ucontext.h |
| @@ -11,6 +11,7 @@ generic-y += irq_regs.h · 10 unmodified lines | ||
| 11 | 11 | generic-y += irq_work.h |
| 12 | 12 | generic-y += kdebug.h |
| 13 | 13 | generic-y += kprobes.h |
| 14 | +generic-y += kvm_para.h | |
| 14 | 15 | generic-y += local.h |
| 15 | 16 | generic-y += local64.h |
| 16 | 17 | generic-y += mcs_spinlock.h |
| @@ -1,3 +1,2 @@ | ||
| 1 | 1 | generated-y += unistd_32.h |
| 2 | 2 | generated-y += unistd_64.h |
| 3 | −generic-y += kvm_para.h | |
| @@ -9,6 +9,7 @@ generic-y += emergency-restart.h · 8 unmodified lines | ||
| 9 | 9 | generic-y += exec.h |
| 10 | 10 | generic-y += irq_regs.h |
| 11 | 11 | generic-y += irq_work.h |
| 12 | +generic-y += kvm_para.h | |
| 12 | 13 | generic-y += local.h |
| 13 | 14 | generic-y += local64.h |
| 14 | 15 | generic-y += mcs_spinlock.h |
| @@ -1,5 +1,4 @@ | ||
| 1 | 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | 2 | |
| 3 | 3 | generated-y += unistd_32.h |
| 4 | −generic-y += kvm_para.h | |
| 5 | 4 | generic-y += ucontext.h |
| @@ -9,6 +9,7 @@ generic-y += exec.h · 8 unmodified lines | ||
| 9 | 9 | generic-y += export.h |
| 10 | 10 | generic-y += irq_regs.h |
| 11 | 11 | generic-y += irq_work.h |
| 12 | +generic-y += kvm_para.h | |
| 12 | 13 | generic-y += linkage.h |
| 13 | 14 | generic-y += local.h |
| 14 | 15 | generic-y += local64.h |
| @@ -1,2 +0,0 @@ | ||
| 1 | −/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 2 | −#include <asm-generic/kvm_para.h> | |
| @@ -18,6 +18,7 @@ generic-y += irq_work.h · 17 unmodified lines | ||
| 18 | 18 | generic-y += kdebug.h |
| 19 | 19 | generic-y += kmap_types.h |
| 20 | 20 | generic-y += kprobes.h |
| 21 | +generic-y += kvm_para.h | |
| 21 | 22 | generic-y += local.h |
| 22 | 23 | generic-y += mcs_spinlock.h |
| 23 | 24 | generic-y += mm-arch-hooks.h |
| @@ -1,2 +1 @@ | ||
| 1 | −generic-y += kvm_para.h | |
| 2 | 1 | generic-y += ucontext.h |
| @@ -15,6 +15,7 @@ generic-y += irq_work.h · 14 unmodified lines | ||
| 15 | 15 | generic-y += kdebug.h |
| 16 | 16 | generic-y += kmap_types.h |
| 17 | 17 | generic-y += kprobes.h |
| 18 | +generic-y += kvm_para.h | |
| 18 | 19 | generic-y += local.h |
| 19 | 20 | generic-y += local64.h |
| 20 | 21 | generic-y += mcs_spinlock.h |
| @@ -1,2 +1 @@ | ||
| 1 | 1 | generated-y += unistd_32.h |
| 2 | −generic-y += kvm_para.h | |
| @@ -7,5 +7,7 @@ no-export-headers += kvm.h · 6 unmodified lines | ||
| 7 | 7 | endif |
| 8 | 8 | |
| 9 | 9 | ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h),) |
| 10 | +ifeq ($(wildcard $(objtree)/arch/$(SRCARCH)/include/generated/uapi/asm/kvm_para.h),) | |
| 10 | 11 | no-export-headers += kvm_para.h |
| 11 | 12 | endif |
| 13 | +endif | |