diff -Nur -x compile sys.orig/arch/i386/conf/a sys.lilyvm/arch/i386/conf/a --- sys.orig/arch/i386/conf/a 1970-01-01 00:00:00.000000000 +0000 +++ sys.lilyvm/arch/i386/conf/a 2005-06-08 17:20:55.000000000 +0000 @@ -0,0 +1,1211 @@ +# $NetBSD: GENERIC,v 1.595.2.11 2004/08/30 09:52:37 tron 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. +# +# 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. + +include "arch/i386/conf/std.i386" + +options INCLUDE_CONFIG_FILE # embed config file in kernel binary + +#ident "GENERIC-$Revision: 1.2 $" + +maxusers 32 # estimated number of users + +# CPU support. At least one is REQUIRED. +options I386_CPU +options I486_CPU +options I586_CPU +options I686_CPU + +# CPU-related options. +options MATH_EMULATE # floating point emulation +#options VM86 # virtual 8086 emulation +#options USER_LDT # user-settable LDT; used by WINE +# insert delay no-ops in interrupts; recommended on very old machines +#options PIC_DELAY + +options MTRR # memory-type range register syscall support +# doesn't work with MP just yet.. +options PERFCTRS # performance-monitoring counters support + +# delay between "rebooting ..." message and hardware reset, in milliseconds +#options CPURESET_DELAY=2000 + +# This option allows you to force a serial console at the specified +# I/O address. see console(4) for details. +options CONSDEVNAME="\"com\"",CONADDR=0x3f8,CONSPEED=57600 +# you don't want the option below ON iff you are using the +# serial console option of the new boot strap code. +options CONS_OVERRIDE # Always use above! independent of boot info + +# The following options override the memory sizes passed in from the boot +# block. Use them *only* if the boot block is unable to determine the correct +# values. Note that the BIOS may *correctly* report less than 640k of base +# memory if the extended BIOS data area is located at the top of base memory +# (as is the case on most recent systems). +#options REALBASEMEM=639 # size of base memory (in KB) +#options REALEXTMEM=15360 # size of extended memory (in KB) + +# Standard system options + +options INSECURE # disable kernel security levels - X needs this + +options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT +options NTP # NTP phase/frequency locked loop +#options NO_TSC_TIME # Don't use TSC microtime, even if available. + # Improves time behavior under VMware. + +options KTRACE # system call tracing via ktrace(1) +options SYSTRACE # system call vetting via systrace(1) + +options SYSVMSG # System V-like message queues +options SYSVSEM # System V-like semaphores +#options SEMMNI=10 # number of semaphore identifiers +#options SEMMNS=60 # number of semaphores in system +#options SEMUME=10 # max number of undo entries per process +#options SEMMNU=30 # number of undo structures in system +options SYSVSHM # System V-like memory sharing +#options SHMMAXPGS=2048 # 2048 pages is the default +options P1003_1B_SEMAPHORE # p1003.1b semaphore support + +options LKM # loadable kernel modules + +#options USERCONF # userconf(4) support +##options PIPE_SOCKETPAIR # smaller, but slower pipe(2) +#options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel +# +## Beep when it is safe to power down the system (requires sysbeep) +##options BEEP_ONHALT +## Some tunable details of the above feature (default values used below) +##options BEEP_ONHALT_COUNT=3 # Times to beep +##options BEEP_ONHALT_PITCH=1500 # Default frequency (in Hz) +##options BEEP_ONHALT_PERIOD=250 # Default duration (in msecs) +# +## Enable experimental buffer queue strategy for better responsiveness under +## high disk I/O load. Likely stable but not yet the default. +##options NEW_BUFQ_STRATEGY +# +## Diagnostic/debugging support options +##options DIAGNOSTIC # expensive kernel consistency checks +##options DEBUG # expensive debugging checks/support +##options KMEMSTATS # kernel memory statistics (vmstat -m) +#options DDB # in-kernel debugger +##options DDB_ONPANIC=1 # see also sysctl(8): `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 +##makeoptions DEBUG="-g" # compile full symbol table +# +## Compatibility options +#options COMPAT_NOMID # NetBSD 0.8, 386BSD, and BSDI +#options COMPAT_09 # NetBSD 0.9 +#options COMPAT_10 # NetBSD 1.0 +#options COMPAT_11 # NetBSD 1.1 +#options COMPAT_12 # NetBSD 1.2, 386BSD, and BSDI +#options COMPAT_13 # NetBSD 1.3, 386BSD, and BSDI +#options COMPAT_14 # NetBSD 1.4 +#options COMPAT_15 # NetBSD 1.5 +#options COMPAT_16 # NetBSD 1.6 +#options COMPAT_43 # 4.3BSD, 386BSD, and BSDI +#options COMPAT_386BSD_MBRPART # recognize old partition ID +##options TCP_COMPAT_42 # 4.2BSD TCP/IP bug compat. Not recommended. +# +#options COMPAT_OSSAUDIO # OSS (Voxware) audio driver compatibility +#options COMPAT_SVR4 # binary compatibility with SVR4 +#options COMPAT_IBCS2 # binary compatibility with SCO and ISC +#options COMPAT_LINUX # binary compatibility with Linux +#options COMPAT_FREEBSD # binary compatibility with FreeBSD +##options COMPAT_MACH # binary compatibility with Mach binaries +##options COMPAT_DARWIN # binary compatibility with Darwin binaries +##options EXEC_MACHO # exec MACH-O binaries +##options COMPAT_PECOFF # kernel support to run Win32 apps +# +## 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 PORTAL # portal filesystem (still experimental) +file-system PROCFS # /proc +file-system UMAPFS # NULLFS + uid and gid remapping +file-system UNION # union file system +#file-system CODA # Coda File System; also needs vcoda (below) +#file-system SMBFS # experimental - CIFS; also needs nsmb (below) +# +## File system options +options QUOTA # UFS quotas +##options FFS_EI # FFS Endian Independent support +options SOFTDEP # FFS soft updates support. +options NFSSERVER # Network File System server +##options EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and +# # immutable) behave as system flags. +# +## Networking options +##options GATEWAY # packet forwarding +options INET # IP + ICMP + TCP + UDP +options INET6 # IPV6 +##options IPSEC # IP security +##options IPSEC_ESP # IP security (encryption part; define w/IPSEC) +##options IPSEC_DEBUG # debug for IP security +##options MROUTING # IP multicast routing +#options NS # XNS +##options NSIP # XNS tunneling over IP +#options ISO,TPIP # OSI +##options EON # OSI tunneling over IP +#options CCITT,LLC,HDLC # X.25 +#options NETATALK # AppleTalk networking protocols +#options PPP_BSDCOMP # BSD-Compress compression support for PPP +#options PPP_DEFLATE # Deflate compression support for PPP +#options PPP_FILTER # Active filter support for PPP (requires bpf) +#options PFIL_HOOKS # pfil(9) packet filter hooks +#options IPFILTER_LOG # ipmon(8) log support +##options IPFILTER_DEFAULT_BLOCK # block all packets by default +##options TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG +# +##options ALTQ # Manipulate network interfaces' output queues +##options ALTQ_BLUE # Stochastic Fair Blue +##options ALTQ_CBQ # Class-Based Queueing +##options ALTQ_CDNR # Diffserv Traffic Conditioner +##options ALTQ_FIFOQ # First-In First-Out Queue +##options ALTQ_FLOWVALVE # RED/flow-valve (red-penalty-box) +##options ALTQ_HFSC # Hierarchical Fair Service Curve +##options ALTQ_LOCALQ # Local queueing discipline +##options ALTQ_PRIQ # Priority Queueing +##options ALTQ_RED # Random Early Detection +##options ALTQ_RIO # RED with IN/OUT +##options ALTQ_WFQ # Weighted Fair Queueing +# +## These options enable verbose messages for several subsystems. +## Warning, these may compile large string tables into the kernel! +##options ACPIVERBOSE # verbose ACPI device autoconfig messages +#options EISAVERBOSE # verbose EISA device autoconfig messages +#options MIIVERBOSE # verbose PHY autoconfig messages +#options PCIVERBOSE # verbose PCI device autoconfig messages +##options PCI_CONFIG_DUMP # verbosely dump PCI config space +##options PCMCIAVERBOSE # verbose PCMCIA configuration messages +#options SCSIVERBOSE # human readable SCSI error messages +#options USBVERBOSE # verbose USB device autoconfig messages +##options PNPBIOSVERBOSE # verbose PnP BIOS messages +##options PNPBIOSDEBUG # more fulsome PnP BIOS debugging messages +#options I2OVERBOSE # verbose I2O driver messages +#options MCAVERBOSE # verbose MCA device autoconfig messages +# +#options NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM +# +## +## 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 # VT handling +#options WSDISPLAY_COMPAT_RAWKBD # can get raw scancodes +## see dev/pckbc/wskbdmap_mfii.c for implemented layouts +##options PCKBD_LAYOUT="(KB_DE | KB_NODEAD)" +## allocate a number of virtual screens at autoconfiguration time +##options WSDISPLAY_DEFAULTSCREENS=4 +## use a large software cursor that doesn't blink +#options PCDISPLAY_SOFTCURSOR +## modify the screen type of the console; defaults to "80x25" +##options VGA_CONSOLE_SCREENTYPE="\"80x24\"" +## work around a hardware bug that loaded fonts don't work; found on ATI cards +##options VGA_CONSOLE_ATI_BROKEN_FONTSEL +## the following enables some functions to get mouse console support. +## if you want a really secure system, it may be better not to enable them, +## see wsmoused(8), section SECURITY CONSIDERATIONS for more info. +##options WSDISPLAY_CHARFUNCS # mouse console support +## console scrolling support. +##options WSDISPLAY_SCROLLSUPPORT +## enable VGA raster mode capable of displaying multilingual text on console +##options VGA_RASTERCONSOLE +# +## 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 +# +## +## Device configuration +## +# +mainbus0 at root +# +cpu* at mainbus? +##ioapic* at mainbus? +# +## Doesn't do anything yet. +##p64h2apic* at pci? dev? function? # P64H2 IOxAPIC +# +##apm0 at mainbus0 # Advanced power management +# +## Tuning for power management, see apm(4) for more details. +##options APM_NO_IDLE # Don't call BIOS CPU idle function +##options APM_V10_ONLY # Use only the APM 1.0 calls +##options APM_NO_POWEROFF # Don't power off on halt(8) +##options APM_POWER_PRINT # Print stats on the console +##options APM_DISABLE_INTERRUPTS=0 # Don't disable interrupts +# +# +## Basic Bus Support +# +## Advanced Control and Power Interface +# +## This option can be used to retrieve CPU and APIC information. +## that I/O APICs can be used if ACPI is enabled below. +## To use the I/O APIC(s), enable the ioapic line above. +##options MPBIOS # configure CPUs and APICs using MPBIOS +##options MPBIOS_SCANPCI # find PCI roots using MPBIOS +##options MPACPI # configure CPUs and APICs using ACPI +# # (acpi at mainbus must also be enabled) +##options MPACPI_SCANPCI # find PCI roots using MPACPI +# +##acpi0 at mainbus0 +##options ACPI_PCI_FIXUP # PCI interrupt routing via ACPI +##options ACPI_ACTIVATE_DEV # If set, activate inactive devices +##options ACPICA_PEDANTIC # force strict conformance to the Spec. +##options ACPI_DISABLE_ON_POWEROFF # disable acpi on power off +# +## ACPI devices +##acpiacad* at acpi? # ACPI AC Adapter +##acpibat* at acpi? # ACPI Battery +##acpibut* at acpi? # ACPI Button +##acpiec* at acpi? # ACPI Embedded Controller +##acpilid* at acpi? # ACPI Lid Switch +##acpitz* at acpi? # ACPI Thermal Zone +# +## Mainboard devices +##com* at acpi? # Serial communications interface +##fdc* at acpi? # Floppy disk controller +##lpt* at acpi? # Parallel port +##npx* at acpi? # Math coprocessor +##pckbc* at acpi? # PC keyboard controller +##wss* at acpi? # NeoMagic 256AV in wss mode +# +## Sony Vaio jog dial +##spic* at acpi? # Sony Programmable I/O Controller +##wsmouse* at spic? +# +## Toshiba Libretto devices +##vald* at acpi? +# +## Plug-and-Play BIOS and attached devices +# +##pnpbios* at mainbus? +# +## mainboard audio chips +##ess* at pnpbios? index ? # ESS AudioDrive +##sb* at pnpbios? index ? # NeoMagic 256AV in sb mode +##wss* at pnpbios? index ? # NeoMagic 256AV in wss mode +##ym* at pnpbios? index ? # OPL3-SA3 +# +## com port +## If enabled, consider changing "com0", "com1", and "com2" under "ISA Serial +## Interfaces" to "com*", otherwise com2 will attach at pnpbios? and there +## will be no com0. A side effect is pcmcia (and other) com? previously +## starting at com3 may attach as com1 or com2. +##com* at pnpbios? index ? # serial ports +# +## parallel port +## The above "com*" comments apply, cf. "lpt0" under "ISA parallel +## "printer interfaces". +##lpt* at pnpbios? index ? # parallel ports +# +##pckbc* at pnpbios? index ? # PC keyboard/mouse controller +##fdc* at pnpbios? index ? # floppy controller +# +## IDE controller on Toshiba Portege 3000 series (crippled PCI device) +##pciide* at pnpbios? index ? +# +## PCI bus support +#pci* at mainbus? bus ? +#pci* at pchb? bus ? +#pci* at ppb? bus ? +# +## Configure PCI using BIOS information +##options PCIBIOS # PCI BIOS support +##options PCIBIOSVERBOSE # PCI BIOS verbose info +##options PCIBIOS_ADDR_FIXUP # fixup PCI I/O addresses +##options PCIBIOS_BUS_FIXUP # fixup PCI bus numbering +##options PCIBIOS_INTR_FIXUP # fixup PCI interrupt routing +##options PCIBIOS_IRQS_HINT=0x0a00 # PCI interrupts hint. IRQ 9 or 11 +##options PCIBIOS_INTR_GUESS # see pcibios(4) +##options PCIINTR_DEBUG # super-verbose PCI interrupt fixup +# +## System Controllers +#elansc* at pci? dev ? function ? # AMD Elan SC520 System Controller +# +## PCI bridges +#pchb* at pci? dev ? function ? # PCI-Host bridges +#pceb* at pci? dev ? function ? # PCI-EISA bridges +#pcib* at pci? dev ? function ? # PCI-ISA bridges +##ichlpcib* at pci? dev ? function ? # Intel ICH PCI-ISA w/ watchdog support +#pcmb* at pci? dev ? function ? # PCI-MCA 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 +# +#agp* at pchb? +# +# +## EISA bus support +#eisa0 at mainbus? +#eisa0 at pceb? +# +## ISA bus support +isa0 at mainbus? +#isa0 at pceb? +#isa0 at pcib? +##isa0 at ichlpcib? +# +## PCMCIA bus support +#pcmcia* at pcic? controller ? socket ? +#pcmcia* at tcic? controller ? socket ? +# +## MCA bus support +#mca0 at mainbus? +# +## ISA PCMCIA controllers +#pcic0 at isa? port 0x3e0 iomem 0xd0000 iosiz 0x10000 +#pcic1 at isa? port 0x3e2 iomem 0xe0000 iosiz 0x4000 +#pcic2 at isa? port 0x3e4 iomem 0xe0000 iosiz 0x4000 +#tcic0 at isa? port 0x240 iomem 0xd0000 iosiz 0x10000 +# +## PCI PCMCIA controllers +#pcic0 at pci? dev? function ? +# +## ISA Plug-and-Play bus support +#isapnp0 at isa? +# +## ISA Plug-and-Play PCMCIA controllers +#pcic* at isapnp? +# +## CardBus bridge support +#cbb* at pci? dev ? function ? +#cardslot* at cbb? +# +## CardBus bus support +#cardbus* at cardslot? +#pcmcia* at cardslot? +# +## Coprocessor Support +# +## Math Coprocessor support +npx0 at isa? port 0xf0 irq 13 # x86 math coprocessor +# +# +## Console Devices +# +## ISA console +##pc0 at isa? port 0x60 irq 1 # pccons generic PC console driver +## Keyboard layout configuration for pccons +##options FRENCH_KBD +##options FINNISH_KBD +##options GERMAN_KBD +##options NORWEGIAN_KBD +## pccons-specific options: +##options XSERVER_DDB # PF12 gets you into DDB when X is running +##options XSERVER # X server support +# +# +## wscons +#pckbc0 at isa? # pc keyboard controller +#pckbd* at pckbc? # PC keyboard +#pms* at pckbc? # PS/2 mouse for wsmouse +##options PMS_DISABLE_POWERHOOK # Disable PS/2 reset on resume +#vga0 at isa? +#vga* at pci? dev ? function ? +#pcdisplay0 at isa? # CGA, MDA, EGA, HGA +##machfb* at pci? dev ? function ? # ATI Mach64 framebuffer driver +#wsdisplay* at vga? console ? +#wsdisplay* at pcdisplay? console ? +##wsdisplay* at machfb? console ? +#wskbd* at pckbd? console ? +#wsmouse* at pms? mux 0 +# +#pcppi0 at isa? +#sysbeep0 at pcppi? +# +## Serial Devices +# +## PCI serial interfaces +#com* at puc? port ? # 16x50s on "universal" comm boards +#cy* at pci? dev ? function ? # Cyclades Cyclom-Y serial boards +#cz* at pci? dev ? function ? # Cyclades-Z multi-port serial boards +# +## ISA Plug-and-Play serial interfaces +#com* at isapnp? # Modems and serial boards +# +## PCMCIA serial interfaces +#com* at pcmcia? function ? # Modems and serial cards +# +#pcmcom* at pcmcia? function ? # PCMCIA multi-port serial cards +#com* at pcmcom? slave ? # ...and the slave devices +# +## CardBus serial interfaces +##com* at cardbus? dev ? 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 +com1 at isa? port 0x2f8 irq 3 +com2 at isa? port 0x3e8 irq 5 +##com3 at isa? port 0x2e8 irq 9 +##ast0 at isa? port 0x1a0 irq 5 # AST 4-port serial cards +##com* at ast? slave ? +##boca0 at isa? port 0x100 irq 5 # BOCA 8-port serial cards +##boca0 at isa? port 0x100 irq 5 # BOCA 16-port serial cards (BB2016) +##boca1 at isa? port 0x140 irq 5 # this line is also needed for BB2016 +##com* at boca? slave ? +##tcom0 at isa? port 0x100 irq 7 # TC-800 8-port serial cards +##com* at tcom? slave ? +##rtfps0 at isa? port 0x1230 irq 10 # RT 4-port serial cards +##com* at rtfps? slave ? +##cy0 at isa? iomem 0xd4000 irq 12 # Cyclades serial cards +##addcom0 at isa? port 0x108 irq 5 # Addonics FlexPort 8S +##com* at addcom? slave ? +##moxa0 at isa? port 0x100 irq 5 # MOXA C168H serial card (experimental) +##com* at moxa? slave ? +# +## MCA serial interfaces +#com* at mca? slot ? # 16x50s on comm boards +# +## Parallel Printer Interfaces +# +## PCI parallel printer interfaces +#lpt* at puc? port ? # || ports on "universal" comm boards +# +## ISA parallel printer interfaces +#lpt0 at isa? port 0x378 irq 7 # standard PC parallel ports +#lpt1 at isa? port 0x278 +#lpt2 at isa? port 0x3bc +# +## Hardware monitors +# +## LM7[89] and compatible hardware monitors +##lm0 at isa? port 0x290 # other common ports: 0x280, 0x310 +# +## VIA VT82C686A hardware monitor +##viapm* at pci? dev ? function ? +##viaenv* at viapm? +# +# +## I2O devices +#iop* at pci? dev ? function ? # I/O processor +#iopsp* at iop? tid ? # SCSI/FC-AL ports +#ld* at iop? tid ? # block devices +#dpti* at iop? tid 0 # DPT/Adaptec control interface +# +# +## SCSI Controllers and Devices +# +## PCI SCSI controllers +#adv* at pci? dev ? function ? # AdvanSys 1200[A,B], 9xx[U,UA] SCSI +#adw* at pci? dev ? function ? # AdvanSys 9x0UW[D], 3940U[2,3]W SCSI +#ahc* at pci? dev ? function ? # Adaptec [23]94x, aic78x0 SCSI +#ahd* at pci? dev ? function ? # Adaptec 29320, 39320 (aic790x) SCSI +#bha* at pci? dev ? function ? # BusLogic 9xx SCSI +#dpt* at pci? dev ? function ? # DPT SmartCache/SmartRAID +#iha* at pci? dev ? function ? # Initio INIC-940/950 SCSI +#isp* at pci? dev ? function ? # Qlogic ISP [12]0x0 SCSI/FibreChannel +#mly* at pci? dev ? function ? # Mylex AcceleRAID and eXtremeRAID +#mpt* at pci? dev ? function ? # LSI Fusion SCSI/FC +#njs* at pci? dev ? function ? # Workbit NinjaSCSI-32 +#pcscp* at pci? dev ? function ? # AMD 53c974 PCscsi-PCI SCSI +#siop* at pci? dev ? function ? # Symbios 53c8xx SCSI +#esiop* at pci? dev ? function ? # Symbios 53c875 SCSI and newer +##options SIOP_SYMLED # drive the act. LED in software +#trm* at pci? dev ? function ? # Tekram DC-395U/UW/F, DC-315/U SCSI +# +## EISA SCSI controllers +#ahb* at eisa? slot ? # Adaptec 174[02] SCSI +#ahc* at eisa? slot ? # Adaptec 274x, aic7770 SCSI +#bha* at eisa? slot ? # BusLogic 7xx SCSI +#dpt* at eisa? slot ? # DPT EATA SCSI +#uha* at eisa? slot ? # UltraStor 24f SCSI +# +## PCMCIA SCSI controllers +#aic* at pcmcia? function ? # Adaptec APA-1460 SCSI +#esp* at pcmcia? function ? # Qlogic ESP406/FAS408 SCSI +# +## ISA Plug-and-Play SCSI controllers +#aha* at isapnp? # Adaptec AHA-154[02 +#aic* at isapnp? # Adaptec AHA-1520B +# +## ISA SCSI controllers +#adv0 at isa? port ? irq ? drq ? # AdvanSys APB-514[02] SCSI +#aha0 at isa? port 0x330 irq ? drq ? # Adaptec 154[02] SCSI +#aha1 at isa? port 0x334 irq ? drq ? +#ahc0 at isa? port ? irq ? # Adaptec 284x SCSI +#aic0 at isa? port 0x340 irq 11 # Adaptec 152[02] SCSI +#bha0 at isa? port 0x330 irq ? drq ? # BusLogic [457]4X SCSI +#bha1 at isa? port 0x334 irq ? drq ? +## The "nca" and "dpt" probes might give false hits or hang your machine. +##dpt0 at isa? port 0x170 irq ? drq ? # DPT SmartCache/SmartRAID +##nca0 at isa? port 0x360 irq 15 # Port-mapped NCR 53C80 controller +##nca1 at isa? iomem 0xd8000 irq 5 # Memory-mapped controller (T128, etc.) +#sea0 at isa? iomem 0xc8000 irq 5 # Seagate/Future Domain SCSI +#uha0 at isa? port 0x330 irq ? drq ? # UltraStor [13]4f SCSI +#uha1 at isa? port 0x340 irq ? drq ? +#wds0 at isa? port 0x350 irq 15 drq 6 # WD7000 and TMC-7000 controllers +#wds1 at isa? port 0x358 irq 11 drq 5 +# +## CardBus SCSI cards +##adv* at cardbus? dev ? function ? # AdvanSys 1200[A,B], 9xx[U,UA] SCSI +##ahc* at cardbus? dev ? function ? # Adaptec ADP-1480 +##njs* at cardbus? dev ? function ? # Workbit NinjaSCSI-32 +# +## MCA SCSI cards +#aha* at mca? slot ? # Adaptec AHA-1640 +# +## SCSI bus support +#scsibus* at scsi? +# +## SCSI devices +#sd* at scsibus? target ? lun ? # SCSI disk drives +#st* at scsibus? target ? lun ? # SCSI tape drives +#cd* at scsibus? target ? lun ? # SCSI CD-ROM drives +#ch* at scsibus? target ? lun ? # SCSI autochangers +#ses* at scsibus? target ? lun ? # SCSI Enclosure Services devices +#ss* at scsibus? target ? lun ? # SCSI scanners +#uk* at scsibus? target ? lun ? # SCSI unknown +# +# +## RAID controllers and devices +#aac* at pci? dev ? function ? # Adaptec AAC family +#amr* at pci? dev ? function ? # AMI/LSI Logic MegaRAID +#cac* at eisa? slot ? # Compaq EISA array controllers +#cac* at pci? dev ? function ? # Compaq PCI array controllers +#icp* at pci? dev ? function ? # ICP-Vortex GDT & Intel RAID +#mlx* at pci? dev ? function ? # Mylex DAC960 & DEC SWXCR family +#mlx* at eisa? slot ? # Mylex DAC960 & DEC SWXCR family +#twe* at pci? dev ? function ? # 3ware Escalade RAID controllers +# +#ld* at aac? unit ? # logical disk devices +#ld* at amr? unit ? +#ld* at cac? unit ? +#ld* at icp? unit ? +#ld* at twe? unit ? +#ld* at mlx? unit ? +# +#icpsp* at icp? unit ? # SCSI pass-through +# +## IDE and related devices +## PCI IDE controllers - see pciide(4) for supported hardware. +## The 0x0001 flag force the driver to use DMA, even if the driver doesn't know +## how to set up DMA modes for this chip. This may work, or may cause +## a machine hang with some controllers. +#pciide* at pci? dev ? function ? flags 0x0000 # GENERIC pciide driver +#acardide* at pci? dev ? function ? # Acard IDE controllers +#aceride* at pci? dev ? function ? # Acer Lab IDE controllers +#artsata* at pci? dev ? function ? # Intel i31244 SATA controller +#cmdide* at pci? dev ? function ? # CMD tech IDE controllers +#cypide* at pci? dev ? function ? # Cypress IDE controllers +#geodeide* at pci? dev ? function ? # AMD Geode IDE controllers +#hptide* at pci? dev ? function ? # Triones/HighPoint IDE controllers +#optiide* at pci? dev ? function ? # Opti IDE controllers +#piixide* at pci? dev ? function ? # Intel IDE controllers +#pdcide* at pci? dev ? function ? # Promise IDE controllers +#rccide* at pci? dev ? function ? # ServerWorks IDE controllers +#satalink* at pci? dev ? function ? # SiI SATALink controllers +#siside* at pci? dev ? function ? # SiS IDE controllers +#slide* at pci? dev ? function ? # Symphony Labs IDE controllers +#stpcide* at pci? dev ? function ? # STMicro STPC IDE controllers +#viaide* at pci? dev ? function ? # VIA/AMD/Nvidia IDE controllers +# +## ISA Plug-and-Play IDE controllers +#wdc* at isapnp? +# +## PCMCIA IDE controllers +#wdc* at pcmcia? function ? +# +## 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 +# +## ATA (IDE) bus support +#atabus* at ata? +# +## 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". +#wd* at atabus? drive ? flags 0x0000 +# +## ATA RAID configuration support, as found on some Promise controllers. +#pseudo-device ataraid +#ld* at ataraid? vendtype ? unit ? +# +## ATAPI bus support +#atapibus* at atapi? +# +## ATAPI devices +## flags have the same meaning as for IDE drives. +#cd* at atapibus? drive ? flags 0x0000 # ATAPI CD-ROM drives +#sd* at atapibus? drive ? flags 0x0000 # ATAPI disk drives +#st* at atapibus? drive ? flags 0x0000 # ATAPI tape drives +#uk* at atapibus? drive ? flags 0x0000 # ATAPI unknown +# +# +## Miscellaneous mass storage devices +# +## ISA floppy +#fdc0 at isa? port 0x3f0 irq 6 drq 2 # standard PC floppy controllers +##fdc1 at isa? port 0x370 irq ? drq ? +#fd* at fdc? drive ? # the drives themselves +## some machines need you to do this instead of fd* +##fd0 at fdc0 drive 0 +# +## ISA CD-ROM devices +##mcd0 at isa? port 0x300 irq 10 # Mitsumi CD-ROM drives +# +## ISA tape devices +## note: the wt driver conflicts unpleasantly with SMC boards at the +## same I/O address. The probe reprograms their EEPROMs. Don't +## uncomment it unless you are actually using it. +##wt0 at isa? port 0x308 irq 5 drq 1 # Archive and Wangtek QIC tape drives +# +## MCA ESDI devices +#edc* at mca? slot ? # IBM ESDI Disk Controllers +#ed* at edc? +# +# +## Network Interfaces +# +## PCI network interfaces +#an* at pci? dev ? function ? # Aironet PC4500/PC4800 (802.11) +#ath* at pci? dev ? function ? # Atheros 5210/5211/5212 802.11 +#atw* at pci? dev ? function ? # ADMtek ADM8211 (802.11) +#bce* at pci? dev ? function ? # Broadcom 4401 10/100 Ethernet +#bge* at pci? dev ? function ? # Broadcom 570x gigabit Ethernet +#en* at pci? dev ? function ? # ENI/Adaptec ATM +#ep* at pci? dev ? function ? # 3Com 3c59x +#epic* at pci? dev ? function ? # SMC EPIC/100 Ethernet +#esh* at pci? dev ? function ? # Essential HIPPI card +#ex* at pci? dev ? function ? # 3Com 90x[BC] +#fpa* at pci? dev ? function ? # DEC DEFPA FDDI +#fxp* at pci? dev ? function ? # Intel EtherExpress PRO 10+/100B +#gsip* at pci? dev ? function ? # NS83820 Gigabit Ethernet +##hme* at pci? dev ? function ? # Sun Microelectronics STP2002-STQ +#le* at pci? dev ? function ? # PCnet-PCI Ethernet +#lmc* at pci? dev ? function ? # Lan Media Corp SSI/HSSI/DS3 +#mtd* at pci? dev ? function ? # Myson MTD803 3-in-1 Ethernet +#ne* at pci? dev ? function ? # NE2000-compatible Ethernet +#ntwoc* at pci? dev ? function ? # Riscom/N2 PCI Sync Serial +#pcn* at pci? dev ? function ? # AMD PCnet-PCI Ethernet +#re* at pci? dev ? function ? # Realtek 8139C+/8169/8169S/8110S +#rtk* at pci? dev ? function ? # Realtek 8129/8139 +#sf* at pci? dev ? function ? # Adaptec AIC-6915 Ethernet +#sip* at pci? dev ? function ? # SiS 900/DP83815 Ethernet +#skc* at pci? dev ? function ? # SysKonnect SK9821 Gigabit Ethernet +#sk* at skc? # SysKonnect SK9821 Gigabit Ethernet +#ste* at pci? dev ? function ? # Sundance ST-201 Ethernet +#stge* at pci? dev ? function ? # Sundance/Tamarack TC9021 Gigabit +#ti* at pci? dev ? function ? # Alteon ACEnic gigabit Ethernet +#tl* at pci? dev ? function ? # ThunderLAN-based Ethernet +#tlp* at pci? dev ? function ? # DECchip 21x4x and clones +#vr* at pci? dev ? function ? # VIA Rhine Fast Ethernet +#wi* at pci? dev ? function ? # Intersil Prism Mini-PCI (802.11b) +#wm* at pci? dev ? function ? # Intel 8254x gigabit +# +## EISA network interfaces +#ep* at eisa? slot ? # 3Com 3c579 Ethernet +#fea* at eisa? slot ? # DEC DEFEA FDDI +#tlp* at eisa? slot ? # DEC DE-425 Ethernet +# +## ISA Plug-and-Play network interfaces +#an* at isapnp? # Aironet 802.11 +#ep* at isapnp? # 3Com 3c509 Ethernet +#fmv* at isapnp? # Fujitsu FMV-183 +#le* at isapnp? # AMD PCnet-ISA Ethernet +#ne* at isapnp? # NE2000-compatible Ethernet +#tr* at isapnp? # IBM/3COM TROPIC Token-Ring +# +## PCMCIA network interfaces +#an* at pcmcia? function ? # Aironet PC4500/PC4800 (802.11) +#awi* at pcmcia? function ? # BayStack 650/660 (802.11FH/DS) +#cnw* at pcmcia? function ? # Xircom/Netwave AirSurfer +#ep* at pcmcia? function ? # 3Com 3c589 and 3c562 Ethernet +#mbe* at pcmcia? function ? # MB8696x based Ethernet +#ne* at pcmcia? function ? # NE2000-compatible Ethernet +#ray* at pcmcia? function ? # Raytheon Raylink (802.11) +#sm* at pcmcia? function ? # Megahertz Ethernet +## tr at pcmcia has problems with Cardbus bridges +##tr* at pcmcia? function ? # TROPIC based Token-Ring +#wi* at pcmcia? function ? # Lucent/Intersil WaveLan IEEE (802.11) +#xi* at pcmcia? function ? # Xircom CreditCard Ethernet +# +#mhzc* at pcmcia? function ? # Megahertz Ethernet/Modem combo cards +#com* at mhzc? +#sm* at mhzc? +# +## ISA network interfaces +#ate0 at isa? port 0x2a0 irq ? # AT1700 +#cs0 at isa? port 0x300 iomem ? irq ? drq ? # CS8900 Ethernet +#ec0 at isa? port 0x250 iomem 0xd8000 irq 9 # 3Com 3c503 Ethernet +#eg0 at isa? port 0x280 irq 9 # 3C505 ethernet cards +#el0 at isa? port 0x300 irq 9 # 3C501 ethernet cards +#ep* at isa? port ? irq ? # 3C509 ethernet cards +#ef0 at isa? port 0x360 iomem 0xd0000 irq 7 # 3C507 +#ai0 at isa? port 0x360 iomem 0xd0000 irq 7 # StarLAN +#fmv0 at isa? port 0x2a0 irq ? # FMV-181/182 +#ix0 at isa? port 0x300 irq 10 # EtherExpress/16 +#iy0 at isa? port 0x360 irq ? # EtherExpress PRO 10 ISA +#lc0 at isa? port 0x320 iomem ? irq ? # DEC EtherWORKS III (LEMAC) +##depca0 at isa? port 0x300 iomem 0xc8000 iosiz 0x8000 irq 5 # DEPCA +##le* at depca? +#nele0 at isa? port 0x320 irq 9 drq 7 # NE2100 +#le* at nele? +##ntwoc0 at isa? port 0x300 irq 5 iomem 0xc8000 flags 1 # Riscom/N2 sync serial +#bicc0 at isa? port 0x320 irq 10 drq 7 # BICC IsoLan +#le* at bicc? +#ne0 at isa? port 0x280 irq 9 # NE[12]000 ethernet cards +#ne1 at isa? port 0x300 irq 10 +#sm0 at isa? port 0x300 irq 10 # SMC91C9x Ethernet +#tr0 at isa? port 0xa20 iomem 0xd8000 irq ? # IBM TROPIC based Token-Ring +#tr1 at isa? port 0xa24 iomem 0xd0000 irq ? # IBM TROPIC based Token-Ring +#tr* at isa? port ? irq ? # 3COM TROPIC based Token-Ring +#we0 at isa? port 0x280 iomem 0xd0000 irq 9 # WD/SMC Ethernet +#we1 at isa? port 0x300 iomem 0xcc000 irq 10 +# +## CardBus network cards +##ath* at cardbus? dev ? function ? # Atheros 5210/5211/5212 802.11 +##atw* at cardbus? dev ? function ? # ADMtek ADM8211 (802.11) +##ex* at cardbus? dev ? function ? # 3Com 3C575TX +##fxp* at cardbus? dev ? function ? # Intel i8255x +##rtk* at cardbus? dev ? function ? # Realtek 8129/8139 +##tlp* at cardbus? dev ? function ? # DECchip 21143 +# +## MCA network cards +#elmc* at mca? slot ? # 3Com EtherLink/MC (3c523) +#ep* at mca? slot ? # 3Com EtherLink III (3c529) +#we* at mca? slot ? # WD/SMC Ethernet +#ate* at mca? slot ? # Allied Telesis AT1720 +#ne* at mca? slot ? # Novell NE/2 and clones +#tr* at mca? slot ? # IBM Token Ring adapter +#le* at mca? slot ? # SKNET Personal/MC2+ +# +## MII/PHY support +#acphy* at mii? phy ? # Altima AC101 and AMD Am79c874 PHYs +#amhphy* at mii? phy ? # AMD 79c901 Ethernet PHYs +#bmtphy* at mii? phy ? # Broadcom BCM5201 and BCM5202 PHYs +#brgphy* at mii? phy ? # Broadcom BCM5400-family PHYs +#dmphy* at mii? phy ? # Davicom DM9101 PHYs +#exphy* at mii? phy ? # 3Com internal PHYs +#gentbi* at mii? phy ? # Generic Ten-Bit 1000BASE-[CLS]X PHYs +#glxtphy* at mii? phy ? # Level One LXT-1000 PHYs +#gphyter* at mii? phy ? # NS83861 Gig-E PHY +#icsphy* at mii? phy ? # Integrated Circuit Systems ICS189x +#igphy* at mii? phy ? # Intel IGP01E1000 +#inphy* at mii? phy ? # Intel 82555 PHYs +#iophy* at mii? phy ? # Intel 82553 PHYs +#lxtphy* at mii? phy ? # Level One LXT-970 PHYs +#makphy* at mii? phy ? # Marvell Semiconductor 88E1000 PHYs +#nsphy* at mii? phy ? # NS83840 PHYs +#nsphyter* at mii? phy ? # NS83843 PHYs +#pnaphy* at mii? phy ? # generic HomePNA PHYs +#qsphy* at mii? phy ? # Quality Semiconductor QS6612 PHYs +#sqphy* at mii? phy ? # Seeq 80220/80221/80223 PHYs +#tlphy* at mii? phy ? # ThunderLAN PHYs +#tqphy* at mii? phy ? # TDK Semiconductor PHYs +#ukphy* at mii? phy ? # generic unknown PHYs +#urlphy* at mii? phy ? # Realtek RTL8150L internal PHYs +# +# +## USB Controller and Devices +# +## PCI USB controllers +#ehci* at pci? dev ? function ? # Enhanced Host Controller +#ohci* at pci? dev ? function ? # Open Host Controller +#uhci* at pci? dev ? function ? # Universal Host Controller (Intel) +# +## CardBus USB controllers +##ehci* at cardbus? dev ? function ? # Enhanced Host Controller +##ohci* at cardbus? dev ? function ? # Open Host Controller +# +## ISA USB controllers +##slhci0 at isa? port 0x300 irq 5 # ScanLogic SL811HS +# +## USB bus support +#usb* at ehci? +#usb* at ohci? +#usb* at uhci? +##usb* at slhci? +# +## USB Hubs +#uhub* at usb? +#uhub* at uhub? port ? configuration ? interface ? +# +## USB HID device +#uhidev* at uhub? port ? configuration ? interface ? +# +## USB Mice +#ums* at uhidev? reportid ? +#wsmouse* at ums? mux 0 +# +## USB Keyboards +#ukbd* at uhidev? reportid ? +#wskbd* at ukbd? console ? mux 1 +# +## USB Generic HID devices +#uhid* at uhidev? reportid ? +# +## USB Printer +#ulpt* at uhub? port ? configuration ? interface ? +# +## USB Modem +#umodem* at uhub? port ? configuration ? +#ucom* at umodem? +# +## USB Mass Storage +#umass* at uhub? port ? configuration ? interface ? +#wd* at umass? +# +## USB audio +#uaudio* at uhub? port ? configuration ? +# +## USB MIDI +#umidi* at uhub? port ? configuration ? +# +## USB IrDA +## USB-IrDA bridge spec +#uirda* at uhub? port ? configuration ? interface ? +#irframe* at uirda? +# +## SigmaTel STIr4200 USB/IrDA Bridge +#ustir* at uhub? port ? +#irframe* at ustir? +# +## USB Ethernet adapters +#aue* at uhub? port ? # ADMtek AN986 Pegasus based adapters +#cue* at uhub? port ? # CATC USB-EL1201A based adapters +#kue* at uhub? port ? # Kawasaki LSI KL5KUSB101B based adapters +#uax* at uhub? port ? # ASIX AX88172 based adapters +#udav* at uhub? port ? # Davicom DM9601 based adapters +#url* at uhub? port ? # Realtek RTL8150L based adapters +# +## Prolific PL2301/PL2302 host-to-host adapter +#upl* at uhub? port ? +# +## Serial adapters +#ubsa* at uhub? port ? # Belkin serial adapter +#ucom* at ubsa? portno ? +# +#uftdi* at uhub? port ? # FTDI FT8U100AX serial adapter +#ucom* at uftdi? portno ? +# +#umct* at uhub? port ? # MCT USB-RS232 serial adapter +#ucom* at umct? portno ? +# +#uplcom* at uhub? port ? # I/O DATA USB-RSAQ2 serial adapter +#ucom* at uplcom? portno ? +# +#uvscom* at uhub? port ? # SUNTAC Slipper U VS-10U serial adapter +#ucom* at uvscom? portno ? +# +## Diamond Multimedia Rio 500 +#urio* at uhub? port ? +# +## USB Handspring Visor +#uvisor* at uhub? port ? +#ucom* at uvisor? +# +## USB scanners +#uscanner* at uhub? port ? +# +## USB scanners that use SCSI emulation, e.g., HP5300 +#usscanner* at uhub? port ? +# +## Y@P firmware loader +#uyap* at uhub? port ? +# +## D-Link DSB-R100 USB radio +#udsbr* at uhub? port ? +#radio* at udsbr? +# +## USB Generic driver +#ugen* at uhub? port ? +# +# +## IrDA and Consumer Ir devices +# +## Toshiba Oboe +#oboe* at pci? dev ? function ? +#irframe* at oboe? +# +## PCI IEEE1394 controllers +##fwohci* at pci? dev ? function ? # IEEE1394 Open Host Controller +# +## CardBus IEEE1394 controllers +##fwohci* at cardbus? dev ? function ? # IEEE1394 Open Host Controller +# +##fw* at fwbus? # IP over 1394 +# +## IEEE1394 nodes +##fwnode* at fwbus? idhi ? idlo ? +##sbpscsi* at fwnode? +##scsibus* at sbpscsi? +# +## Audio Devices +# +## PCI audio devices +#auich* at pci? dev ? function ? # Intel ICH integrated AC'97 Audio +#autri* at pci? dev ? function ? # Trident 4DWAVE based AC'97 Audio +#auvia* at pci? dev ? function ? # VIA VT82C686A integrated AC'97 Audio +#clcs* at pci? dev ? function ? # Cirrus Logic CS4280 +#clct* at pci? dev ? function ? # Cirrus Logic CS4281 +#cmpci* at pci? dev ? function ? # C-Media CMI8338/8738 +#eap* at pci? dev ? function ? # Ensoniq AudioPCI +#emuxki* at pci? dev ? function ? # Creative SBLive! and PCI512 +#esa* at pci? dev ? function ? # ESS Allegro-1 / Maestro-3 PCI Audio +#esm* at pci? dev ? function ? # ESS Maestro-1/2/2e PCI Audio Accelerator +#eso* at pci? dev ? function ? # ESS Solo-1 PCI AudioDrive +#fms* at pci? dev ? function ? # Forte Media FM801 +#neo* at pci? dev ? function ? # NeoMagic 256 AC'97 Audio +#sv* at pci? dev ? function ? # S3 SonicVibes +#yds* at pci? dev ? function ? # Yamaha DS-1 PCI Audio +# +## ISA Plug-and-Play audio devices +#ess* at isapnp? # ESS Tech ES1887, ES1888, ES888 audio +#guspnp* at isapnp? # Gravis Ultra Sound PnP audio +#sb* at isapnp? # SoundBlaster-compatible audio +#wss* at isapnp? # Windows Sound System +#ym* at isapnp? # Yamaha OPL3-SA3 audio +# +## ISA audio devices +## the "aria" probe might give false hits +##aria0 at isa? port 0x290 irq 10 # Aria +##ess0 at isa? port 0x220 irq 5 drq 1 drq2 5 # ESS 18XX +#gus0 at isa? port 0x220 irq 7 drq 1 drq2 6 # Gravis Ultra Sound +#pas0 at isa? port 0x220 irq 7 drq 1 # ProAudio Spectrum +##pss0 at isa? port 0x220 irq 7 drq 6 # Personal Sound System +##sp0 at pss0 port 0x530 irq 10 drq 0 # sound port driver +#sb0 at isa? port 0x220 irq 5 drq 1 drq2 5 # SoundBlaster +#wss0 at isa? port 0x530 irq 10 drq 0 drq2 1 # Windows Sound System +# +## PCMCIA audio devices +##esl* at pcmcia? function ? # ESS 1688 AudioDrive +# +##cms0 at isa? port 0x220 # Creative Music System +# +## OPL[23] FM synthesizers +##opl0 at isa? port 0x388 # use only if not attached to sound card +#opl* at cmpci? flags 1 +##opl* at esl? +#opl* at eso? +#opl* at ess? +#opl* at fms? +#opl* at sb? +#opl* at sv? +#opl* at wss? +#opl* at yds? +#opl* at ym? +# +## Audio support +#audio* at audiobus? +# +## MPU 401 UARTs +##mpu* at isa? port 0x330 irq 9 # MPU401 or compatible card +#mpu* at cmpci? +#mpu* at eso? +#mpu* at fms? +#mpu* at sb? +#mpu* at yds? +#mpu* at ym? +# +## MIDI support +#midi* at midibus? +#midi* at pcppi? # MIDI interface to the PC speaker +# +## The spkr driver provides a simple tone interface to the built in speaker. +##spkr0 at pcppi? # PC speaker +# +# +## FM-Radio devices +## ISA radio devices +##az0 at isa? port 0x350 # Aztech/PackardBell FM Radio Card +##az1 at isa? port 0x358 +##rt0 at isa? port 0x20c # AIMS Lab Radiotrack & compatible +##rt1 at isa? port 0x284 +##rt2 at isa? port 0x30c +##rt3 at isa? port 0x384 +##rtii0 at isa? port 0x20c # AIMS Lab Radiotrack II FM Radio Card +##rtii1 at isa? port 0x30c +##sf2r0 at isa? port 0x384 # SoundForte RadioLink SF16-FMR2 FM Radio Card +# +## PCI radio devices +##gtp* at pci? dev ? function ? # Guillemot Maxi Radio FM 2000 Radio Card +# +## Radio support +##radio* at az? +##radio* at gtp? +##radio* at rt? +##radio* at rtii? +##radio* at sf2r? +# +# +## TV cards +# +## Brooktree 848/849/878/879 based TV cards +#bktr* at pci? dev ? function ? +#radio* at bktr? +# +# +## Mice +# +## ISA busmice +#lms0 at isa? port 0x23c irq 5 # Logitech bus mouse +#lms1 at isa? port 0x238 irq 5 +#mms0 at isa? port 0x23c irq 5 # Microsoft InPort mouse +#mms1 at isa? port 0x238 irq 5 +#wsmouse* at lms? mux 0 +#wsmouse* at mms? mux 0 +# +# +## Cryptographic Devices +# +## PCI cryptographic devices +#hifn* at pci? dev ? function ? # Hifn 7755/7811/795x +#ubsec* at pci? dev ? function ? # Broadcom 5501/5601/580x/582x +# +# +## Joysticks +# +##joy* at pnpbios? index ? # Game port +# +## ISA Plug-and-Play joysticks +#joy* at isapnp? # Game ports (usually on audio cards) +# +## PCI joysticks +#joy* at pci? # Game ports (usually on audio cards) +#joy* at eso? # ESS Solo-1 on-board joystick +# +## ISA joysticks. Probe is a little strange; add only if you have one. +##joy0 at isa? port 0x201 +# +# +## Miscellaneous Devices +# +## Planetconnect Satellite receiver driver. +##satlink0 at isa? port 0x300 drq 1 +# +## Middle Digital, Inc. PCI-Weasel serial console board control +## devices (watchdog timer, etc.) +#weasel* at pci? +# +## Pull in optional local configuration +#include "arch/i386/conf/GENERIC.local" +# +# +## Pseudo-Devices +# +#pseudo-device crypto # opencrypto framework +# +## disk/mass storage pseudo-devices +pseudo-device ccd 4 # concatenated/striped disk devices +##pseudo-device cgd 4 # cryptographic disk devices +#pseudo-device raid 8 # RAIDframe disk driver +#options RAID_AUTOCONFIG # auto-configuration of RAID components +## Options to enable various other RAIDframe RAID types. +##options RF_INCLUDE_EVENODD=1 +##options RF_INCLUDE_RAID5_RS=1 +##options RF_INCLUDE_PARITYLOGGING=1 +##options RF_INCLUDE_CHAINDECLUSTER=1 +##options RF_INCLUDE_INTERDECLUSTER=1 +##options RF_INCLUDE_PARITY_DECLUSTERING=1 +##options RF_INCLUDE_PARITY_DECLUSTERING_DS=1 +# +## Vinum +## pseudo-device vinum 8 # Vinum +## options VINUMDEBUG +# +pseudo-device md 1 # memory disk device (ramdisk) +pseudo-device vnd 4 # disk-like interface to files +# +## network pseudo-devices +pseudo-device bpfilter 8 # Berkeley packet filter +pseudo-device ipfilter # IP filter (firewall) and NAT +pseudo-device loop # network loopback +pseudo-device ppp 2 # Point-to-Point Protocol +#pseudo-device pppoe # PPP over Ethernet (RFC 2516) +pseudo-device sl 2 # Serial Line IP +#pseudo-device strip 2 # Starmode Radio IP (Metricom) +#pseudo-device irframetty # IrDA frame line discipline +pseudo-device tun 2 # network tunneling over tty +#pseudo-device gre 2 # generic L3 over IP tunnel +#pseudo-device gif 4 # IPv[46] over IPv[46] tunnel (RFC1933) +##pseudo-device faith 1 # IPv[46] tcp relay translation i/f +##pseudo-device stf 1 # 6to4 IPv6 over IPv4 encapsulation +#pseudo-device vlan # IEEE 802.1q encapsulation +#pseudo-device bridge # simple inter-network bridging +##options BRIDGE_IPF # bridge uses IP/IPv6 pfil hooks too +# +## miscellaneous pseudo-devices +pseudo-device pty # pseudo-terminals +#pseudo-device tb 1 # tablet line discipline +#pseudo-device sequencer 1 # MIDI sequencer +## rnd works; RND_COM does not on port i386 yet. +pseudo-device rnd # /dev/random and in-kernel generator +##options RND_COM # use "com" randomness as well (BROKEN) +pseudo-device clockctl # user control of clock subsystem +# +## a pseudo device needed for Coda # also needs CODA (above) +#pseudo-device vcoda 4 # coda minicache <-> venus comm. +# +## a pseudo device needed for SMBFS +#pseudo-device nsmb # experimental - SMB requester +# +## wscons pseudo-devices +#pseudo-device wsmux # mouse & keyboard multiplexor +#pseudo-device wsfont +#pseudo-device ksyms # /dev/ksyms + + + +options MEMORY_DISK_HOOKS +options MEMORY_DISK_IS_ROOT # force root on memory disk +options MEMORY_DISK_SERVER=0 # no userspace memory disk support +options MEMORY_DISK_ROOT_SIZE=128 +options MEMORY_DISK_IS_ROOT_IMAGE_FILE + + +pseudo-device vmn # network for vm +options KERNBASE_LOCORE=0xa0000000 diff -Nur -x compile sys.orig/arch/i386/i386/freebsd_sigcode.S sys.lilyvm/arch/i386/i386/freebsd_sigcode.S --- sys.orig/arch/i386/i386/freebsd_sigcode.S 2003-08-07 16:27:54.000000000 +0000 +++ sys.lilyvm/arch/i386/i386/freebsd_sigcode.S 2005-06-08 17:19:42.000000000 +0000 @@ -89,8 +89,8 @@ pushl %eax pushl %eax # junk to fake return address movl $FREEBSD_SYS_sigreturn,%eax - int $0x80 # enter kernel with args on stack + .code 0xcd,0x80 # int $0x80 # enter kernel with args on stack movl $FREEBSD_SYS_exit,%eax - int $0x80 # exit if sigreturn fails + .code 0xcd,0x80 # int $0x80 # exit if sigreturn fails .globl _C_LABEL(freebsd_esigcode) _C_LABEL(freebsd_esigcode): diff -Nur -x compile sys.orig/arch/i386/i386/ibcs2_sigcode.S sys.lilyvm/arch/i386/i386/ibcs2_sigcode.S --- sys.orig/arch/i386/i386/ibcs2_sigcode.S 2003-08-07 16:27:54.000000000 +0000 +++ sys.lilyvm/arch/i386/i386/ibcs2_sigcode.S 2005-06-08 17:19:46.000000000 +0000 @@ -89,8 +89,8 @@ movl %eax,4(%esp) # put it in the argument slot # fake return address already there movl $IBCS2_SYS_sigreturn,%eax - int $0x80 # enter kernel with args on stack + .code 0xcd,0x80 # int $0x80 # enter kernel with args on stack movl $IBCS2_SYS_exit,%eax - int $0x80 # exit if sigreturn fails + .code 0xcd,0x80 # int $0x80 # exit if sigreturn fails .globl _C_LABEL(ibcs2_esigcode) _C_LABEL(ibcs2_esigcode): diff -Nur -x compile sys.orig/arch/i386/i386/linux_sigcode.S sys.lilyvm/arch/i386/i386/linux_sigcode.S --- sys.orig/arch/i386/i386/linux_sigcode.S 2003-08-07 16:27:54.000000000 +0000 +++ sys.lilyvm/arch/i386/i386/linux_sigcode.S 2005-06-08 17:19:54.000000000 +0000 @@ -93,9 +93,9 @@ # copy at SIGF_SCP(%esp)) pushl %eax # junk to fake return address movl $LINUX_SYS_sigreturn,%eax - int $0x80 # enter kernel with args on stack + .code 0xcd,0x80 # int $0x80 # enter kernel with args on stack movl $LINUX_SYS_exit,%eax - int $0x80 # exit if sigreturn fails + .code 0xcd,0x80 # int $0x80 # exit if sigreturn fails /* LINTSTUB: Var: char linux_rt_sigcode[1]; */ NENTRY(linux_rt_sigcode) @@ -104,8 +104,8 @@ # copy at SIGF_SCP(%esp)) pushl %eax # junk to fake return address movl $LINUX_SYS_rt_sigreturn,%eax - int $0x80 # enter kernel with args on stack + .code 0xcd,0x80 # int $0x80 # enter kernel with args on stack movl $LINUX_SYS_exit,%eax - int $0x80 # exit if sigreturn fails + .code 0xcd,0x80 # int $0x80 # exit if sigreturn fails .globl _C_LABEL(linux_esigcode) _C_LABEL(linux_esigcode): diff -Nur -x compile sys.orig/arch/i386/i386/locore.S sys.lilyvm/arch/i386/i386/locore.S --- sys.orig/arch/i386/i386/locore.S 2004-09-20 05:57:11.000000000 +0000 +++ sys.lilyvm/arch/i386/i386/locore.S 2005-06-08 17:19:57.000000000 +0000 @@ -727,9 +727,9 @@ movl %eax,4(%esp) # put it in the argument slot # fake return address already there movl $SYS_compat_16___sigreturn14,%eax - int $0x80 # enter kernel with args on stack + .code 0xcd,0x80 # int $0x80 # enter kernel with args on stack movl $SYS_exit,%eax - int $0x80 # exit if sigreturn fails + .code 0xcd,0x80 # int $0x80 # exit if sigreturn fails .globl _C_LABEL(esigcode) _C_LABEL(esigcode): #endif diff -Nur -x compile sys.orig/arch/i386/i386/mach_sigcode.S sys.lilyvm/arch/i386/i386/mach_sigcode.S --- sys.orig/arch/i386/i386/mach_sigcode.S 2004-02-20 17:35:01.000000000 +0000 +++ sys.lilyvm/arch/i386/i386/mach_sigcode.S 2005-06-08 17:20:01.000000000 +0000 @@ -96,9 +96,9 @@ pushl $1 # setcontext(p) == syscontext(1, p) pushl %eax # junk to fake return address movl $MACH_SYS_context,%eax - int $0x80 # enter kernel with args on stack + .code 0xcd,0x80 # int $0x80 # enter kernel with args on stack movl $MACH_SYS_exit,%eax - int $0x80 # exit if sigreturn fails + .code 0xcd,0x80 # int $0x80 # exit if sigreturn fails */ .globl _C_LABEL(mach_esigcode) _C_LABEL(mach_esigcode): diff -Nur -x compile sys.orig/arch/i386/i386/svr4_sigcode.S sys.lilyvm/arch/i386/i386/svr4_sigcode.S --- sys.orig/arch/i386/i386/svr4_sigcode.S 2004-02-20 17:35:01.000000000 +0000 +++ sys.lilyvm/arch/i386/i386/svr4_sigcode.S 2005-06-08 17:20:04.000000000 +0000 @@ -96,9 +96,9 @@ pushl $1 # setcontext(p) == syscontext(1, p) pushl %eax # junk to fake return address movl $SVR4_SYS_context,%eax - int $0x80 # enter kernel with args on stack + .code 0xcd,0x80 # int $0x80 # enter kernel with args on stack movl $SVR4_SYS_exit,%eax - int $0x80 # exit if sigreturn fails + .code 0xcd,0x80 # int $0x80 # exit if sigreturn fails .globl _C_LABEL(svr4_esigcode) _C_LABEL(svr4_esigcode): diff -Nur -x compile sys.orig/arch/i386/include/pmap.h sys.lilyvm/arch/i386/include/pmap.h --- sys.orig/arch/i386/include/pmap.h 2004-02-20 17:35:01.000000000 +0000 +++ sys.lilyvm/arch/i386/include/pmap.h 2005-04-13 13:41:14.000000000 +0000 @@ -148,7 +148,7 @@ #define PDSLOT_PTE ((KERNBASE/NBPD)-1) /* 767: for recursive PDP map */ #define PDSLOT_KERN (KERNBASE/NBPD) /* 768: start of kernel space */ -#define PDSLOT_APTE ((unsigned)1023) /* 1023: alternative recursive slot */ +#define PDSLOT_APTE ((unsigned)1023-256-3) /* 1023: alternative recursive slot */ /* * the following defines give the virtual addresses of various MMU diff -Nur -x compile sys.orig/conf/files sys.lilyvm/conf/files --- sys.orig/conf/files 2004-08-30 09:24:33.000000000 +0000 +++ sys.lilyvm/conf/files 2005-04-13 13:41:14.000000000 +0000 @@ -1349,4 +1349,7 @@ device joy file dev/ic/joy.c joy needs-flag +defpseudo vmn: ifnet +file net/if_vmn.c vmn + file dev/ieee1394/fwiso.c fwiso needs-count diff -Nur -x compile sys.orig/dev/md.c sys.lilyvm/dev/md.c --- sys.orig/dev/md.c 2003-06-29 22:30:00.000000000 +0000 +++ sys.lilyvm/dev/md.c 2005-04-13 13:44:42.000000000 +0000 @@ -60,6 +60,8 @@ #include #include #include +#include +#include #include @@ -86,6 +88,7 @@ struct disk sc_dkdev; /* hook for generic disk handling */ struct md_conf sc_md; struct bufq_state sc_buflist; + int sc_flags; }; /* shorthand for fields in sc_md: */ #define sc_addr sc_md.md_addr @@ -250,6 +253,11 @@ if (sc->sc_type == MD_UNCONFIGURED) return ENXIO; + { + static void mdgetdisklabel(struct md_softc *sc); + mdgetdisklabel (sc); + } + return 0; } @@ -324,7 +332,11 @@ int unit; struct md_softc *sc; caddr_t addr; +#if defined (MEMORY_DISK_IS_ROOT_IMAGE_FILE) + u_int64_t off, xfer; +#else size_t off, xfer; +#endif unit = MD_UNIT(bp->b_dev); sc = ramdisk_devs[unit]; @@ -359,11 +371,27 @@ xfer = bp->b_resid; if (xfer > (sc->sc_size - off)) xfer = (sc->sc_size - off); +#if defined (MEMORY_DISK_IS_ROOT_IMAGE_FILE) + if (sc->sc_addr) { +#endif addr = sc->sc_addr + off; if (bp->b_flags & B_READ) memcpy(bp->b_data, addr, xfer); else memcpy(addr, bp->b_data, xfer); +#if defined (MEMORY_DISK_IS_ROOT_IMAGE_FILE) + } else { +#define lilyvm_call_int (*(int(**)(int,...))0xbfafefac) +#define lilyvm_call_longlong (*(long long(**)(int,...))0xbfafef9c) +#define lilyvm_call lilyvm_call_int +#define LILYVM_CALL_VMDISK_PREAD 5 +#define LILYVM_CALL_VMDISK_PWRITE 6 + if (bp->b_flags & B_READ) + lilyvm_call (LILYVM_CALL_VMDISK_PREAD, unit, bp->b_data, (int)xfer, off); + else + lilyvm_call (LILYVM_CALL_VMDISK_PWRITE, unit, bp->b_data, (int)xfer, off); + } +#endif bp->b_resid -= xfer; break; @@ -378,6 +406,89 @@ biodone(bp); } +/* + * Wait interruptibly for an exclusive lock. + * + * XXX Several drivers do this; it should be abstracted and made MP-safe. + */ +static int +mdlock(struct md_softc *sc) +{ + int error; + + while ((sc->sc_flags & MDF_LKHELD) != 0) { + sc->sc_flags |= MDF_LKWANTED; + if ((error = tsleep(sc, PRIBIO | PCATCH, "mdlck", 0)) != 0) + return (error); + } + sc->sc_flags |= MDF_LKHELD; + return (0); +} + +/* + * Unlock and wake up any waiters. + */ +static void +mdunlock(struct md_softc *sc) +{ + + sc->sc_flags &= ~MDF_LKHELD; + if ((sc->sc_flags & MDF_LKWANTED) != 0) { + sc->sc_flags &= ~MDF_LKWANTED; + wakeup(sc); + } +} + +/* + * Construct a ficticious label. + */ +static void +mdgetdefaultlabel(struct md_softc *sc, struct disklabel *lp) +{ + + memset(lp, 0, sizeof(struct disklabel)); + + lp->d_secsize = 512; + lp->d_ntracks = 1; + lp->d_nsectors = 1; + lp->d_ncylinders = 1; + lp->d_secpercyl = lp->d_ntracks * lp->d_nsectors; + lp->d_type = DTYPE_LD; + strcpy(lp->d_typename, "unknown"); + strcpy(lp->d_packname, "fictitious"); + lp->d_secperunit = 1; + lp->d_rpm = 7200; + lp->d_interleave = 1; + lp->d_flags = 0; + + lp->d_partitions[RAW_PART].p_offset = 0; + lp->d_partitions[RAW_PART].p_size = + lp->d_secperunit * (lp->d_secsize / DEV_BSIZE); + lp->d_partitions[RAW_PART].p_fstype = FS_UNUSED; + lp->d_npartitions = RAW_PART + 1; + + lp->d_magic = DISKMAGIC; + lp->d_magic2 = DISKMAGIC; + lp->d_checksum = dkcksum(lp); +} + +/* + * Load the label information from the specified device. + */ +static void +mdgetdisklabel(struct md_softc *sc) +{ + const char *errstring; + + mdgetdefaultlabel(sc, sc->sc_dkdev.dk_label); + + /* Call the generic disklabel extraction routine. */ + errstring = readdisklabel(MAKEDISKDEV(0, sc->sc_dev.dv_unit, RAW_PART), + mdstrategy, sc->sc_dkdev.dk_label, sc->sc_dkdev.dk_cpulabel); + if (errstring != NULL) + printf("%s: %s\n", sc->sc_dev.dv_xname, errstring); +} + int mdioctl(dev, cmd, data, flag, proc) dev_t dev; @@ -389,10 +500,99 @@ int unit; struct md_softc *sc; struct md_conf *umd; + caddr_t addr = data; +#ifdef __HAVE_OLD_DISKLABEL + struct disklabel newlabel; +#endif + struct disklabel *lp; + int part, error; unit = MD_UNIT(dev); + part = DISKPART(dev); sc = ramdisk_devs[unit]; + switch (cmd) { + case DIOCGDINFO: + memcpy(addr, sc->sc_dkdev.dk_label, sizeof(struct disklabel)); + return (0); + +#ifdef __HAVE_OLD_DISKLABEL + case ODIOCGDINFO: + newlabel = *(sc->sc_dkdev.dk_label); + if (newlabel.d_npartitions > OLDMAXPARTITIONS) + return ENOTTY; + memcpy(addr, &newlabel, sizeof(struct olddisklabel)); + return (0); +#endif + + case DIOCGPART: + ((struct partinfo *)addr)->disklab = sc->sc_dkdev.dk_label; + ((struct partinfo *)addr)->part = + &sc->sc_dkdev.dk_label->d_partitions[part]; + return 0; + + case DIOCWDINFO: + case DIOCSDINFO: +#ifdef __HAVE_OLD_DISKLABEL + case ODIOCWDINFO: + case ODIOCSDINFO: + + if (cmd == ODIOCSDINFO || cmd == ODIOCWDINFO) { + memset(&newlabel, 0, sizeof newlabel); + memcpy(&newlabel, addr, sizeof (struct olddisklabel)); + lp = &newlabel; + } else +#endif + lp = (struct disklabel *)addr; + + if ((flag & FWRITE) == 0) + return (EBADF); + + if ((error = mdlock(sc)) != 0) + return (error); + sc->sc_flags |= MDF_LABELLING; + + error = setdisklabel(sc->sc_dkdev.dk_label, + lp, /*sc->sc_dkdev.dk_openmask : */0, + sc->sc_dkdev.dk_cpulabel); + if (error == 0 && (cmd == DIOCWDINFO +#ifdef __HAVE_OLD_DISKLABEL + || cmd == ODIOCWDINFO +#endif + )) + error = writedisklabel( + MAKEDISKDEV(major(dev), DISKUNIT(dev), RAW_PART), + mdstrategy, sc->sc_dkdev.dk_label, + sc->sc_dkdev.dk_cpulabel); + + sc->sc_flags &= ~MDF_LABELLING; + mdunlock(sc); + return error; + + case DIOCWLABEL: + if ((flag & FWRITE) == 0) + return (EBADF); + if (*(int *)addr) + sc->sc_flags |= MDF_WLABEL; + else + sc->sc_flags &= ~MDF_WLABEL; + return 0; + + case DIOCGDEFLABEL: + mdgetdefaultlabel(sc, (struct disklabel *)addr); + return 0; + +#ifdef __HAVE_OLD_DISKLABEL + case ODIOCGDEFLABEL: + mdgetdefaultlabel(sc, &newlabel); + if (newlabel.d_npartitions > OLDMAXPARTITIONS) + return ENOTTY; + memcpy(addr, &newlabel, sizeof (struct olddisklabel)); + return 0; +#endif + } + + /* If this is not the raw partition, punt! */ if (DISKPART(dev) != RAW_PART) return ENOTTY; @@ -445,6 +645,7 @@ sc->sc_addr = (caddr_t)addr; /* kernel space */ sc->sc_size = (size_t)size; sc->sc_type = MD_KMEM_ALLOCATED; + mdgetdisklabel (sc); return 0; } @@ -482,6 +683,7 @@ sc->sc_type = MD_UNCONFIGURED; sc->sc_addr = 0; sc->sc_size = 0; + mdgetdisklabel (sc); return (error); } diff -Nur -x compile sys.orig/dev/md.h sys.lilyvm/dev/md.h --- sys.orig/dev/md.h 2001-07-02 17:17:25.000000000 +0000 +++ sys.lilyvm/dev/md.h 2005-04-13 13:41:14.000000000 +0000 @@ -36,9 +36,21 @@ #include +#define MDF_ENABLED 0x01 /* device enabled */ +#define MDF_LKHELD 0x02 /* lock held */ +#define MDF_LKWANTED 0x04 /* lock wanted */ +#define MDF_WLABEL 0x08 /* label is writable */ +#define MDF_LABELLING 0x10 /* writing label */ +#define MDF_DRAIN 0x20 /* maxqueuecnt has changed; drain */ +#define MDF_DETACH 0x40 /* detach pending */ + struct md_conf { caddr_t md_addr; +#if defined (MEMORY_DISK_IS_ROOT_IMAGE_FILE) + u_int64_t md_size; +#else size_t md_size; +#endif int md_type; }; diff -Nur -x compile sys.orig/dev/md_root.c sys.lilyvm/dev/md_root.c --- sys.orig/dev/md_root.c 2003-04-29 01:52:59.000000000 +0000 +++ sys.lilyvm/dev/md_root.c 2005-04-13 14:00:34.000000000 +0000 @@ -103,6 +103,20 @@ { char pbuf[9]; +#if defined (MEMORY_DISK_IS_ROOT_IMAGE_FILE) +#define lilyvm_call_int (*(int(**)(int,...))0xbfafefac) +#define lilyvm_call_longlong (*(long long(**)(int,...))0xbfafef9c) +#define lilyvm_call lilyvm_call_int +#define LILYVM_CALL_VMDISK_NUM_DISKS 3 +#define LILYVM_CALL_VMDISK_GETSIZE 4 + if (unit < lilyvm_call (LILYVM_CALL_VMDISK_NUM_DISKS)) { + md->md_addr = (caddr_t)0; + md->md_size = lilyvm_call_longlong (LILYVM_CALL_VMDISK_GETSIZE, unit); + md->md_type = MD_KMEM_FIXED; + format_bytes(pbuf, sizeof(pbuf), md->md_size); + printf("md%d: using %s image file\n", unit, pbuf); + } else +#endif if (unit == 0) { /* Setup root ramdisk */ md->md_addr = (caddr_t)md_root_image; @@ -121,7 +135,9 @@ { if (unit == 0) { +#if !defined (MEMORY_DISK_IS_ROOT_IMAGE_FILE) /* The root ramdisk only works single-user. */ boothowto |= MEMORY_RBFLAGS; +#endif } } diff -Nur -x compile sys.orig/net/if.h sys.lilyvm/net/if.h --- sys.orig/net/if.h 2003-12-10 11:46:33.000000000 +0000 +++ sys.lilyvm/net/if.h 2005-04-13 13:41:14.000000000 +0000 @@ -779,6 +779,12 @@ struct mbuf *, struct sockaddr *, struct rtentry *)); void lortrequest __P((int, struct rtentry *, struct rt_addrinfo *)); +int vmnioctl __P((struct ifnet *, u_long, caddr_t)); +void vmnattach __P((int)); +int vmnoutput __P((struct ifnet *, + struct mbuf *, struct sockaddr *, struct rtentry *)); +void vmnrtrequest __P((int, struct rtentry *, struct rt_addrinfo *)); + /* * These are exported because they're an easy way to tell if * an interface is going away without having to burn a flag. diff -Nur -x compile sys.orig/net/if_vmn.c sys.lilyvm/net/if_vmn.c --- sys.orig/net/if_vmn.c 1970-01-01 00:00:00.000000000 +0000 +++ sys.lilyvm/net/if_vmn.c 2005-04-13 13:41:14.000000000 +0000 @@ -0,0 +1,419 @@ +/* Copyright (C) 2003 Hideki EIRAKU */ + +/* $NetBSD: if_loop.c,v 1.40 2001/11/12 23:49:40 lukem Exp $ */ + +/* + * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (c) 1982, 1986, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)if_loop.c 8.2 (Berkeley) 1/9/95 + */ + +/* + * Loopback interface driver for protocol testing and timing. + */ + +#include + +#include "opt_inet.h" +#include "opt_atalk.h" +#include "opt_iso.h" +#include "opt_ns.h" + +#include "bpfilter.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#ifdef INET +#include +#include +#include +#include +#endif + +#ifdef NS +#include +#include +#endif + +#ifdef IPX +#include +#include +#endif + +#ifdef ISO +#include +#include +#endif + +#ifdef NETATALK +#include +#include +#endif + +#if NBPFILTER > 0 +#include +#endif + +#if POLLING +#else +#include +#include +#include +#include +#endif + +#define VMNMTU 1500 + +struct ifnet vmnif[1]; +struct callout input_callout; +void vmninput (void *dummy); +int vmninputintr (void *dummy); + +#define lilyvm_call_int (*(int(**)(int,...))0xbfafefac) +#define lilyvm_call_longlong (*(long long(**)(int,...))0xbfafef9c) +#define lilyvm_call lilyvm_call_int +#define LILYVM_CALL_VMN_WRITE 1 +#define LILYVM_CALL_VMN_READ 2 + +void +vmnattach(n) + int n; +{ + int i; + struct ifnet *ifp; + + for (i = 0; i < 1; i++) { + ifp = &vmnif[i]; + sprintf(ifp->if_xname, "vmn%d", i); + ifp->if_softc = NULL; + ifp->if_mtu = VMNMTU; + ifp->if_flags = IFF_MULTICAST; + ifp->if_ioctl = vmnioctl; + ifp->if_output = vmnoutput; + ifp->if_type = IFT_OTHER; + ifp->if_hdrlen = 0; + ifp->if_addrlen = 0; + ifp->if_dlt = DLT_NULL; + IFQ_SET_READY(&ifp->if_snd); + if_attach(ifp); + if_alloc_sadl(ifp); +#if NBPFILTER > 0 + bpfattach(ifp, DLT_NULL, sizeof(u_int)); +#endif + } + callout_init (&input_callout); +#if VMN_POLLING + callout_reset (&input_callout, 1, vmninput, NULL); +#else + isa_intr_establish (NULL, 1, IST_EDGE, IPL_HIGH, vmninputintr, 0); +#endif +} + +void +vmninput (void *dummy) +{ + int s, isr; + static uint len; + static struct mbuf *m = NULL; + struct ifqueue *ifq; + struct ifnet *ifp; + +loop: + if (m == NULL) { + len = 0; + MGETHDR (m, M_DONTWAIT, MT_DATA); + if (m) { + MCLGET(m, M_DONTWAIT); + if ((m->m_flags & M_EXT) == 0) { + m_freem (m); + m = NULL; + } + } + if (!m) printf ("vmninput: mbuf allocation failed\n"); + } + if (m) { + if (len == 0) { + len = lilyvm_call (LILYVM_CALL_VMN_READ, mtod (m, uint8_t *), MCLBYTES); + } + if (len > 0) { + ifq = &ipintrq; + ifp = &vmnif[0]; + isr = NETISR_IP; + s = splnet(); + if (IF_QFULL(ifq)) { + IF_DROP(ifq); + splx(s); + callout_reset (&input_callout, 1, vmninput, NULL); + } else { + m->m_pkthdr.len = m->m_len = len; + m->m_pkthdr.rcvif = ifp; + IF_ENQUEUE(ifq, m); + m = NULL; + schednetisr(isr); + ifp->if_ipackets++; + ifp->if_ibytes += len; + splx(s); + goto loop; + } + } + } +#if VMN_POLLING + callout_reset (&input_callout, 1, vmninput, NULL); +#endif +} + +int +vmninputintr (void *dummy) +{ + vmninput (dummy); + return -1; +} + +int +vmnoutput(ifp, m, dst, rt) + struct ifnet *ifp; + struct mbuf *m; + struct sockaddr *dst; + struct rtentry *rt; +{ + int isr; + struct ifqueue *ifq = 0; + + if ((m->m_flags & M_PKTHDR) == 0) + panic("vmnoutput: no header mbuf"); +#if NBPFILTER > 0 + if (ifp->if_bpf && (ifp->if_flags & IFF_LOOPBACK)) { + /* + * We need to prepend the address family as + * a four byte field. Cons up a dummy header + * to pacify bpf. This is safe because bpf + * will only read from the mbuf (i.e., it won't + * try to free it or keep a pointer to it). + */ + struct mbuf m0; + u_int32_t af = dst->sa_family; + + m0.m_next = m; + m0.m_len = 4; + m0.m_data = (char *)⁡ + + bpf_mtap(ifp->if_bpf, &m0); + } +#endif + m->m_pkthdr.rcvif = ifp; + + if (rt && rt->rt_flags & (RTF_REJECT|RTF_BLACKHOLE)) { + m_freem(m); + return (rt->rt_flags & RTF_BLACKHOLE ? 0 : + rt->rt_flags & RTF_HOST ? EHOSTUNREACH : ENETUNREACH); + } + +#ifndef PULLDOWN_TEST + /* + * KAME requires that the packet to be contiguous on the + * mbuf. We need to make that sure. + * this kind of code should be avoided. + * XXX other conditions to avoid running this part? + */ + if (m->m_len != m->m_pkthdr.len) { + struct mbuf *n = NULL; + int maxlen; + + MGETHDR(n, M_DONTWAIT, MT_HEADER); + maxlen = MHLEN; + if (n) + M_COPY_PKTHDR(n, m); + if (n && m->m_pkthdr.len > maxlen) { + MCLGET(n, M_DONTWAIT); + maxlen = MCLBYTES; + if ((n->m_flags & M_EXT) == 0) { + m_free(n); + n = NULL; + } + } + if (!n) { + printf("vmnoutput: mbuf allocation failed\n"); + m_freem(m); + return ENOBUFS; + } + + if (m->m_pkthdr.len <= maxlen) { + m_copydata(m, 0, m->m_pkthdr.len, mtod(n, caddr_t)); + n->m_len = m->m_pkthdr.len; + n->m_next = NULL; + m_freem(m); + } else { + m_copydata(m, 0, maxlen, mtod(n, caddr_t)); + m_adj(m, maxlen); + n->m_len = maxlen; + n->m_next = m; + m->m_flags &= ~M_PKTHDR; + } + m = n; + } +#endif + + ifp->if_opackets++; + ifp->if_obytes += m->m_pkthdr.len; + + switch (dst->sa_family) { + +#ifdef INET + case AF_INET: + ifq = &ipintrq; + isr = NETISR_IP; + break; +#endif + default: + printf("%s: can't handle af%d\n", ifp->if_xname, + dst->sa_family); + m_freem(m); + return (EAFNOSUPPORT); + } + + { + u_int8_t buf[VMNMTU]; + m_copydata(m, 0, m->m_pkthdr.len, buf); + lilyvm_call (LILYVM_CALL_VMN_WRITE, buf, m->m_pkthdr.len); + } + IF_DROP (ifq); + m_freem (m); + return (0); +} + +/* ARGSUSED */ +void +vmnrtrequest(cmd, rt, info) + int cmd; + struct rtentry *rt; + struct rt_addrinfo *info; +{ + if (rt && rt->rt_rmx.rmx_mtu > VMNMTU) + rt->rt_rmx.rmx_mtu = VMNMTU; + +} + +/* + * Process an ioctl request. + */ +/* ARGSUSED */ +int +vmnioctl(ifp, cmd, data) + struct ifnet *ifp; + u_long cmd; + caddr_t data; +{ + struct ifaddr *ifa; + struct ifreq *ifr; + int error = 0; + + switch (cmd) { + + case SIOCSIFADDR: + ifp->if_flags |= IFF_UP; + ifa = (struct ifaddr *)data; + if (ifa != 0 /*&& ifa->ifa_addr->sa_family == AF_ISO*/) + ifa->ifa_rtrequest = lortrequest; + /* + * Everything else is done at a higher level. + */ + break; + + case SIOCADDMULTI: + case SIOCDELMULTI: + ifr = (struct ifreq *)data; + if (ifr == 0) { + error = EAFNOSUPPORT; /* XXX */ + break; + } + switch (ifr->ifr_addr.sa_family) { + +#ifdef INET + case AF_INET: + break; +#endif + + default: + error = EAFNOSUPPORT; + break; + } + break; + + default: + error = EINVAL; + } + return (error); +}