Module Name:    src
Committed By:   bouyer
Date:           Wed Apr  8 17:59:17 UTC 2020

Modified Files:
        src/sys/arch/amd64/amd64 [bouyer-xenpvh]: genassym.cf locore.S
        src/sys/arch/i386/i386 [bouyer-xenpvh]: genassym.cf locore.S
        src/sys/arch/x86/include [bouyer-xenpvh]: cpu.h
        src/sys/arch/x86/x86 [bouyer-xenpvh]: identcpu.c lapic.c x86_machdep.c
        src/sys/arch/xen/x86 [bouyer-xenpvh]: autoconf.c
        src/sys/arch/xen/xen [bouyer-xenpvh]: hypervisor.c

Log Message:
Remove VM_GUEST_XEN and define only Xen subtypes:
VM_GUEST_XENPV
VM_GUEST_XENPVH
VM_GUEST_XENHVM
VM_GUEST_XENPVHVM

Set vm_guest in the start routine, if it is hypervisor-specific (e.g Xen PV).
If vm_guest was not set early and we detect Xen in identify_hypervisor(),
assume it is VM_GUEST_XENHVM. Refine to VM_GUEST_PVXENHVM in
hypervisor_match().


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.82.4.1 src/sys/arch/amd64/amd64/genassym.cf
cvs rdiff -u -r1.200 -r1.200.4.1 src/sys/arch/amd64/amd64/locore.S
cvs rdiff -u -r1.119 -r1.119.4.1 src/sys/arch/i386/i386/genassym.cf
cvs rdiff -u -r1.179 -r1.179.2.1 src/sys/arch/i386/i386/locore.S
cvs rdiff -u -r1.117 -r1.117.4.1 src/sys/arch/x86/include/cpu.h
cvs rdiff -u -r1.102 -r1.102.2.1 src/sys/arch/x86/x86/identcpu.c
cvs rdiff -u -r1.76 -r1.76.6.1 src/sys/arch/x86/x86/lapic.c
cvs rdiff -u -r1.137 -r1.137.2.1 src/sys/arch/x86/x86/x86_machdep.c
cvs rdiff -u -r1.23 -r1.23.8.1 src/sys/arch/xen/x86/autoconf.c
cvs rdiff -u -r1.73 -r1.73.2.1 src/sys/arch/xen/xen/hypervisor.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amd64/amd64/genassym.cf
diff -u src/sys/arch/amd64/amd64/genassym.cf:1.82 src/sys/arch/amd64/amd64/genassym.cf:1.82.4.1
--- src/sys/arch/amd64/amd64/genassym.cf:1.82	Mon Feb 17 09:09:48 2020
+++ src/sys/arch/amd64/amd64/genassym.cf	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.82 2020/02/17 09:09:48 skrll Exp $
+#	$NetBSD: genassym.cf,v 1.82.4.1 2020/04/08 17:59:16 bouyer Exp $
 
 #
 # Copyright (c) 1998, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -360,6 +360,8 @@ define	X86_BUS_SPACE_IO	X86_BUS_SPACE_IO
 
 define	BST_TYPE		offsetof(struct bus_space_tag, bst_type)
 
+define	VM_GUEST_XENPV		VM_GUEST_XENPV
+
 ifdef XEN
 define CPU_INFO_VCPU		offsetof(struct cpu_info, ci_vcpu)
 define CPU_INFO_XPENDING	offsetof(struct cpu_info, ci_xpending)

Index: src/sys/arch/amd64/amd64/locore.S
diff -u src/sys/arch/amd64/amd64/locore.S:1.200 src/sys/arch/amd64/amd64/locore.S:1.200.4.1
--- src/sys/arch/amd64/amd64/locore.S:1.200	Wed Jan 15 18:47:23 2020
+++ src/sys/arch/amd64/amd64/locore.S	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.200 2020/01/15 18:47:23 ad Exp $	*/
+/*	$NetBSD: locore.S,v 1.200.4.1 2020/04/08 17:59:16 bouyer Exp $	*/
 
 /*
  * Copyright-o-rama!
@@ -942,6 +942,8 @@ longmode_hi:
 	cpuid
 	movl	%eax,_C_LABEL(cpuid_level)
 
+	movl	$VM_GUEST_XENPV, _C_LABEL(vm_guest)
+
 	movq	$cpu_info_primary,%rdi
 	movq	%rdi,CPU_INFO_SELF(%rdi) /* ci->ci_self = ci */
 	movq	$1,%rsi

Index: src/sys/arch/i386/i386/genassym.cf
diff -u src/sys/arch/i386/i386/genassym.cf:1.119 src/sys/arch/i386/i386/genassym.cf:1.119.4.1
--- src/sys/arch/i386/i386/genassym.cf:1.119	Mon Feb 17 09:09:48 2020
+++ src/sys/arch/i386/i386/genassym.cf	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.119 2020/02/17 09:09:48 skrll Exp $
+#	$NetBSD: genassym.cf,v 1.119.4.1 2020/04/08 17:59:16 bouyer Exp $
 
 #
 # Copyright (c) 1998, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -374,6 +374,8 @@ define	L2_FRAME		L2_FRAME
 define	PGOFSET			PGOFSET
 define	PGSHIFT			PGSHIFT
 
+define	VM_GUEST_XENPV		VM_GUEST_XENPV
+
 ifdef XEN
 define CPU_INFO_VCPU		offsetof(struct cpu_info, ci_vcpu)
 define CPU_INFO_XPENDING	offsetof(struct cpu_info, ci_xpending)

Index: src/sys/arch/i386/i386/locore.S
diff -u src/sys/arch/i386/i386/locore.S:1.179 src/sys/arch/i386/i386/locore.S:1.179.2.1
--- src/sys/arch/i386/i386/locore.S:1.179	Fri Mar 27 21:05:03 2020
+++ src/sys/arch/i386/i386/locore.S	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.179 2020/03/27 21:05:03 ad Exp $	*/
+/*	$NetBSD: locore.S,v 1.179.2.1 2020/04/08 17:59:16 bouyer Exp $	*/
 
 /*
  * Copyright-o-rama!
@@ -128,7 +128,7 @@
  */
 
 #include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.179 2020/03/27 21:05:03 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.179.2.1 2020/04/08 17:59:16 bouyer Exp $");
 
 #include "opt_copy_symtab.h"
 #include "opt_ddb.h"
@@ -1115,6 +1115,8 @@ begin:
 	cpuid
 	movl	%eax,RELOC(cpuid_level)
 
+	movl    $VM_GUEST_XENPV, RELOC(vm_guest)
+
 	/*
 	 * Use a temporary GDT page. We'll re-add it to uvm(9) once we're done
 	 * using it.

Index: src/sys/arch/x86/include/cpu.h
diff -u src/sys/arch/x86/include/cpu.h:1.117 src/sys/arch/x86/include/cpu.h:1.117.4.1
--- src/sys/arch/x86/include/cpu.h:1.117	Wed Jan 15 13:22:03 2020
+++ src/sys/arch/x86/include/cpu.h	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.117 2020/01/15 13:22:03 ad Exp $	*/
+/*	$NetBSD: cpu.h,v 1.117.4.1 2020/04/08 17:59:16 bouyer Exp $	*/
 
 /*
  * Copyright (c) 1990 The Regents of the University of California.
@@ -496,7 +496,9 @@ void	identify_hypervisor(void);
 typedef enum vm_guest {
 	VM_GUEST_NO = 0,
 	VM_GUEST_VM,
-	VM_GUEST_XEN,
+	VM_GUEST_XENPV,
+	VM_GUEST_XENPVH,
+	VM_GUEST_XENHVM,
 	VM_GUEST_XENPVHVM,
 	VM_GUEST_HV,
 	VM_GUEST_VMWARE,

Index: src/sys/arch/x86/x86/identcpu.c
diff -u src/sys/arch/x86/x86/identcpu.c:1.102 src/sys/arch/x86/x86/identcpu.c:1.102.2.1
--- src/sys/arch/x86/x86/identcpu.c:1.102	Sat Apr  4 14:49:35 2020
+++ src/sys/arch/x86/x86/identcpu.c	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: identcpu.c,v 1.102 2020/04/04 14:49:35 ad Exp $	*/
+/*	$NetBSD: identcpu.c,v 1.102.2.1 2020/04/08 17:59:16 bouyer Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: identcpu.c,v 1.102 2020/04/04 14:49:35 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: identcpu.c,v 1.102.2.1 2020/04/08 17:59:16 bouyer Exp $");
 
 #include "opt_xen.h"
 
@@ -1129,7 +1129,7 @@ identify_hypervisor(void)
 			} else if (memcmp(hv_vendor, "KVMKVMKVM\0\0\0", 12) == 0)
 				vm_guest = VM_GUEST_KVM;
 			else if (memcmp(hv_vendor, "XenVMMXenVMM", 12) == 0)
-				vm_guest = VM_GUEST_XEN;
+				vm_guest = VM_GUEST_XENHVM;
 			/* FreeBSD bhyve: "bhyve bhyve " */
 			/* OpenBSD vmm:   "OpenBSDVMM58" */
 			/* NetBSD nvmm:   "___ NVMM ___" */

Index: src/sys/arch/x86/x86/lapic.c
diff -u src/sys/arch/x86/x86/lapic.c:1.76 src/sys/arch/x86/x86/lapic.c:1.76.6.1
--- src/sys/arch/x86/x86/lapic.c:1.76	Sun Dec  1 08:23:09 2019
+++ src/sys/arch/x86/x86/lapic.c	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: lapic.c,v 1.76 2019/12/01 08:23:09 maxv Exp $	*/
+/*	$NetBSD: lapic.c,v 1.76.6.1 2020/04/08 17:59:16 bouyer Exp $	*/
 
 /*-
  * Copyright (c) 2000, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lapic.c,v 1.76 2019/12/01 08:23:09 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lapic.c,v 1.76.6.1 2020/04/08 17:59:16 bouyer Exp $");
 
 #include "acpica.h"
 #include "ioapic.h"
@@ -278,7 +278,7 @@ lapic_setup_bsp(paddr_t lapic_base)
 			    !ISSET(regs[0], VCPUINFO_LEGACY_X2APIC))
 				reason = "inside VMWare without intr "
 				    "redirection";
-		} else if (vm_guest == VM_GUEST_XEN) {
+		} else if (vm_guest == VM_GUEST_XENHVM) {
 			reason = "due to running under XEN";
 		} else if (vm_guest == VM_GUEST_NO &&
 		    CPUID_TO_FAMILY(curcpu()->ci_signature) == 6 &&

Index: src/sys/arch/x86/x86/x86_machdep.c
diff -u src/sys/arch/x86/x86/x86_machdep.c:1.137 src/sys/arch/x86/x86/x86_machdep.c:1.137.2.1
--- src/sys/arch/x86/x86/x86_machdep.c:1.137	Sat Apr  4 19:50:54 2020
+++ src/sys/arch/x86/x86/x86_machdep.c	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: x86_machdep.c,v 1.137 2020/04/04 19:50:54 christos Exp $	*/
+/*	$NetBSD: x86_machdep.c,v 1.137.2.1 2020/04/08 17:59:16 bouyer Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006, 2007 YAMAMOTO Takashi,
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: x86_machdep.c,v 1.137 2020/04/04 19:50:54 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: x86_machdep.c,v 1.137.2.1 2020/04/08 17:59:16 bouyer Exp $");
 
 #include "opt_modular.h"
 #include "opt_physmem.h"
@@ -1255,7 +1255,10 @@ sysctl_machdep_tsc_enable(SYSCTLFN_ARGS)
 static const char * const vm_guest_name[VM_LAST] = {
 	[VM_GUEST_NO] =		"none",
 	[VM_GUEST_VM] =		"generic",
-	[VM_GUEST_XEN] =	"Xen",
+	[VM_GUEST_XENPV] =	"Xen PV",
+	[VM_GUEST_XENPVH] =	"Xen PVH",
+	[VM_GUEST_XENHVM] =	"Xen HVM",
+	[VM_GUEST_XENPVHVM] =	"Xen PVHVM",
 	[VM_GUEST_HV] =		"Hyper-V",
 	[VM_GUEST_VMWARE] =	"VMware",
 	[VM_GUEST_KVM] =	"KVM",
@@ -1266,7 +1269,7 @@ sysctl_machdep_hypervisor(SYSCTLFN_ARGS)
 {
 	struct sysctlnode node;
 	const char *t = NULL;
-	char buf[8];
+	char buf[10];
 
 	node = *rnode;
 	node.sysctl_data = buf;

Index: src/sys/arch/xen/x86/autoconf.c
diff -u src/sys/arch/xen/x86/autoconf.c:1.23 src/sys/arch/xen/x86/autoconf.c:1.23.8.1
--- src/sys/arch/xen/x86/autoconf.c:1.23	Fri May 24 14:28:48 2019
+++ src/sys/arch/xen/x86/autoconf.c	Wed Apr  8 17:59:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: autoconf.c,v 1.23 2019/05/24 14:28:48 nonaka Exp $	*/
+/*	$NetBSD: autoconf.c,v 1.23.8.1 2020/04/08 17:59:16 bouyer Exp $	*/
 /*	NetBSD: autoconf.c,v 1.75 2003/12/30 12:33:22 pk Exp 	*/
 
 /*-
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.23 2019/05/24 14:28:48 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.23.8.1 2020/04/08 17:59:16 bouyer Exp $");
 
 #include "opt_xen.h"
 #include "opt_multiprocessor.h"
@@ -128,7 +128,6 @@ cpu_configure(void)
 #endif /* NBIOS32 > 0 */
 	} else
 #endif /* DOM0OPS */
-		vm_guest = VM_GUEST_XEN;
 #ifdef PCIBIOS
 	pcibios_init();
 #endif

Index: src/sys/arch/xen/xen/hypervisor.c
diff -u src/sys/arch/xen/xen/hypervisor.c:1.73 src/sys/arch/xen/xen/hypervisor.c:1.73.2.1
--- src/sys/arch/xen/xen/hypervisor.c:1.73	Tue Apr  7 08:14:42 2020
+++ src/sys/arch/xen/xen/hypervisor.c	Wed Apr  8 17:59:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: hypervisor.c,v 1.73 2020/04/07 08:14:42 jdolecek Exp $ */
+/* $NetBSD: hypervisor.c,v 1.73.2.1 2020/04/08 17:59:17 bouyer Exp $ */
 
 /*
  * Copyright (c) 2005 Manuel Bouyer.
@@ -53,7 +53,7 @@
 
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hypervisor.c,v 1.73 2020/04/07 08:14:42 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hypervisor.c,v 1.73.2.1 2020/04/08 17:59:17 bouyer Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -217,7 +217,7 @@ hypervisor_match(device_t parent, cfdata
 	int vec;
 	extern vaddr_t hypercall_page;
 
-	if (vm_guest == VM_GUEST_XEN) {
+	if (vm_guest == VM_GUEST_XENHVM) {
 		aprint_normal("%s: Identified Guest XEN in HVM mode.\n",
 		    haa->haa_busname);
 
@@ -415,7 +415,7 @@ hypervisor_match(device_t parent, cfdata
 	bi.common.len = sizeof(struct btinfo_rootdevice);
 
 	/* From i386/multiboot.c */
-	/*	$NetBSD: hypervisor.c,v 1.73 2020/04/07 08:14:42 jdolecek Exp $	*/
+	/*	$NetBSD: hypervisor.c,v 1.73.2.1 2020/04/08 17:59:17 bouyer Exp $	*/
 	int i, len;
 	vaddr_t data;
 	extern struct bootinfo	bootinfo;

Reply via email to