Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa587743 authored by Carsten Otte's avatar Carsten Otte Committed by Avi Kivity
Browse files

s390: KVM guest: detect when running on kvm



This patch adds functionality to detect if the kernel runs under the KVM
hypervisor. A macro MACHINE_IS_KVM is exported for device drivers. This
allows drivers to skip device detection if the systems runs non-virtualized.
We also define a preferred console to avoid having the ttyS0, which is a line
mode only console.

Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Acked-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarCarsten Otte <cotte@de.ibm.com>
Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
parent 85f8fffe
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -520,6 +520,13 @@ config ZFCPDUMP
	  Select this option if you want to build an zfcpdump enabled kernel.
	  Refer to <file:Documentation/s390/zfcpdump.txt> for more details on this.

config S390_GUEST
bool "s390 guest support (EXPERIMENTAL)"
	depends on 64BIT && EXPERIMENTAL
	select VIRTIO
	select VIRTIO_RING
	help
	  Select this option if you want to run the kernel under s390 linux
endmenu

source "net/Kconfig"
+4 −0
Original line number Diff line number Diff line
@@ -144,6 +144,10 @@ static noinline __init void detect_machine_type(void)
	/* Running on a P/390 ? */
	if (cpuinfo->cpu_id.machine == 0x7490)
		machine_flags |= 4;

	/* Running under KVM ? */
	if (cpuinfo->cpu_id.version == 0xfe)
		machine_flags |= 64;
}

#ifdef CONFIG_64BIT
+7 −3
Original line number Diff line number Diff line
@@ -801,9 +801,13 @@ setup_arch(char **cmdline_p)
	       "This machine has an IEEE fpu\n" :
	       "This machine has no IEEE fpu\n");
#else /* CONFIG_64BIT */
	printk((MACHINE_IS_VM) ?
	       "We are running under VM (64 bit mode)\n" :
	       "We are running native (64 bit mode)\n");
	if (MACHINE_IS_VM)
		printk("We are running under VM (64 bit mode)\n");
	else if (MACHINE_IS_KVM) {
		printk("We are running under KVM (64 bit mode)\n");
		add_preferred_console("ttyS", 1, NULL);
	} else
		printk("We are running native (64 bit mode)\n");
#endif /* CONFIG_64BIT */

	/* Save unparsed command line copy for /proc/cmdline */
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ extern unsigned long machine_flags;
#define MACHINE_IS_VM		(machine_flags & 1)
#define MACHINE_IS_P390		(machine_flags & 4)
#define MACHINE_HAS_MVPG	(machine_flags & 16)
#define MACHINE_IS_KVM		(machine_flags & 64)
#define MACHINE_HAS_IDTE	(machine_flags & 128)
#define MACHINE_HAS_DIAG9C	(machine_flags & 256)