Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch Welcome XENPVHVM mode.
details: https://anonhg.NetBSD.org/src/rev/86a7b20a0df3
branches: trunk
changeset: 839328:86a7b20a0df3
user: cherry <cherry%NetBSD.org@localhost>
date: Thu Feb 14 08:18:25 2019 +0000
description:
Welcome XENPVHVM mode.
It is UP only, has xbd(4) and xennet(4) as PV drivers.
The console is com0 at isa and the native portion is very
rudimentary AT architecture, so is probably suboptimal to
run without PV support.
diffstat:
sys/arch/amd64/amd64/locore.S | 4 +-
sys/arch/amd64/amd64/machdep.c | 11 +-
sys/arch/amd64/amd64/spl.S | 6 +-
sys/arch/amd64/amd64/vector.S | 4 +-
sys/arch/amd64/conf/XEN3_PVHVM | 202 ++++++++++++++++++++++++++
sys/arch/amd64/include/frame.h | 4 +-
sys/arch/i386/conf/XEN3PAE_PVHVM | 185 ++++++++++++++++++++++++
sys/arch/i386/i386/machdep.c | 8 +-
sys/arch/i386/i386/vector.S | 9 +-
sys/arch/i386/include/frame.h | 4 +-
sys/arch/i386/include/frameasm.h | 22 ++-
sys/arch/x86/include/cpu.h | 15 +-
sys/arch/x86/include/intr.h | 5 +-
sys/arch/x86/x86/cpu.c | 6 +-
sys/arch/x86/x86/intr.c | 11 +-
sys/arch/x86/x86/mainbus.c | 20 +-
sys/arch/x86/x86/pmap.c | 15 +-
sys/arch/x86/x86/x86_machdep.c | 8 +-
sys/arch/xen/conf/files.xen | 40 ++++-
sys/arch/xen/x86/xen_intr.c | 5 +-
sys/arch/xen/x86/xen_mainbus.c | 6 +-
sys/arch/xen/xen/hypervisor.c | 270 +++++++++++++++++++++++++++++++++++-
sys/arch/xen/xen/if_xennet_xenbus.c | 17 ++-
23 files changed, 800 insertions(+), 77 deletions(-)
diffs (truncated from 1457 to 300 lines):
diff -r ff0b71ff87d8 -r 86a7b20a0df3 sys/arch/amd64/amd64/locore.S
--- a/sys/arch/amd64/amd64/locore.S Thu Feb 14 07:12:40 2019 +0000
+++ b/sys/arch/amd64/amd64/locore.S Thu Feb 14 08:18:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.177 2019/02/13 05:36:59 cherry Exp $ */
+/* $NetBSD: locore.S,v 1.178 2019/02/14 08:18:25 cherry Exp $ */
/*
* Copyright-o-rama!
@@ -1112,7 +1112,7 @@
.Lskip_svs:
#endif
-#ifndef XENPV
+#ifndef XEN
movq %r13,%rdi
movq %r12,%rsi
callq _C_LABEL(speculation_barrier)
diff -r ff0b71ff87d8 -r 86a7b20a0df3 sys/arch/amd64/amd64/machdep.c
--- a/sys/arch/amd64/amd64/machdep.c Thu Feb 14 07:12:40 2019 +0000
+++ b/sys/arch/amd64/amd64/machdep.c Thu Feb 14 08:18:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.325 2019/02/11 14:59:32 cherry Exp $ */
+/* $NetBSD: machdep.c,v 1.326 2019/02/14 08:18:25 cherry Exp $ */
/*
* Copyright (c) 1996, 1997, 1998, 2000, 2006, 2007, 2008, 2011
@@ -110,7 +110,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.325 2019/02/11 14:59:32 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.326 2019/02/14 08:18:25 cherry Exp $");
#include "opt_modular.h"
#include "opt_user_ldt.h"
@@ -193,7 +193,9 @@
#include <xen/xen.h>
#include <xen/hypervisor.h>
#include <xen/evtchn.h>
-#endif
+#include <xen/include/public/version.h>
+#include <xen/include/public/vcpu.h>
+#endif /* XEN */
#ifdef DDB
#include <machine/db_machdep.h>
@@ -1693,7 +1695,7 @@
svs_init();
#endif
cpu_init_msrs(&cpu_info_primary, true);
-#ifndef XENPV
+#ifndef XEN
cpu_speculation_init(&cpu_info_primary);
#endif
@@ -1905,6 +1907,7 @@
(unsigned long) Xsyscall))
panic("HYPERVISOR_set_callbacks() failed");
#endif /* XENPV */
+
cpu_init_idt();
init_x86_64_ksyms();
diff -r ff0b71ff87d8 -r 86a7b20a0df3 sys/arch/amd64/amd64/spl.S
--- a/sys/arch/amd64/amd64/spl.S Thu Feb 14 07:12:40 2019 +0000
+++ b/sys/arch/amd64/amd64/spl.S Thu Feb 14 08:18:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: spl.S,v 1.39 2019/02/11 14:59:32 cherry Exp $ */
+/* $NetBSD: spl.S,v 1.40 2019/02/14 08:18:25 cherry Exp $ */
/*
* Copyright (c) 2003 Wasabi Systems, Inc.
@@ -211,7 +211,9 @@
cli
jmp *%r13 /* back to Xdoreti */
IDTVEC_END(resume_preempt)
+#endif /* XEN */
+#ifndef XENPV
/*
* void spllower(int s);
*
@@ -279,7 +281,7 @@
END(cx8_spllower_patch)
END(cx8_spllower)
LABEL(cx8_spllower_end)
-#endif /* !XEN */
+#endif /* !XENPV */
/*
* void Xspllower(int s);
diff -r ff0b71ff87d8 -r 86a7b20a0df3 sys/arch/amd64/amd64/vector.S
--- a/sys/arch/amd64/amd64/vector.S Thu Feb 14 07:12:40 2019 +0000
+++ b/sys/arch/amd64/amd64/vector.S Thu Feb 14 08:18:25 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: vector.S,v 1.67 2019/02/13 05:01:57 cherry Exp $ */
+/* $NetBSD: vector.S,v 1.68 2019/02/14 08:18:25 cherry Exp $ */
/*
* Copyright (c) 1998, 2007, 2008 The NetBSD Foundation, Inc.
@@ -771,7 +771,7 @@
INTRFASTEXIT
IDTVEC_END(hypervisor_pvhvm_callback)
END(hypervisor_callback)
-#endif
+#endif /* XEN */
#ifdef XENPV
/* Panic? */
diff -r ff0b71ff87d8 -r 86a7b20a0df3 sys/arch/amd64/conf/XEN3_PVHVM
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/amd64/conf/XEN3_PVHVM Thu Feb 14 08:18:25 2019 +0000
@@ -0,0 +1,202 @@
+# $NetBSD: XEN3_PVHVM,v 1.1 2019/02/14 08:18:25 cherry Exp $
+
+include "arch/amd64/conf/std.xen"
+
+options XENPVHVM
+
+#options MULTIPROCESSOR # Not yet.
+
+options INCLUDE_CONFIG_FILE # embed config file in kernel binary
+
+#options UVMHIST
+#options UVMHIST_PRINT
+#options SYSCALL_DEBUG
+
+#ident "XEN3_PVHVM-$Revision: 1.1 $"
+
+maxusers 32 # estimated number of users
+options MAXPHYS=32768 #xbd doesn't handle 64k transfers
+
+# boot messages with MPBIOS, acpi and ioapic can be quite large
+options MSGBUFSIZE=24576
+
+#options USER_LDT # user-settable LDT; used by WINE
+
+#options MTRR # memory-type range register syscall support
+
+#options CONSDEVNAME="\"xencons\""
+#options CONS_OVERRIDE
+
+options INSECURE # disable kernel security levels - X needs this
+
+options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT
+
+options KTRACE # system call tracing via ktrace(1)
+
+options SYSVMSG # System V-like message queues
+options SYSVSEM # System V-like semaphores
+options SYSVSHM # System V-like memory sharing
+
+options MODULAR # new style module(7) framework
+options USERCONF # userconf(4) support
+options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel
+
+# Alternate buffer queue strategies for better responsiveness under high
+# disk I/O load.
+#options BUFQ_READPRIO
+options BUFQ_PRIOCSCAN
+
+# Diagnostic/debugging support options
+options DIAGNOSTIC # inexpensive kernel consistency checks
+#options DEBUG # expensive debugging checks/support
+options DDB # in-kernel debugger
+options DDB_ONPANIC=1 # see also sysctl(7): `ddb.onpanic'
+options DDB_HISTORY_SIZE=512 # enable history editing in DDB
+#options KGDB # remote debugger
+#options KGDB_DEVNAME="\"com\"",KGDB_DEVADDR=0x2f8,KGDB_DEVRATE=57600
+#makeoptions DEBUG="-g" # compile full symbol table
+makeoptions COPTS="-O2 -fno-omit-frame-pointer"
+options DDB_COMMANDONENTER="show registers"
+
+# Compatibility options
+#include "conf/compat_netbsd15.config"
+options COMPAT_NETBSD32
+options COMPAT_LINUX
+options COMPAT_LINUX32 # req. COMPAT_LINUX and COMPAT_NETBSD32
+options EXEC_ELF32
+
+# Wedge support
+options DKWEDGE_AUTODISCOVER # Automatically add dk(4) instances
+options DKWEDGE_METHOD_GPT # Supports GPT partitions as wedges
+#options DKWEDGE_METHOD_BSDLABEL # Support disklabel entries as wedges
+#options DKWEDGE_METHOD_MBR # Support MBR partitions as wedges
+options DKWEDGE_METHOD_APPLE # Support Apple partitions as wedges
+#options DKWEDGE_METHOD_RDB # Support RDB partitions as wedges
+
+# File systems
+file-system FFS # UFS
+file-system EXT2FS # second extended file system (linux)
+file-system LFS # log-structured file system
+file-system MFS # memory file system
+file-system NFS # Network File System client
+file-system NTFS # Windows/NT file system (experimental)
+file-system CD9660 # ISO 9660 + Rock Ridge file system
+file-system MSDOSFS # MS-DOS file system
+file-system FDESC # /dev/fd
+file-system KERNFS # /kern
+file-system NULLFS # loopback file system
+file-system OVERLAY # overlay file system
+file-system PROCFS # /proc
+file-system UMAPFS # NULLFS + uid and gid remapping
+file-system UNION # union file system
+
+# File system options
+options QUOTA # legacy UFS quotas
+options QUOTA2 # new, in-filesystem UFS quotas
+#options DISKLABEL_EI # disklabel Endian Independent support
+#options FFS_EI # FFS Endian Independent support
+options WAPBL # File system journaling support
+#options UFS_DIRHASH # UFS Large Directory Hashing - Experimental
+options NFSSERVER # Network File System server
+#options FFS_NO_SNAPSHOT # No FFS snapshot support
+options UFS_EXTATTR # Extended attribute support for UFS1
+#options EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and
+ # immutable) behave as system flags.
+
+# Networking options
+options INET # IP + ICMP + TCP + UDP
+options INET6 # IPV6
+
+#
+# wscons options
+#
+# builtin terminal emulations
+#options WSEMUL_SUN # sun terminal emulation
+options WSEMUL_VT100 # VT100 / VT220 emulation
+# different kernel output - see dev/wscons/wsdisplayvar.h
+options WS_KERNEL_FG=WSCOL_GREEN
+#options WS_KERNEL_BG=WSCOL_BLACK
+# compatibility to other console drivers
+options WSDISPLAY_COMPAT_PCVT # emulate some ioctls
+options WSDISPLAY_COMPAT_SYSCONS # emulate some ioctls
+options WSDISPLAY_COMPAT_USL # wsconscfg VT handling
+options WSDISPLAY_COMPAT_RAWKBD # can get raw scancodes
+# console scrolling support.
+options WSDISPLAY_SCROLLSUPPORT
+
+config netbsd root on ? type ?
+#config netbsd root on wd0a type ffs
+#config netbsd root on xbd0a type ffs
+#config netbsd root on xennet0 type nfs
+
+mainbus0 at root
+
+cpu* at mainbus?
+
+hypervisor* at mainbus? # Xen hypervisor
+#vcpu* at hypervisor? # Xen virtual CPUs
+xenbus* at hypervisor? # Xen virtual bus
+xencons* at hypervisor? # Xen virtual console
+xennet* at xenbus? # Xen virtual network interface
+xbd* at xenbus? # Xen virtual block device
+#balloon* at xenbus? # Xen balloon device
+
+# PCI pass-through support:
+#xpci* at xenbus ? #Xen3 PCI front end driver
+#pci* at xpci ?
+# you then need to add your PCI devices drivers below.
+
+cinclude "arch/amd64/conf/GENERIC.local"
+cinclude "arch/amd64/conf/XEN3_DOMU.local"
+
+# ISA bus support
+isa0 at mainbus?
+
+# Serial Devices
+
+# ISA serial interfaces
+#options COM_HAYESP # adds Hayes ESP serial board support
+# If a com port is used as Xen console it can't be used by the domain0 kernel
+# and there's no easy way to detect this yet. Leave com0 out as it's the
+# port usually used for serial console
+com0 at isa? port 0x3f8 irq 4 # Standard PC serial ports
+com1 at isa? port 0x2f8 irq 3
+#com2 at isa? port 0x3e8 irq 5
+#com3 at isa? port 0x2e8 irq 9
+
+# ATA (IDE) bus support
+# ISA ST506, ESDI, and IDE controllers
+# Use flags 0x01 if you want to try to use 32bits data I/O (the driver will
+# fall back to 16bits I/O if 32bits I/O are not functional).
+# Some controllers pass the initial 32bit test, but will fail later.
+wdc0 at isa? port 0x1f0 irq 14 flags 0x00
+wdc1 at isa? port 0x170 irq 15 flags 0x00
+
+# IDE drives
+# Flags are used only with controllers that support DMA operations
+# and mode settings (e.g. some pciide controllers)
+# The lowest order four bits (rightmost digit) of the flags define the PIO
+# mode to use, the next set of four bits the DMA mode and the third set the
+# UltraDMA mode. For each set of four bits, the 3 lower bits define the mode
+# to use, and the last bit must be 1 for this setting to be used.
+# For DMA and UDMA, 0xf (1111) means 'disable'.
+# 0x0fac means 'use PIO mode 4, DMA mode 2, disable UltraDMA'.
+# (0xc=1100, 0xa=1010, 0xf=1111)
+# 0x0000 means "use whatever the drive claims to support".
+atabus* at ata?
Home |
Main Index |
Thread Index |
Old Index