head	1.4;
access;
symbols
	netbsd-11-0-RC4:1.3.2.1
	netbsd-11-0-RC3:1.3.2.1
	netbsd-11-0-RC2:1.3.2.1
	netbsd-11-0-RC1:1.3.2.1
	perseant-exfatfs:1.3.0.4
	perseant-exfatfs-base-20250801:1.3
	netbsd-11:1.3.0.2
	netbsd-11-base:1.3;
locks; strict;
comment	@# @;


1.4
date	2025.08.23.08.48.13;	author imil;	state Exp;
branches;
next	1.3;
commitid	dkdTwum72XJoEP7G;

1.3
date	2025.03.28.05.54.49;	author imil;	state Exp;
branches
	1.3.2.1
	1.3.4.1;
next	1.2;
commitid	9Om3ccALSyfPsNOF;

1.2
date	2025.03.27.12.22.44;	author riastradh;	state Exp;
branches;
next	1.1;
commitid	E7rF9ahYVUe0EHOF;

1.1
date	2025.02.18.10.16.03;	author imil;	state Exp;
branches;
next	;
commitid	8a0WHHIOl99c8WJF;

1.3.2.1
date	2025.08.25.16.04.04;	author martin;	state Exp;
branches;
next	;
commitid	8giT1njN4WY2188G;

1.3.4.1
date	2025.03.28.05.54.49;	author perseant;	state dead;
branches;
next	1.3.4.2;
commitid	23j6GFaDws3O875G;

1.3.4.2
date	2025.08.02.05.55.43;	author perseant;	state Exp;
branches;
next	;
commitid	23j6GFaDws3O875G;


desc
@@


1.4
log
@Add `+invtsc` to the QEMU command line example, this enables the
invariant TSC feature, allowing the kernel to use CPUID 0x40000010 to
read TSC and LAPIC frequencies from the host, thus avoiding the need
for frequency calculation and gaining over 200ms in boot speed.
@
text
@# $NetBSD: MICROVM,v 1.3 2025/03/28 05:54:49 imil Exp $
#
# MICROVM kernel configuration, for use with Qemu microvm machine type
# or Firecracker.
# Stripped-down configuration with no PCI, use VirtIO over MMIO virtual
# bus instead. ACPI is disabled as Firecracker doesn't support it,
# use legacy MP tables instead.
#
# Exemple qemu usage on a Linux host to boot a NetBSD guest:
#
# qemu-system-x86_64							\
# 	-M microvm,x-option-roms=off,rtc=on,acpi=off,pic=off,accel=kvm	\
# 	-m 256 -cpu host,+invtsc -kernel ${KERNEL}			\
# 	-append "root=ld0a console=com rw -z"				\
# 	-display none -device virtio-blk-device,drive=hd0		\
# 	-drive file=${IMG},format=raw,id=hd0				\
# 	-device virtio-net-device,netdev=net0 				\
# 	-netdev user,id=net0,ipv6=off,hostfwd=::2200-:22		\
# 	-global virtio-mmio.force-legacy=false -serial stdio

machine i386 x86 xen

include         "arch/x86/conf/MICROVM.common"

options         EXEC_ELF32      # exec ELF binaries
@


1.3
log
@x86: consolidate MICROVM kernel configurations

Move common configuration options from amd64/conf/MICROVM and
i386/conf/MICROVM into a shared x86/conf/MICROVM.common file.
@
text
@d1 1
a1 1
# $NetBSD: MICROVM,v 1.2 2025/03/27 12:22:44 riastradh Exp $
d13 1
a13 1
# 	-m 256 -cpu host -kernel ${KERNEL} 				\
@


1.3.2.1
log
@Pull up following revision(s) (requested by imil in ticket #14):

	sys/arch/amd64/conf/MICROVM: revision 1.4
	sys/arch/i386/conf/MICROVM: revision 1.4

Add `+invtsc` to the QEMU command line example, this enables the
invariant TSC feature, allowing the kernel to use CPUID 0x40000010 to
read TSC and LAPIC frequencies from the host, thus avoiding the need
for frequency calculation and gaining over 200ms in boot speed.
@
text
@d1 1
a1 1
# $NetBSD: MICROVM,v 1.3 2025/03/28 05:54:49 imil Exp $
d13 1
a13 1
# 	-m 256 -cpu host,+invtsc -kernel ${KERNEL}			\
@


1.3.4.1
log
@file MICROVM was added on branch perseant-exfatfs on 2025-08-02 05:55:43 +0000
@
text
@d1 25
@


1.3.4.2
log
@Sync with HEAD
@
text
@a0 25
# $NetBSD: MICROVM,v 1.3 2025/03/28 05:54:49 imil Exp $
#
# MICROVM kernel configuration, for use with Qemu microvm machine type
# or Firecracker.
# Stripped-down configuration with no PCI, use VirtIO over MMIO virtual
# bus instead. ACPI is disabled as Firecracker doesn't support it,
# use legacy MP tables instead.
#
# Exemple qemu usage on a Linux host to boot a NetBSD guest:
#
# qemu-system-x86_64							\
# 	-M microvm,x-option-roms=off,rtc=on,acpi=off,pic=off,accel=kvm	\
# 	-m 256 -cpu host -kernel ${KERNEL} 				\
# 	-append "root=ld0a console=com rw -z"				\
# 	-display none -device virtio-blk-device,drive=hd0		\
# 	-drive file=${IMG},format=raw,id=hd0				\
# 	-device virtio-net-device,netdev=net0 				\
# 	-netdev user,id=net0,ipv6=off,hostfwd=::2200-:22		\
# 	-global virtio-mmio.force-legacy=false -serial stdio

machine i386 x86 xen

include         "arch/x86/conf/MICROVM.common"

options         EXEC_ELF32      # exec ELF binaries
@


1.2
log
@virtio(4): Consolidate kernel configs.

No functional change intended.

Leave `# XXX ?' comments where I don't know why the driver in
question is excluded.  (Typical reason is that PAGE_SIZE is not 4096
but I didn't investigate -- if you do investigate, please either
update the comment if you determine a reason, or enable the driver if
you don't.)

PR kern/59211: vio9p(4): missing from various GENERICs and MAKEDEVs
@
text
@d1 1
a1 1
# $NetBSD: MICROVM,v 1.1 2025/02/18 10:16:03 imil Exp $
a21 2
include         "conf/std"      # MI standard options
include         "arch/xen/conf/std.xenversion"
d23 2
a24 1
options         CPU_IN_CKSUM
a25 111
options         EXEC_SCRIPT     # exec #! scripts
options         MTRR
options         MULTIPROCESSOR

options         CHILD_MAX=1024  # 160 is too few
options         OPEN_MAX=1024   # 128 is too few

mainbus0 at root
cpu* at mainbus?
ioapic* at mainbus? apid ?

options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
maxusers	8		# estimated number of users

options 	INSECURE	# disable kernel security levels - X needs this

options 	RTC_OFFSET=0	# hardware clock is this many mins. west of GMT

options 	PIPE_SOCKETPAIR	# smaller, but slower pipe(2)

# Xen PV support for PVH and HVM guests, needed for PVH boot
options 	XENPVHVM
options 	XEN
hypervisor*	at mainbus?		# Xen hypervisor
xenbus*	 	at hypervisor?		# Xen virtual bus
xencons*	at hypervisor?		# Xen virtual console

# Include NetBSD 10 compatibility
options		COMPAT_100
#
# Because gcc omits the frame pointer for any -O level, the line below
# is needed to make backtraces in DDB work.
#
makeoptions	COPTS="-O2 -fno-omit-frame-pointer"

# File systems
#include "conf/filesystems.config"
file-system FFS
file-system EXT2FS
file-system KERNFS
file-system MFS
file-system TMPFS
file-system PTYFS
file-system MSDOSFS
file-system PROCFS

options		DKWEDGE_AUTODISCOVER
options		DKWEDGE_METHOD_GPT
# File system options
# ffs
options 	FFS_NO_SNAPSHOT	# No FFS snapshot support
options 	WAPBL		# File system journaling support

# Networking options
#options 	GATEWAY		# packet forwarding
options 	INET		# IP + ICMP + TCP + UDP
options 	INET6		# IPV6

# Kernel root file system and dump configuration.
config		netbsd	root on ? type ?

#
# Device configuration
#

# ACPI will be used if present. If not it will fall back to MPBIOS
options 	MPBIOS			# configure CPUs and APICs using MPBIOS
# Provide bug-for-bug compatibility with Linux in MP Table searching
# and parsing.  Firecracker relies on these bugs.
options		MPTABLE_LINUX_BUG_COMPAT

#pci*	at mainbus? bus ?
#acpi0	at mainbus0

# ISA bus support
isa0	at mainbus?

# ISA serial interfaces
com0	at isa? port 0x3f8 irq 4	# Standard PC serial ports

# Virtual bus for non-PCI devices
pv* at pvbus?

## Virtio devices
# Use MMIO by default
virtio* at pv?
#virtio* at acpi?
#virtio* at pci? dev ? function ?	# Virtio PCI device

include "dev/virtio/virtio.config"
no viomb* at virtio?			# XXX ?
no vioscsi* at virtio?			# XXX ?

pseudo-device	md			# memory disk device (ramdisk)
#options 	MEMORY_DISK_HOOKS	# enable md specific hooks
#options 	MEMORY_DISK_DYNAMIC	# enable dynamic resizing
#
pseudo-device	vnd			# disk-like interface to files
#options 	VND_COMPRESSION		# compressed vnd(4)

## network pseudo-devices
pseudo-device	bpfilter		# Berkeley packet filter
pseudo-device	loop			# network loopback

## miscellaneous pseudo-devices
pseudo-device	pty			# pseudo-terminals
# userland interface to drivers, including autoconf and properties retrieval
pseudo-device	drvctl

file-system	PUFFS
pseudo-device	putter
@


1.1
log
@Add support for non-Xen PVH guests to i386, PR kern/57813
Tested on QEMU by me, Xen PV & PVH by bouyer@@.
@
text
@d1 1
a1 1
# $NetBSD$
a114 1
#viomb*	at virtio?			# Virtio memory balloon device
d116 3
a118 8
ld*	at virtio?			# Virtio disk device
vioif*	at virtio?			# Virtio network device
viornd* at virtio?			# Virtio entropy device
viocon* at virtio?

vio9p*	at virtio?			# Virtio 9P device
#vioscsi* at virtio?
#scsibus* at vioscsi?
@

