Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: export <linux/kvm_para.h> and <asm/kvm_para.h> iif KVM is supported

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

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

authored by

Masahiro Yamada and committed by
Paolo Bonzini
3d9683cf 4d66623c

+18 -20
+1
arch/alpha/include/asm/Kbuild
··· 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
-2
arch/alpha/include/uapi/asm/kvm_para.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 - #include <asm-generic/kvm_para.h>
+1
arch/arc/include/asm/Kbuild
··· 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
arch/arc/include/uapi/asm/Kbuild
··· 1 - generic-y += kvm_para.h 2 1 generic-y += ucontext.h
+1
arch/arm/include/uapi/asm/Kbuild
··· 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
-2
arch/arm/include/uapi/asm/kvm_para.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 - #include <asm-generic/kvm_para.h>
+1
arch/c6x/include/asm/Kbuild
··· 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
arch/c6x/include/uapi/asm/Kbuild
··· 1 - generic-y += kvm_para.h 2 1 generic-y += ucontext.h
+1
arch/h8300/include/asm/Kbuild
··· 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
arch/h8300/include/uapi/asm/Kbuild
··· 1 - generic-y += kvm_para.h 2 1 generic-y += ucontext.h
+1
arch/hexagon/include/asm/Kbuild
··· 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
-2
arch/hexagon/include/uapi/asm/kvm_para.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 - #include <asm-generic/kvm_para.h>
+1
arch/ia64/include/asm/Kbuild
··· 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
arch/ia64/include/uapi/asm/Kbuild
··· 1 1 generated-y += unistd_64.h 2 - generic-y += kvm_para.h
+1
arch/m68k/include/asm/Kbuild
··· 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
arch/m68k/include/uapi/asm/Kbuild
··· 1 1 generated-y += unistd_32.h 2 - generic-y += kvm_para.h
+1
arch/microblaze/include/asm/Kbuild
··· 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
arch/microblaze/include/uapi/asm/Kbuild
··· 1 1 generated-y += unistd_32.h 2 - generic-y += kvm_para.h 3 2 generic-y += ucontext.h
+1
arch/nios2/include/asm/Kbuild
··· 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
arch/nios2/include/uapi/asm/Kbuild
··· 1 - generic-y += kvm_para.h 2 1 generic-y += ucontext.h
+1
arch/openrisc/include/asm/Kbuild
··· 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
arch/openrisc/include/uapi/asm/Kbuild
··· 1 - generic-y += kvm_para.h 2 1 generic-y += ucontext.h
+1
arch/parisc/include/asm/Kbuild
··· 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
arch/parisc/include/uapi/asm/Kbuild
··· 1 1 generated-y += unistd_32.h 2 2 generated-y += unistd_64.h 3 - generic-y += kvm_para.h
+1
arch/sh/include/asm/Kbuild
··· 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
arch/sh/include/uapi/asm/Kbuild
··· 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
+1
arch/sparc/include/asm/Kbuild
··· 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
-2
arch/sparc/include/uapi/asm/kvm_para.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 - #include <asm-generic/kvm_para.h>
+1
arch/unicore32/include/asm/Kbuild
··· 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
arch/unicore32/include/uapi/asm/Kbuild
··· 1 - generic-y += kvm_para.h 2 1 generic-y += ucontext.h
+1
arch/xtensa/include/asm/Kbuild
··· 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
arch/xtensa/include/uapi/asm/Kbuild
··· 1 1 generated-y += unistd_32.h 2 - generic-y += kvm_para.h
+2
include/uapi/linux/Kbuild
··· 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 12 + endif 11 13 endif