Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/bouyer-xenpvh]: src/sys/arch Remove VM_GUEST_XEN and define only Xen sub...
details: https://anonhg.NetBSD.org/src/rev/6d16e22dc06a
branches: bouyer-xenpvh
changeset: 1024943:6d16e22dc06a
user: bouyer <bouyer%NetBSD.org@localhost>
date: Wed Apr 08 17:59:16 2020 +0000
description:
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().
diffstat:
sys/arch/amd64/amd64/genassym.cf | 4 +++-
sys/arch/amd64/amd64/locore.S | 4 +++-
sys/arch/i386/i386/genassym.cf | 4 +++-
sys/arch/i386/i386/locore.S | 6 ++++--
sys/arch/x86/include/cpu.h | 6 ++++--
sys/arch/x86/x86/identcpu.c | 6 +++---
sys/arch/x86/x86/lapic.c | 6 +++---
sys/arch/x86/x86/x86_machdep.c | 11 +++++++----
sys/arch/xen/x86/autoconf.c | 5 ++---
sys/arch/xen/xen/hypervisor.c | 8 ++++----
10 files changed, 36 insertions(+), 24 deletions(-)
diffs (256 lines):
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/amd64/amd64/genassym.cf
--- a/sys/arch/amd64/amd64/genassym.cf Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/amd64/amd64/genassym.cf Wed Apr 08 17:59:16 2020 +0000
@@ -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 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)
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/amd64/amd64/locore.S
--- a/sys/arch/amd64/amd64/locore.S Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/amd64/amd64/locore.S Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
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
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/i386/i386/genassym.cf
--- a/sys/arch/i386/i386/genassym.cf Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/i386/i386/genassym.cf Wed Apr 08 17:59:16 2020 +0000
@@ -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 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)
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/i386/i386/locore.S
--- a/sys/arch/i386/i386/locore.S Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/i386/i386/locore.S Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
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.
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/x86/include/cpu.h
--- a/sys/arch/x86/include/cpu.h Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/x86/include/cpu.h Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
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,
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/x86/x86/identcpu.c
--- a/sys/arch/x86/x86/identcpu.c Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/x86/x86/identcpu.c Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
} 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 ___" */
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/x86/x86/lapic.c
--- a/sys/arch/x86/x86/lapic.c Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/x86/x86/lapic.c Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
!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 &&
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/x86/x86/x86_machdep.c
--- a/sys/arch/x86/x86/x86_machdep.c Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/x86/x86/x86_machdep.c Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
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 @@
{
struct sysctlnode node;
const char *t = NULL;
- char buf[8];
+ char buf[10];
node = *rnode;
node.sysctl_data = buf;
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/xen/x86/autoconf.c
--- a/sys/arch/xen/x86/autoconf.c Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/xen/x86/autoconf.c Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
#endif /* NBIOS32 > 0 */
} else
#endif /* DOM0OPS */
- vm_guest = VM_GUEST_XEN;
#ifdef PCIBIOS
pcibios_init();
#endif
diff -r 6ae0402755c1 -r 6d16e22dc06a sys/arch/xen/xen/hypervisor.c
--- a/sys/arch/xen/xen/hypervisor.c Wed Apr 08 17:56:08 2020 +0000
+++ b/sys/arch/xen/xen/hypervisor.c Wed Apr 08 17:59:16 2020 +0000
@@ -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 @@
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 @@
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;
Home |
Main Index |
Thread Index |
Old Index