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

kvm: replace __KVM_HAVE_READONLY_MEM with Kconfig symbol

KVM uses __KVM_HAVE_* symbols in the architecture-dependent uapi/asm/kvm.h to mask
unused definitions in include/uapi/linux/kvm.h. __KVM_HAVE_READONLY_MEM however
was nothing but a misguided attempt to define KVM_CAP_READONLY_MEM only on
architectures where KVM_CHECK_EXTENSION(KVM_CAP_READONLY_MEM) could possibly
return nonzero. This however does not make sense, and it prevented userspace
from supporting this architecture-independent feature without recompilation.

Therefore, these days __KVM_HAVE_READONLY_MEM does not mask anything and
is only used in virt/kvm/kvm_main.c. Userspace does not need to test it
and there should be no need for it to exist. Remove it and replace it
with a Kconfig symbol within Linux source code.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

+9 -8
-1
arch/arm64/include/uapi/asm/kvm.h
··· 39 39 40 40 #define __KVM_HAVE_GUEST_DEBUG 41 41 #define __KVM_HAVE_IRQ_LINE 42 - #define __KVM_HAVE_READONLY_MEM 43 42 #define __KVM_HAVE_VCPU_EVENTS 44 43 45 44 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+1
arch/arm64/kvm/Kconfig
··· 36 36 select HAVE_KVM_IRQ_ROUTING 37 37 select IRQ_BYPASS_MANAGER 38 38 select HAVE_KVM_IRQ_BYPASS 39 + select HAVE_KVM_READONLY_MEM 39 40 select HAVE_KVM_VCPU_RUN_PID_CHANGE 40 41 select SCHED_INFO 41 42 select GUEST_PERF_EVENTS if PERF_EVENTS
-2
arch/loongarch/include/uapi/asm/kvm.h
··· 14 14 * Some parts derived from the x86 version of this file. 15 15 */ 16 16 17 - #define __KVM_HAVE_READONLY_MEM 18 - 19 17 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 20 18 #define KVM_DIRTY_LOG_PAGE_OFFSET 64 21 19
+1
arch/loongarch/kvm/Kconfig
··· 28 28 select KVM_GENERIC_HARDWARE_ENABLING 29 29 select KVM_GENERIC_MMU_NOTIFIER 30 30 select KVM_MMIO 31 + select HAVE_KVM_READONLY_MEM 31 32 select KVM_XFER_TO_GUEST_WORK 32 33 help 33 34 Support hosting virtualized guest machines using
-2
arch/mips/include/uapi/asm/kvm.h
··· 20 20 * Some parts derived from the x86 version of this file. 21 21 */ 22 22 23 - #define __KVM_HAVE_READONLY_MEM 24 - 25 23 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 26 24 27 25 /*
+1
arch/mips/kvm/Kconfig
··· 26 26 select KVM_MMIO 27 27 select KVM_GENERIC_MMU_NOTIFIER 28 28 select KVM_GENERIC_HARDWARE_ENABLING 29 + select HAVE_KVM_READONLY_MEM 29 30 help 30 31 Support for hosting Guest kernels. 31 32
-1
arch/riscv/include/uapi/asm/kvm.h
··· 16 16 #include <asm/ptrace.h> 17 17 18 18 #define __KVM_HAVE_IRQ_LINE 19 - #define __KVM_HAVE_READONLY_MEM 20 19 21 20 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 22 21
+1
arch/riscv/kvm/Kconfig
··· 24 24 select HAVE_KVM_IRQ_ROUTING 25 25 select HAVE_KVM_MSI 26 26 select HAVE_KVM_VCPU_ASYNC_IOCTL 27 + select HAVE_KVM_READONLY_MEM 27 28 select KVM_COMMON 28 29 select KVM_GENERIC_DIRTYLOG_READ_PROTECT 29 30 select KVM_GENERIC_HARDWARE_ENABLING
-1
arch/x86/include/uapi/asm/kvm.h
··· 51 51 #define __KVM_HAVE_DEBUGREGS 52 52 #define __KVM_HAVE_XSAVE 53 53 #define __KVM_HAVE_XCRS 54 - #define __KVM_HAVE_READONLY_MEM 55 54 56 55 /* Architectural interrupt line count. */ 57 56 #define KVM_NR_INTERRUPTS 256
+1
arch/x86/kvm/Kconfig
··· 32 32 select IRQ_BYPASS_MANAGER 33 33 select HAVE_KVM_IRQ_BYPASS 34 34 select HAVE_KVM_IRQ_ROUTING 35 + select HAVE_KVM_READONLY_MEM 35 36 select KVM_ASYNC_PF 36 37 select USER_RETURN_NOTIFIER 37 38 select KVM_MMIO
+3
virt/kvm/Kconfig
··· 55 55 config HAVE_KVM_MSI 56 56 bool 57 57 58 + config HAVE_KVM_READONLY_MEM 59 + bool 60 + 58 61 config HAVE_KVM_CPU_RELAX_INTERCEPT 59 62 bool 60 63
+1 -1
virt/kvm/kvm_main.c
··· 1614 1614 if (mem->flags & KVM_MEM_GUEST_MEMFD) 1615 1615 valid_flags &= ~KVM_MEM_LOG_DIRTY_PAGES; 1616 1616 1617 - #ifdef __KVM_HAVE_READONLY_MEM 1617 + #ifdef CONFIG_HAVE_KVM_READONLY_MEM 1618 1618 valid_flags |= KVM_MEM_READONLY; 1619 1619 #endif 1620 1620