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/1aa7ef4fa46f
branches:  trunk
changeset: 448930:1aa7ef4fa46f
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 7fde556dec82 -r 1aa7ef4fa46f 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 7fde556dec82 -r 1aa7ef4fa46f 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 7fde556dec82 -r 1aa7ef4fa46f 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 7fde556dec82 -r 1aa7ef4fa46f 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 7fde556dec82 -r 1aa7ef4fa46f 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