Re: u3g for XEN3_DOM0 ?
Emmanuel Dreyfus <[email protected]> Sun, 12 Sep 2021 01:18:16 +0000
| Newsgroups | gmane.os.netbsd.ports.x86-64 |
|---|---|
| Message-ID | <[email protected]> |
On Sat, Sep 11, 2021 at 11:25:17AM -0400, Greg Troxel wrote: > The diff from GENERIC looks ok too. > > Longer term, it would be nice if all differences were commented. But > this looks like good progress. I made progress here. Here is the diff against GENERIC. acpicpu, sysbeep (with a mystery remaining), vga, genfb and drm are disabled because they depend on code that is marked !xenpv. --- GENERIC +++ XEN3_DOM0 @@ -1,31 +1,23 @@ -# $NetBSD: GENERIC,v 1.589 2021/05/17 04:07:42 yamaguchi Exp $ -# -# GENERIC machine description file -# -# This machine description file is used to generate the default NetBSD -# kernel. The generic kernel does not include all options, subsystems -# and device drivers, but should be useful for most applications. -# -# The machine description file can be customised for your specific -# machine to reduce the kernel size and improve its performance. -# -# For further information on compiling NetBSD kernels, see the config(8) -# man page. +# $NetBSD: XEN3_DOM0,v 1.193 2021/06/29 10:22:34 nia Exp $ + +# XEN3_DOM0 machine description file # -# For further information on hardware support for this architecture, see -# the intro(4) man page. For further information about kernel options -# for this architecture, see the options(4) man page. For an explanation -# of each device driver in this file see the section 4 man page for the -# device. +# This machine description file is used to generate a kernel to be +# used as a PV dom0 under Xen. It is similar to GENERIC in that it is +# intended to be useful for most applications. Generally, besides +# changes that are specifically required for Xen (e.g., XENPV), it +# should be similar to GENERIC. Some differences are currently +# necessary, such as drivers that fail under Xen but work in GENERIC, +# for reasons that do not follow from Xen architecture. -include "arch/amd64/conf/std.amd64" +include "arch/amd64/conf/std.xen" options INCLUDE_CONFIG_FILE # embed config file in kernel binary -#ident "GENERIC-$Revision: 1.589 $" +#ident "XEN3_DOM0-$Revision: 1.193 $" -maxusers 64 # estimated number of users +maxusers 32 # estimated number of users # delay between "rebooting ..." message and hardware reset, in milliseconds #options CPURESET_DELAY=2000 @@ -50,8 +42,23 @@ # and can deal with holes in the memory layout. #options PHYSMEM_MAX_SIZE=64 # max size of physical memory (in MB) #options PHYSMEM_MAX_ADDR=2048 # don't use memory above this (in MB) +## Xen-specific options + +options XENPV # PV dom0 support +options DOM0OPS +options MULTIPROCESSOR +#options NO_PREEMPTION # needed if MULTIPROCESSOR is disabled + +#options CONSDEVNAME="\"xencons\"" +#options CONS_OVERRIDE + +## end Xen-specific options + +# boot messages with MPBIOS, acpi and ioapic can be quite large +options MSGBUFSIZE=24576 + # Standard system options options INSECURE # disable kernel security levels - X needs this @@ -72,34 +79,17 @@ options USERCONF # userconf(4) support #options PIPE_SOCKETPAIR # smaller, but slower pipe(2) options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel -# CPU-related options -options USER_LDT # User-settable LDT, used by Wine -options SVS # Separate Virtual Space -options PCPU_IDT # Per CPU IDTs - -# GCC Spectre variant 2 mitigation -makeoptions SPECTRE_V2_GCC_MITIGATION=1 -options SPECTRE_V2_GCC_MITIGATION - # CPU features -acpicpu* at cpu? # ACPI CPU (including frequency scaling) +#acpicpu* at cpu? # ACPI CPU (including frequency scaling) + # needs x86_cpu_idle_halt in cpu.c (!xenpv) coretemp* at cpu? # Intel on-die thermal sensor est0 at cpu0 # Intel Enhanced SpeedStep (non-ACPI) -hyperv0 at cpu0 # Microsoft Hyper-V +#hyperv0 at cpu0 # Microsoft Hyper-V #odcm0 at cpu0 # On-demand clock modulation powernow0 at cpu0 # AMD PowerNow! and Cool'n'Quiet (non-ACPI) -vmt0 at cpu0 # VMware Tools - -#Xen PV support for HVM guests -options XENPVHVM -options XEN -hypervisor* at mainbus? # Xen hypervisor -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 +#vmt0 at cpu0 # VMware Tools # Alternate buffer queue strategies for better responsiveness under high # disk I/O load. #options BUFQ_READPRIO @@ -120,9 +110,9 @@ #options DDB_COMMANDONENTER="bt" # execute command when ddb is entered #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=0x3f8,KGDB_DEVRATE=9600 +#options KGDB_DEVNAME="\"com\"",KGDB_DEVADDR=0x2f8,KGDB_DEVRATE=57600 makeoptions DEBUG="-g" # compile full symbol table for CTF options DDB_COMMANDONENTER="trace;show registers" #options SYSCALL_STATS # per syscall counts #options SYSCALL_TIMES # per syscall times @@ -289,22 +279,35 @@ #options SPLASHSCREEN # Kernel root file system and dump configuration. config netbsd root on ? type ? -#config netbsd root on sd0a type ffs -#config netbsd root on ? type nfs +#config netbsd root on wd0a type ffs +#config netbsd root on xennet0 type nfs # # Device configuration # +## Xen-specific options +hypervisor* at mainbus? # Xen hypervisor + +vcpu* at hypervisor? # Xen virtual CPUs + +xenbus* at hypervisor? # Xen virtual bus + +xencons* at hypervisor? # Xen virtual console +balloon* at xenbus? # Xen balloon device +## end Xen-specific options + # IPMI support ipmi0 at mainbus? ipmi_acpi* at acpi? ipmi0 at ipmi_acpi? # ACPI will be used if present. If not it will fall back to MPBIOS -acpi0 at mainbus0 +acpi0 at mainbus? # ACPI access in PVH(VM) mode +acpi0 at hypervisor? # ACPI access in PV mode + options ACPI_SCANPCI # find PCI roots using ACPI options MPBIOS # configure CPUs and APICs using MPBIOS options MPBIOS_SCANPCI # MPBIOS configures PCI roots #options PCI_INTR_FIXUP # fixup PCI interrupt routing via ACPI @@ -365,15 +368,18 @@ # Basic Bus Support # PCI bus support -pci* at mainbus? bus ? +pci* at hypervisor? bus ? pci* at pchb? bus ? pci* at ppb? bus ? +# MSIX bugs with XEN3_DOM0: kern/55667, kern/56291 +options NO_PCI_MSI_MSIX + # PCI bridges pchb* at pci? dev ? function ? # PCI-Host bridges -options AGP_X86 +#options AGP_X86 # INTENTIONAL OMISSION - crashes reported with agp pcib* at pci? dev ? function ? # PCI-ISA bridges ppb* at pci? dev ? function ? # PCI-PCI bridges # XXX 'puc's aren't really bridges, but there's no better place for them here puc* at pci? dev ? function ? # PCI "universal" comm. cards @@ -388,14 +394,21 @@ fwhrng* at ichlpcib? # Intel 82802 FWH Random Number Generator #hpet* at ichlpcib? tco* at ichlpcib? # TCO watch dog timer +#agp* at pchb? # INTENTIONAL OMISSION - crashes reported with agp aapic* at pci? dev ? function ? # AMD 8131 IO apic -agp* at pchb? +# pci backend devices, used for PCI pass-through. To export a PCI device +# to a domU, the device has to be attached to the pciback driver in the dom0. +# you can force a device to attach to the pciback driver in dom0 passing +# pciback.hide=(bus:dev.fun)(bus:dev.func) to the dom0 kernel boot parameters. +# bus and dev are 2-digits hex number, func is a single-digit number: +# pciback.hide=(00:1a.0)(00:1a.1)(00:1a.7) +pciback* at pci? # pci backend device # ISA bus support -isa0 at mainbus? +isa0 at hypervisor? isa0 at pcib? #isa0 at amdpcib? isa0 at ichlpcib? @@ -416,20 +429,22 @@ #options PMS_DISABLE_POWERHOOK # Disable PS/2 reset on resume options PMS_SYNAPTICS_TOUCHPAD # Enable support for Synaptics Touchpads options PMS_ELANTECH_TOUCHPAD # Enable support for Elantech Touchpads options PMS_ALPS_TOUCHPAD # Enable support for Alps Touchpads -vga* at pci? dev ? function ? -genfb* at pci? dev ? function ? -options VCONS_DRAW_INTR -wsdisplay* at vga? console ? +#vga* at pci? dev ? function ?# Needs acpi_md_vbios_reset + # in acpi_wakeup.c (!xenpv) +#genfb* at pci? dev ? function ?# Needs acpi_md_vesa_modenum + # in acpi_wakeup.c (!xenpv) +#options VCONS_DRAW_INTR +#wsdisplay* at vga? console ? wsdisplay* at wsemuldisplaydev? wskbd* at pckbd? console ? wsmouse* at pms? mux 0 wsmouse* at wsmousedev? attimer0 at isa? pcppi0 at isa? -sysbeep0 at pcppi? +#sysbeep0 at pcppi? # Needs sysbeep_ca (from where?) # DRI legacy drivers #i915drm* at drm? # Intel i915, i945 DRM driver #mach64drm* at drm? # mach64 (3D Rage Pro, Rage) DRM driver @@ -440,19 +455,20 @@ #sisdrm* at drm? # SiS DRM driver #tdfxdrm* at drm? # 3dfx (voodoo) DRM driver # DRMKMS drivers -i915drmkms* at pci? dev ? function ? -intelfb* at intelfbbus? +# all disabled: drm uses acpi_md_vesa_modenum in acpi_wakeup.c (!xenpv) +#i915drmkms* at pci? dev ? function ? # also require disabled agp +#intelfb* at intelfbbus? -radeon* at pci? dev ? function ? -radeondrmkmsfb* at radeonfbbus? +#radeon* at pci? dev ? function ? +#radeondrmkmsfb* at radeonfbbus? #amdgpu* at pci? dev ? function ? #amdgpufb* at amdgpufbbus? -nouveau* at pci? dev ? function ? -nouveaufb* at nouveaufbbus? +#nouveau* at pci? dev ? function ? +#nouveaufb* at nouveaufbbus? # DRMUMS drivers #viadrmums* at drm? @@ -487,9 +503,12 @@ com* at cardbus? function ? # Modems and serial cards # ISA serial interfaces #options COM_HAYESP # adds Hayes ESP serial board support -com0 at isa? port 0x3f8 irq 4 # Standard PC serial ports +# 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 # Parallel Printer Interfaces @@ -1100,29 +1119,8 @@ # Middle Digital, Inc. PCI-Weasel serial console board control # devices (watchdog timer, etc.) weasel* at pci? -# Virtio devices -virtio* at pci? dev ? function ? # Virtio PCI device -viomb* at virtio? # Virtio memory balloon device -ld* at virtio? # Virtio disk device -vioif* at virtio? # Virtio network device -viornd* at virtio? # Virtio entropy device -vioscsi* at virtio? # Virtio SCSI device -#vio9p* at virtio? # Virtio 9P device - -# Hyper-V devices -vmbus* at acpi? # Hyper-V VMBus -genfb* at vmbus? # Hyper-V Synthetic Video Framebuffer -hvkbd* at vmbus? # Hyper-V Synthetic Keyboard -wskbd* at hvkbd? console ? mux 1 -hvn* at vmbus? # Hyper-V NetVSC -hvs* at vmbus? # Hyper-V StorVSC -hvheartbeat* at vmbus? # Hyper-V Heartbeat Service -hvshutdown* at vmbus? # Hyper-V Guest Shutdown Service -hvtimesync* at vmbus? # Hyper-V Time Synchronization Service -#hvkvp* at vmbus? # Hyper-V Data Exchange Service - # Pull in optional local configuration cinclude "arch/amd64/conf/GENERIC.local" @@ -1217,4 +1215,10 @@ options PAX_MPROTECT=1 # PaX mprotect(2) restrictions options PAX_MPROTECT_DEBUG=1 # PaX mprotect debug options PAX_ASLR=1 # PaX Address Space Layout Randomization options PAX_ASLR_DEBUG=1 # PaX ASLR debug + +# xen pseudo-devices +pseudo-device xenevt +pseudo-device xvif +pseudo-device xbdback + -- Emmanuel Dreyfus [email protected]