> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/ask/flat/chapter-40-freebsd-kernel-architecture/di-40.3-jie-ji-qi-xiang-guan-de-nei-he-xuan-xiang-zhu-jie.md).

# 40.3 Machine-Dependent Kernel Options

Machine-dependent options are optimized for hardware characteristics of processor architectures such as x86, ARM, and RISC-V. This section annotates key options in `amd64/conf/NOTES`, listing the original text and English interpretations by functional category.

* Original: [amd64/conf/NOTES](https://github.com/freebsd/freebsd-src/blob/main/sys/amd64/conf/NOTES)
* Version: [mpi3mr: Broadcom's MPT-Fusion version 4 is amd64 and aarch64 only](https://github.com/freebsd/freebsd-src/commit/2f721943bf20e53b0ba7b5032a2900d0beb67413)

> **Tip**
>
> You can directly cut and paste kernel options and hints entries into the kernel configuration file.

## amd64 Machine-Dependent Kernel Options

### GCOV (Generate Coverage Information)

```ini
options 	LINDEBUGFS # ①
options 	GCOV # ②
```

* ① Linux pseudo-filesystem for debugging, see: lindebugfs(4)\[EB/OL]. \[2026-03-26]. <https://man.freebsd.org/cgi/man.cgi?query=lindebugfs&sektion=4>.
* ② GCOV is used for kernel code coverage analysis.

### SMP

This subsection describes optional device configurations related to Symmetric Multi-Processing (SMP):

Optional devices:

```ini
device		atpic			# Optional compatible pic programmable interrupt controller, ISA-related
device		mptable			# Optional MPSPEC multiprocessor table ①
```

* ① Provides kernel support for the MPSPEC multiprocessor table. See: mptable(1)\[EB/OL]. \[2026-03-26]. <https://man.freebsd.org/cgi/man.cgi?query=mptable&sektion=1>.

### CPU

This subsection describes CPU-related configuration options, including processor model specifications.

> **Tip**
>
> At least one CPU type (i.e., the target CPU intended to run on) must be specified; removing unused CPU configurations can improve system efficiency.

```ini
cpu		HAMMER			# HAMMER is the AMD K8 development codename, i.e., Opteron and Athlon64
```

### Hardware Device Configuration

This subsection describes kernel configuration options for various hardware devices, including display devices, network interfaces, storage adapters, etc.:

Optional devices:

```ini
device		vt_efifb	# EFI framebuffer ①
```

* ① vt(4) driver. See: vt(4)\[EB/OL]. \[2026-03-26]. <https://man.freebsd.org/cgi/man.cgi?query=vt%284%29&apropos=0&sektion=4>.

```ini
device		tdfx			# Enable 3Dfx Voodoo
```

Provides support for the **/dev/3dfx** character device for 3Dfx Voodoo Graphics and Voodoo II (products from the 1990s).

This will create device **/dev/3dfx0** for use with Glide implementations. This device should be linked to **/dev/3dfx** and **/dev/voodoo**. Note that this is independent of the XFree86 tdfx DRI module; they are unrelated.

#### RAID Adapters

This subsection describes driver configurations for various RAID (Redundant Array of Independent Disks) adapters:

```ini
#device	pst
```

Device driver for the Promise SuperTrak SX6000.

```ini
device		smartpqi
```

Microchip smartpqi controller. These controllers provide a SCSI-like interface and require the CAM infrastructure.

```ini
device		mpi3mr			# Broadcom MPIMR 3.0
```

Broadcom MPIMR 3.0 IT/IR 24Gb/s SAS Tri-Mode RAID controller, 64-bit architecture only.

#### Network Interface Devices

This subsection describes driver configurations for various network interface devices, including Ethernet, wireless NICs, etc.:

```ini
device		axp	    # AMD EPYC integrated Ethernet, depends on miibus module
device		ixl	    # Intel 700 Series Physical Function
device		iavf 	  # Intel Adaptive Virtual Function
device		ice		  # Intel 800 Series Physical Function
device		ice_ddp	# Intel 800 Series DDP Package
device		irdma		# Intel 800 Series RDMA driver, depends on ice module
device		qlxgb		# QLogic 3200/8200 10Gb Ethernet and CNA adapter
device		qlxgbe	# QLogic 8300 10Gb Ethernet and CNA adapter
device		qlxge		# QLogic 8100 series 10Gb Ethernet and CNA adapter
device		qlnxe		# Marvell QLogic 41000/45000 series 10/25/40/100 GbE Ethernet and CNA adapter
device		sfxge		# AMD/Xilinx Solarflare SFC9000 series 10Gb Ethernet
```

#### Other Hardware

This subsection describes configuration options for various other hardware devices, including DMA engines, EFI services, etc.:

```ini
device		ioat		# Intel I/OAT DMA engine
```

Provides Intel I/O Acceleration Technology (I/OAT) support.

```ini
options 	EFIRT
```

EFI runtime services support.

```ini
device		efidev
```

EFI pseudo device.

```ini
device		efirtc
```

EFI RTC (Real-Time Clock).

```ini
device		qat_c2xxx
```

Intel QuickAssist driver with OpenCrypto support, only supports Atom C2XXX chipsets.

```ini
options 	XENHVM		# Xen HVM kernel infrastructure
device		xenefi		# Xen EFI timer driver
device 		xenpci		# Xen HVM Hypervisor service driver
device		xentimer	# Xen x86 PV timer driver
```

Kernel optimization support for Xen HVM virtual machines.

### ABI Emulation

```ini
options 	COMPAT_FREEBSD32
```

Enables compatibility support for running FreeBSD i386 32-bit binaries on amd64 systems.

```ini
options 	COMPAT_AOUT
```

Enables 32-bit a.out binary support.

### ZFS

> **Note**
>
> This feature depends on the crypto, cryptodev, and ZSTDIO kernel components.

```ini
options 	ZFS
```

ZFS file system.

### VM

```ini
options 	NKPT=31
```

The number of initial kernel page table pages for early boot. This number should include enough pages to map the kernel and all modules or other data loaded by the loader along with the kernel. Each page table page maps 2 MB.

```ini
options 	KSTACK_PAGES=5
```

KSTACK\_PAGES is the number of memory pages allocated for each thread's kernel stack.

```ini
options 	PV_STATS
```

Enables detailed statistics and accounting for the PV entry allocator.

### Kernel Sanitizers

```ini
#options	COVERAGE	# Generic kernel coverage. KCOV depends on this option
#options	KCOV			# Kernel coverage sanitizer
#options	KUBSAN		# Kernel undefined behavior sanitizer ①
#options	KCSAN			# Kernel concurrency sanitizer
#options	KASAN			# Kernel address sanitizer
#options	KMSAN			# Kernel memory sanitizer
```

* ① Warning: KUBSAN may cause the kernel to become so large that the loader cannot load it.

## i386 and amd64 Shared Machine-Dependent Kernel Options

The following describes kernel configuration options shared by both i386 and amd64 x86 architectures.

Original [x86/conf/NOTES](https://github.com/freebsd/freebsd-src/blob/main/sys/x86/conf/NOTES), version [NOTES: Add iwm and iwx](https://github.com/freebsd/freebsd-src/commit/b1039bbe185bbadea24207b600f4bea065a2dbee).

> **Tip**
>
> You can directly cut and paste kernel and hints entries into the kernel configuration file.

### DTrace

```ini
#options 	KDTRACE_HOOKS
```

Enables kernel DTrace hooks, which the DTrace module depends on.

```ini
#device		dtrace
```

DTrace core.

> **Note**
>
> This introduces CDDL-licensed components (DTrace) into the kernel.

```ini
#device		dtrace_profile
#device		dtrace_sdt
#device		dtrace_fbt
#device		dtrace_systrace
#device		dtrace_prototype
#device		dtnfscl
#device		dtmalloc
```

The above are different types of DTrace modules.

```ini
#device		dtraceall
```

Optional; loads all the DTrace modules above.

### SMP

```ini
options 	IPI_PREEMPTION
```

This option is optional.

> **Note**
>
> `IPI_PREEMPTION` instructs the kernel to preempt threads running on other CPUs when needed. This feature depends on `PREEMPTION`.

```ini
options 	COUNT_XINVLTLB_HITS	# TLB event counter
options 	COUNT_IPIS		# Per-CPU IPI interrupt counter
```

Debug options.

### Compatibility

```ini
options 	COMPAT_43
```

Implements system calls compatible with 4.3BSD, FreeBSD 1.x, and 2.x a.out binaries. ELF binaries or newer a.out binaries do not need this.

### Network Support

```ini
options 	DEVICE_POLLING
```

`DEVICE_POLLING` adds a combined interrupt and polling processing mechanism for network device drivers. This feature offers significant advantages in handling overload, improving system responsiveness, and more precisely scheduling CPU time between kernel network processing and other activities. Its drawback is that response time may moderately increase (up to 1/HZ seconds).

It is strongly recommended to set HZ to 1000 or 2000 when using DEVICE\_POLLING for smoother operation. Polling can be enabled/disabled at runtime via the ifconfig(8) tool, and the proportion of CPU time reserved for user space can be adjusted through the sysctl variable `kern.polling.user_frac` (default 50, range 0 to 100). Note that at the time of this writing, not all device drivers support this operating mode. For more details, see polling(4).

```ini
options 	BPF_JITTER
```

`BPF_JITTER` adds just-in-time compiler support for BPF.

### Clock

```ini
device		nvram		# Access rtc cmos via /dev/nvram
```

Provides read and write access to the RTC CMOS storage area.

### Other Devices and Options

```ini
device		speaker
envvar		hint.speaker.0.at="isa"
envvar		hint.speaker.0.port="0x61"
```

Plays IBM BASIC-style beep tones through the speaker.

#### Hardware Bus Configuration

```ini
options 	IOMMU
```

Enables IOMMU.

```ini
device		isa
```

Enables ISA bus.

```ini
options 	AUTO_EOI_1
#options 	AUTO_EOI_2

options 	MAXMEM=(128*1024)
#options 	BROKEN_KEYBOARD_RESET
```

ISA bus options.

`AUTO_EOI_1` enables the "auto EOI" feature for the primary 8259A interrupt controller. This saves approximately 0.7-1.25 microseconds per interrupt. This option breaks suspend/resume on some portable devices.

`AUTO_EOI_2` enables the "auto EOI" feature for the secondary 8259A interrupt controller. This saves approximately 0.7-1.25 microseconds per interrupt. Documentation states that auto EOI does not work on the slave controller of the original i8259A chip, but some clone chips and integrated versions work correctly.

`MAXMEM` is used to specify the host memory capacity. If this parameter is not specified, FreeBSD will first read the memory capacity from CMOS RAM, and the initial memory will be limited to 64 MB or 16 MB (depending on the BIOS). If the BIOS reports 64 MB, the system will attempt to detect the actual installed memory capacity through memory probing. If probing fails and the memory is greater than 64 MB, the `MAXMEM` parameter must be used. The capacity value is in kilobytes, for example, 128 MB of memory should be set to 131072 (128 \* 1024).

`BROKEN_KEYBOARD_RESET` disables the function of performing CPU reset and reboot via the keyboard controller. This option is suitable for systems with faulty keyboard controllers.

```ini
device		agp
```

AGP GART support.

```ini
options 	AGP_DEBUG
```

Enables AGP debug support.

#### ACPI

```ini
device		acpi
options 	ACPI_DEBUG
```

ACPI support (based on the Intel ACPI Component Architecture reference implementation, ACPICA).

`ACPI_DEBUG` can set the initial debug level of Intel ACPICA code through kernel environment variables `debug.acpi.level` and `debug.acpi.layer` (note: this feature requires the `USE_DEBUGGER` option to be enabled at Intel code compile time).

```ini
device		acpi_wmi
```

ACPI WMI mapping driver.

```ini
device		acpi_asus
```

ACPI extensions for Asus (LCD backlight/brightness, video output, etc.).

```ini
device		acpi_fujitsu
```

ACPI extensions for Fujitsu (buttons).

```ini
device		acpi_hp
```

ACPI extension driver for HP notebooks.

```ini
device		acpi_ibm
```

ACPI extension driver for IBM notebooks (ThinkPad series).

```ini
device		acpi_panasonic
```

ACPI extensions for Panasonic (LCD backlight/brightness, video output, etc.).

```ini
device		acpi_sbl_wmi
```

ACPI SBL firmware update.

```ini
device		acpi_sony
```

ACPI extensions for Sony (LCD brightness adjustment).

```ini
device		acpi_toshiba
```

ACPI extensions for Toshiba (LCD backlight/brightness, video output, etc.).

```ini
device		acpi_video
```

ACPI video extensions (LCD backlight/brightness, video output, etc.).

```ini
device		acpi_dock
```

ACPI docking station support.

```ini
device		aibs
```

ACPI ASOC ATK0110 Asus AI Booster (voltage, temperature, and fan sensors).

#### Hardware Device Configuration

**Optional Devices**

```ini
device		sc
envvar		hint.sc.0.at="isa"
options 	MAXCONS=16		# Number of virtual consoles
options 	SC_ALT_MOUSE_IMAGE	# Simplified mouse cursor in text mode
options 	SC_DFLT_FONT		# Compile built-in font
makeoptions	SC_DFLT_FONT=cp850
options 	SC_DFLT_TERM=\"sc\"	# Default terminal emulator
options 	SC_DISABLE_KDBKEY	# Disable `debug' debug key
options 	SC_DISABLE_REBOOT	# Disable reboot shortcut key
options 	SC_HISTORY_SIZE=200	# History buffer line count
options 	SC_MOUSE_CHAR=0x3	# Text mode mouse cursor character code
options 	SC_PIXEL_MODE		# Add support for raster text mode
```

syscons console driver (compatible with SCO color console interface). syscons has been replaced by vt(4) as the default console driver and is incompatible with UEFI-booted systems; new deployments are recommended to use vt(4). See: syscons(4)\[EB/OL]. \[2026-06-10]. <https://man.freebsd.org/cgi/man.cgi?query=syscons&sektion=4>.

```ini
options 	SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options 	SC_NORM_REV_ATTR=(FG_YELLOW|BG_GREEN)
options 	SC_KERNEL_CONS_ATTR=(FG_RED|BG_BLACK)
options 	SC_KERNEL_CONS_ATTRS=\"\x0c\x0d\x0e\x0f\x02\x09\x0a\x0b\"
options 	SC_KERNEL_CONS_REV_ATTR=(FG_BLACK|BG_RED)
```

The above options can be used to adjust the default color configuration of syscons.

`flags` parameter for sc:

* `0x80` sets the video card to VESA 800x600 dot matrix 16-color mode
* `0x100` periodically probes if no keyboard device is detected

```ini
options 	SC_CUT_SPACES2TABS	# Convert leading spaces to tabs
options 	SC_CUT_SEPCHARS=\"x09\"	# Word separator character set (default is a single space - "x20")
```

The above options can be used to modify the default behavior of the cut and paste function.

```ini
options 	SC_TWOBUTTON_MOUSE
```

If using a two-button mouse, you can add the above option to enable right-click paste text functionality.

```ini
options 	SC_NO_CUTPASTE
options 	SC_NO_FONT_LOADING
options 	SC_NO_HISTORY
options 	SC_NO_MODE_CHANGE
options 	SC_NO_SYSMOUSE
options 	SC_NO_SUSPEND_VTYSWITCH
#!options 	SC_NO_TERM_DUMB
#!options 	SC_NO_TERM_SC
#!options 	SC_NO_TERM_SCTEKEN
```

Selectively disable functional modules in syscons.

```ini
device		splash
```

Boot splash screen and screen saver.

```ini
device		blank_saver
device		daemon_saver
device		dragon_saver
device		fade_saver
device		fire_saver
device		green_saver
device		logo_saver
device		rain_saver
device		snake_saver
device		star_saver
device		warp_saver
```

Various screen savers.

```ini
options 	VESA
```

VGA VESA display modes.

```ini
options 	VESA_DEBUG
```

Enables additional debug checks and output for VESA support.

```ini
device		dpms
```

DPMS (VESA Display Power Management Signaling) suspend and resume via VESA BIOS.

```ini
options 	X86BIOS
```

x86 real-mode BIOS emulator (atkbdc/dpms/vesa functionality depends on this).

```ini
device		psm
envvar		hint.psm.0.at="atkbdc"
envvar		hint.psm.0.irq="12"
```

PS/2 mouse.

```ini
options 	PSM_HOOKRESUME
```

psm option.

Resets the device on system resume events (particularly useful for some laptops).

```ini
device		atkbdc
envvar		hint.atkbdc.0.at="isa"
envvar		hint.atkbdc.0.port="0x060"
```

Keyboard controller: this component controls the keyboard and PS/2 mouse.

```ini
device		atkbd
envvar		hint.atkbd.0.at="atkbdc"
envvar		hint.atkbd.0.irq="1"
```

AT keyboard.

```ini
options 	ATKBD_DFLT_KEYMAP	# Specify built-in keyboard layout
makeoptions	ATKBD_DFLT_KEYMAP=fr.dvorak
```

atkbd driver options.

atkbd flags parameters:

| Flag Value | Description                                                                            |
| ---------- | -------------------------------------------------------------------------------------- |
| `0x01`     | Force keyboard detection (default always assumes keyboard is present)                  |
| `0x02`     | Do not reset keyboard (applicable to some newer ThinkPads)                             |
| `0x03`     | Force detection and avoid reset (may help with specific docking station compatibility) |
| `0x04`     | Enable legacy (XT) keyboard support (applicable to older ThinkPads)                    |

```ini
device		vga
envvar		hint.vga.0.at="isa"
```

VGA adapter graphics driver.

```ini
options 	VGA_ALT_SEQACCESS
```

VGA driver option: if the mouse pointer displays incorrectly or fonts do not load properly, try the above option (may cause screen flickering on some systems).

```ini
#options 	VGA_NO_FONT_LOADING	# Do not save/load fonts
#options 	VGA_NO_MODE_CHANGE	# Do not change display mode
```

If you need to save memory space, you can disable some VGA driver features through the above options.

```ini
options 	VGA_SLOW_IOACCESS	# Perform byte-width I/O operations on TS and GDC registers
```

Performs byte-width I/O operations on TS and GDC registers. Older graphics cards may need this option to ensure proper operation.

```ini
options 	VGA_WIDTH90
```

Supports 90-column mode. The above option may not be suitable for LCD display devices.

```ini
options 	VGA_DEBUG
```

VGA debug support.

```ini
device		vt_vga		# VGA
device		vt_vbefb	# VBE framebuffer
```

vt(4) driver.

```ini
device		s3pci
```

VESA-based S3 VESA 1.2 graphics card linear framebuffer driver.

#### RAID Adapters

```ini
device		arcmsr		# Areca SATA II RAID
```

Areca 11xx and 12xx series SATA II RAID controllers (requires CAM subsystem to be enabled).

```ini
device		aac
device		aacp	# SCSI passthrough interface (optional feature, requires CAM subsystem to be enabled)
```

Adaptec FSA RAID controller series, including Dell integrated controllers, Dell PERC 2/QC, and HP NetRAID-4M.

```ini
# Highpoint RocketRAID 27xx
device		hpt27xx

# Highpoint RocketRAID 182x
device		hptmv

# Highpoint DC7280 and R750
device		hptnr

# Highpoint RocketRAID: supports RR172x, RR222x, RR2240, RR232x, RR2340, RR2210, RR174x, RR2522, RR231x, RR230x
device		hptrr

# Highpoint RocketRaid 3xxx series SATA RAID
device		hptiop
```

Highpoint-related devices.

```ini
device		ips
```

IBM (some models manufactured by Adaptec, x86 server business was sold to Lenovo in 2014) ServeRAID controllers (IBM. IBM Completes Initial Closing of the Sale of its x86 Server Business to Lenovo\[EB/OL]. \[2026-04-17]. <https://www.ibm.com/investor/att/pdf/IBM-Divests-x86-Systems-Business-to-Lenovo.pdf>.).

```ini
device		isci
options 	ISCI_LOGGING	# Enable debug functionality in isci HAL
```

Intel C600 (Patsburg) integrated SAS controller.

```ini
device		vmd
```

Intel Volume Management Device (VMD) support.

```ini
device		pmspcv
```

PMC-Sierra SAS/SATA controller.

#### Floppy Disk

```ini
device		fdc
envvar		hint.fdc.0.at="isa"
envvar		hint.fdc.0.port="0x3F0"
envvar		hint.fdc.0.irq="6"
envvar		hint.fdc.0.drq="2"
```

Standard floppy disk controller and floppy tape drive, supports Y-E DATA external FDD (PC card).

```ini
options 	FDC_DEBUG
```

FDC\_DEBUG enables floppy disk debugging. Due to the large volume of debug output, the fd\_debug variable must be set via DDB to activate it.

```ini
#hint.fdc.0.flags="1"
```

If using Insight's floppy tape device, please activate this configuration item. Since there is a risk in device probing for users who only configure floppy disks, this feature has been isolated via flag bits.

```ini
envvar		hint.fd.0.at="fdc0"
envvar		hint.fd.0.drive="0"
envvar		hint.fd.1.at="fdc0"
envvar		hint.fd.1.drive="1"
```

Specifies floppy disk devices.

#### CPU Frequency Control

```ini
device		cpufreq
```

The cpufreq(4) driver provides support for non-ACPI CPU frequency control.

#### Network Cards

```ini
device		bxe		# QLogic NetXtreme II BCM5771X/BCM578XX 10GbE Ethernet
device		gve		# Google Virtual NIC (gVNIC)
device		igc		# Intel I225 2.5 G Ethernet
device		ipw		# Intel 2100 wireless NIC (Intel PRO/Wireless 2100 IEEE 802.11 adapter), depends on ipw firmware
device		iwi		# Intel 2200BG/2225BG/2915ABG wireless NIC (Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 adapter), depends on iwi firmware
device		iwm		# Intel wireless NIC (Intel Dual Band Wireless AC series), depends on iwm firmware
device		iwn		# Intel 4965/1000/5000/6000 wireless NIC
device		iwx		# Intel IEEE 802.11ax wireless NIC
device  	mthca		# Mellanox HCA InfiniBand
device  	mlx4		# InfiniBand and Ethernet shared code module
device  	mlx4ib		# Mellanox ConnectX HCA InfiniBand
device  	mlx4en		# Mellanox ConnectX HCA Ethernet
device		nfe		# NVIDIA nForce MCP onboard Ethernet (BSD-licensed open source)
device		vmx		# VMware VMXNET3 Ethernet (BSD-licensed open source)
device		wpi		# Intel 3945ABG wireless NIC (Intel 3945ABG wireless LAN controller), depends on wpi firmware
```

#### IEEE 802.11 Adapter Firmware

```ini
device		iwifw
device		iwibssfw
device		iwiibssfw
device		iwimonitorfw
device		ipwfw
device		ipwbssfw
device		ipwibssfw
device		ipwmonitorfw
device		iwnfw
device		iwn1000fw
device		iwn105fw
device		iwn135fw
device		iwn2000fw
device		iwn2030fw
device		iwn4965fw
device		iwn5000fw
device		iwn5150fw
device		iwn6000fw
device		iwn6000g2afw
device		iwn6000g2bfw
device		iwn6050fw
device		wpifw
```

Intel PRO/Wireless 2100 firmware:

* ipwfw - Full-featured firmware supporting BSS/IBSS/monitor mode
* ipwbssfw - BSS mode only firmware
* ipwibssfw - IBSS mode only firmware
* ipwmonitorfw - Monitor mode only firmware

Intel PRO/Wireless 2200BG/2225BG/2915ABG firmware:

* iwifw - Full-featured firmware supporting BSS/IBSS/monitor mode
* iwibssfw - BSS mode only firmware
* iwiibssfw - IBSS mode only firmware
* iwimonitorfw - Monitor mode only firmware

Intel Wireless Wi-Fi Link 4965/1000/5000/6000 series firmware:

* iwnfw - Single module supporting all devices in this series
* iwn1000fw - Specific module for 1000 only
* iwn105fw - Specific module for 105 only
* iwn135fw - Specific module for 135 only
* iwn2000fw - Specific module for 2000 only
* iwn2030fw - Specific module for 2030 only
* iwn4965fw - Specific module for 4965 only
* iwn5000fw - Specific module for 5000 only
* iwn5150fw - Specific module for 5150 only
* iwn6000fw - Specific module for 6000 only
* iwn6000g2afw - Specific module for 6000g2a only
* iwn6000g2bfw - Specific module for 6000g2b only
* iwn6050fw - Specific module for 6050 only

Other:

* wpifw - Intel 3945ABG wireless LAN controller firmware

#### Non-Transparent Bridge (NTB) Drivers

```ini
device		if_ntb		# Virtual NTB NIC
device		ntb_transport	# NTB packet transport driver
device		ntb		# NTB hardware interface
device		ntb_hw_amd	# AMD NTB hardware driver
device		ntb_hw_intel	# Intel NTB hardware driver
device		ntb_hw_plx	# PLX NTB hardware driver
```

#### Other Hardware

```ini
device		ipmi    # Intelligent Platform Management Interface
device		pbio    # Parallel (8255 PPI) basic I/O (mode 0) port (e.g., Advantech PCL-724)
envvar		hint.pbio.0.at="isa"
envvar		hint.pbio.0.port="0x360"
device		smbios  # DMI/SMBIOS entry point (requires EFIRT option to be enabled)
device		vpd # Vital Product Data kernel interface
device		asmc    # Apple System Management Controller
device		tpm # Trusted Platform Module
device		rdrand_rng	# Intel Bull Mountain random number generator
device		aesni		# AES-NI OpenCrypto module
device		ossl		# OpenSSL OpenCrypto module
```

Specialix SI/XIO driver notes:

* Host cards use memory-mapped (not I/O-mapped)
* Rev 1 host cards use 64 K memory blocks, aligned to 32 K boundaries
* Rev 2 host cards use 32 K memory blocks, aligned to 32 K boundaries
* This card series supports using IRQ 11, 12, or 15

```ini
device		kvm_clock	# KVM paravirtualized clock driver
```

Linux KVM paravirtualization support.

```ini
device 		hyperv		# Hyper-V driver
device		hvhid		# Hyper-V HID driver
```

Microsoft Hyper-V virtualization enhancement support.

```ini
device		pvscsi		# Paravirtualized SCSI driver
device		vmci		# Virtual Machine Communication Interface (VMCI)
device		vmware_guestrpc	# GuestRPC interface
```

VMware hypervisor support.

```ini
device backlight
```

Laptop-specific option. Backlight brightness adjustment.

```ini
device		imcsmb
```

System Management Bus (SMBus).

Supported SMBus interfaces:

* imcsmb: Integrated Memory Controller (iMC) SMBus controller.
* Supported platforms: Sandy Bridge-Xeon, Ivy Bridge-Xeon, Haswell-Xeon, Broadwell-Xeon processors

```ini
device		iichid		# HID-over-I²C support
options 	IICHID_DEBUG	# Enable HID-over-I²C debug messages
options 	IICHID_SAMPLING	# Workaround for missing GPIO interrupt support
```

HID-over-I²C support.

```ini
device		amdsmn
```

AMD System Management Network (SMN).

```ini
device		ichwd   # Intel ICH watchdog timer
device		amdsbwd # AMD SB7xx watchdog timer
device		viawd   # VIA southbridge watchdog timer
device		wbwd    # Winbond watchdog timer
device		itwd    # ITE Super I/O watchdog timer
```

Hardware watchdog timers.

```ini
device		coretemp
device		amdtemp
```

Temperature sensors:

* `coretemp`: Built-in sensor on Intel Core and newer architecture processor dies
* `amdtemp`: Built-in sensor on AMD Family 0Fh-17h (K8 to Zen) series processor dies

```ini
device		cpuctl
```

CPU control pseudo device. Provides access to MSR (Model Specific Registers), CPUID information, and microcode update functionality.

```ini
device		superio
```

SuperIO driver.

```ini
options 	KBDIO_DEBUG=2
options 	KBD_MAXRETRY=4
options 	KBD_MAXWAIT=6
options 	KBD_RESETDELAY=201

options 	PSM_DEBUG=1

options 	TIMER_FREQ=((14318182+6)/12)

options 	VM_KMEM_SIZE
options 	VM_KMEM_SIZE_MAX
options 	VM_KMEM_SIZE_SCALE
```

Many internal options for code checking.

> **Note**
>
> Original comment: Writing documentation for such options is not considered improper.

## arm64 (aarch64) Machine-Dependent Configuration

* Original: [sys/arm64/conf/NOTES](https://github.com/freebsd/freebsd-src/blob/main/sys/arm64/conf/NOTES): Machine-dependent kernel configuration notes for aarch64. Version: [LINT: add KDTRACE\_MIB\_SDT to catch inconsistencies with struct tcpstat](https://github.com/freebsd/freebsd-src/commit/b3d0562dd84540be2fd98e6a457cdcb232e9f915).

```ini
#profile         2
```

Would like LINT to also support profiling, but this feature currently still has defects.

```ini
options 	KDTRACE_HOOKS
options 	KDTRACE_MIB_SDT
```

Enables kernel DTrace hooks needed to load the DTrace kernel module.

```ini
cpu		ARM64
```

The following content is mainly ported from the ARM64 platform GENERIC configuration file.

```ini
makeoptions	DEBUG=-g
```

Build a kernel with gdb(1) debug symbols.

```ini
makeoptions	WITH_CTF=1
```

Run ctfconvert(1) to support DTrace functionality.

```ini
options 	PRINTF_BUFR_SIZE=128
```

Prevents printf output interleaving.

```ini
options 	KDTRACE_FRAME
```

Ensures frame information is included at compile time.

```ini
options 	VFP
```

Floating-point operation support.

```ini
options 	RACCT_DEFAULT_TO_DISABLED
```

Sets `kern.racct.enable=0` as the default.

### SoC Support

```ini
options 	SOC_ALLWINNER_A64
```

Allwinner A64 (sun50iw1) SoC features a quad-core Cortex-A53 ARM processor and integrates an ARM Mali400 MP2 graphics processor.

```ini
options 	SOC_ALLWINNER_H5
```

Allwinner H5 (sun50iw2p1) SoC features a quad-core Cortex-A53 ARM processor and integrates an ARM Mali450 MP4 graphics processor.

```ini
options 	SOC_ALLWINNER_H6
```

Allwinner H6 (sun50iw6p1) SoC features a quad-core Cortex-A53 ARM processor and integrates an ARM Mali-T720 MP2 graphics processor. This chip is an SoC designed specifically for OTT devices.

```ini
options 	SOC_BRCM_BCM2837
```

This chip is used in Raspberry Pi 3B, later models of 2B, and Raspberry Pi Compute Module 3. The underlying architecture of BCM2837 is the same as BCM2836. The only notable difference is the replacement of the quad-core ARMv7 cluster with a quad-core ARM Cortex A53 (ARMv8) cluster.

```ini
options 	SOC_BRCM_BCM2838
```

Broadcom chip used in Raspberry Pi 4B. The SoC actually equipped on Raspberry Pi 4B is BCM2711, and the FreeBSD kernel option retains the BCM2838 naming (Raspberry Pi Foundation. BCM2711\[EB/OL]. \[2026-04-17]. <https://www.raspberrypi.com/documentation/computers/processors.html>.).

```ini
options 	SOC_BRCM_NS2
```

Broadcom Northstar 2 (NS2) SoC. NS2 is an ARMv8 architecture-based SoC, part of the Broadcom iProc product family.

```ini
options 	SOC_CAVM_THUNDERX
```

Marvell ThunderX.

```ini
options 	SOC_FREESCALE_IMX8
```

i.MX 8 series application processors based on Arm Cortex architecture.

```ini
options 	SOC_HISI_HI6220
```

HiSilicon Kirin 620.

```ini
options 	SOC_INTEL_STRATIX10
```

Intel Stratix® 10.

```ini
options 	SOC_MARVELL_8K
```

Marvell Armada 8K SoC.

```ini
options 	SOC_NVIDIA_TEGRA210
```

NVIDIA Tegra210.

```ini
options 	SOC_NXP_LS
```

NXP Layerscape processors.

```ini
options 	SOC_ROCKCHIP
```

Rockchip.

```ini
options 	SOC_ROCKCHIP_RK3328
```

Rockchip RK3328.

```ini
options 	SOC_ROCKCHIP_RK3399
```

Rockchip RK3399.

```ini
options 	SOC_ROCKCHIP_RK3568
```

Rockchip RK3568.

```ini
options 	SOC_XILINX_ZYNQ
```

AMD Xilinx Zynq SoC.

#### Timer

```ini
device		aw_timer
```

Allwinner timer driver.

### Annapurna Alpine Driver

```ini
device		al_ccu
```

Alpine Cache Coherency Unit.

```ini
device		al_nb_service
```

Alpine Northbridge Service.

```ini
device		al_iofic
```

Alpine I/O Fabric Interrupt Controller.

```ini
device		al_serdes
```

Alpine Serializer/Deserializer.

```ini
device		al_udma
```

Alpine Universal DMA.

### Qualcomm Snapdragon Series Drivers

```ini
device		qcom_gcc
```

Qualcomm Snapdragon Global Clock Controller.

### Google Virtual NIC

```ini
device		gve
```

Google Virtual NIC (gVNIC) driver.

### Microsoft Hyper-V

```ini
device		hyperv
```

Microsoft Hyper-V.

### CPU Frequency Scaling

```ini
device		cpufreq
```

CPU frequency scaling support.

### Hardware Crypto Acceleration

```ini
device		armv8crypto
```

ARMv8 OpenCrypto module.

```ini
device		ossl
```

OpenSSL OpenCrypto module.

### Bus Drivers

```ini
device		al_pci
```

Annapurna Alpine PCIe.

```ini
options 	PCI_HP
```

PCIe native hot-plug.

```ini
options 	PCI_IOV		# PCI SR-IOV support
```

### Ethernet Cards

```ini
device		mdio
```

IEEE 802.3 Management Data Input/Output Interface (MDIO).

```ini
device		awg
```

Allwinner EMAC Gigabit Ethernet controller.

```ini
device		axa
```

AMD Opteron A1100 integrated NIC.

```ini
device		neta
```

Marvell Armada 370/38x/XP/3700 NIC.

```ini
device  	smc
```

SMSC LAN91C111.

```ini
device		vnic
```

Marvell ThunderX NIC.

```ini
device		al_eth
```

Annapurna Alpine Ethernet NIC.

```ini
device  	dwc
```

Synopsys Designware GMAC Ethernet.

```ini
device		dwc_rk
```

Rockchip Designware.

```ini
device		dwc_socfpga
```

Altera SOCFPGA Ethernet MAC.

```ini
device		ice
```

Intel 800 Series Physical Function.

```ini
device		ice_ddp
```

Intel 800 Series DDP package.

### Etherswitch Devices

```ini
device		e6000sw
```

Marvell mv88e6085-based switch.

### Storage

```ini
device		mpi3mr			# Broadcom MPIMR 3.0
```

Broadcom MPIMR 3.0 IT/IR 24Gb/s SAS Tri-Mode RAID controller, 64-bit architecture only.

### MMC/SD/SDIO Card Slot Support

```ini
device		sdhci_xenon
```

Marvell Xenon SD/MMC controller.

```ini
device		aw_mmc
```

Allwinner SD/MMC controller.

```ini
device		dwmmc
```

DesignWare SD/MMC bus controller.

```ini
device		dwmmc_altera
```

Altera SoCFPGA DWMAC controller.

```ini
device		rk_emmcphy
```

The rkemmcphy driver controls the integrated eMMC PHY on Rockchip SoCs.

### Serial (COM) Ports

```ini
device		uart_msm
```

Qualcomm MSM UART driver.

```ini
device		uart_mu
```

Raspberry Pi 3 auxiliary port.

```ini
device		uart_mvebu
```

Armada 3700 UART driver.

```ini
device		uart_ns8250
```

NS8250-type UART driver.

```ini
device		uart_snps
```

DesignWare Synopsys UART driver.

```ini
device		pl011
```

PL011 generic ARM UART controller.

### Arm FVP

```ini
options 	SOCDEV_PA=0x1c090000
options 	EARLY_PRINTF=pl011
```

Early printf support using PL011 UART on the Arm FVP platform.

### USB

```ini
device		aw_usbphy
```

Allwinner USB PHY.

```ini
device		dwcotg
```

DWC OTG controller.

```ini
device		ehci_mv
```

Marvell EHCI USB controller.

### USB Ethernet

```ini
device		muge
```

Microchip LAN78xx USB Gigabit Ethernet controller driver.

```ini
device		smsc
```

Microchip LAN9xxx USB Fast Ethernet driver.

### Audio

```ini
device a10_codec
```

Allwinner A10 codec.

### DMA Controller

```ini
device		a31_dmac
```

Allwinner A31 (sun6i) SoC DMA controller.

### GPIO / Pin Control (PINCTRL)

```ini
device		a37x0_gpio
```

Marvell Armada 37x0 GPIO controller.

```ini
device		aw_gpio
```

Allwinner GPIO controller.

```ini
device		fdt_pinctrl
```

FDT I/O pin multiplexing support.

```ini
device		mv_gpio
```

Marvell GPIO controller.

```ini
device		mvebu_pinctrl
```

Marvell Pinmux controller.

```ini
device		rk_gpio
```

Rockchip GPIO controller.

```ini
device		rk_pinctrl
```

Rockchip Pinmux controller.

### I²C

```ini
device		aw_rsb
```

Allwinner Reduced Serial Bus.

```ini
device		bcm2835_bsc
```

Broadcom BCM283x I²C controller.

```ini
device		twsi
```

Allwinner I²C controller (TWSI).

```ini
device		rk_i2c
```

RockChip I²C controller.

### Clock and Reset Controller

```ini
device		aw_ccu
```

Allwinner Clock Controller.

### Interrupt Controller

```ini
device		aw_nmi
```

Allwinner NMI.

```ini
device		mv_cp110_icu
```

Marvell CP110 ICU.

```ini
device		mv_ap806_gicp
```

Marvell AP806 GICP.

### RTC Clock

```ini
device		aw_rtc
```

Allwinner RTC real-time clock.

```ini
device		mv_rtc
```

Marvell RTC real-time clock.

### Watchdog Controller

```ini
device		aw_wdog
```

Allwinner watchdog timer.

### Power Management Controller

```ini
device		axp81x
```

X-Powers AXP81x power management IC.

```ini
device		rk8xx
```

Rockchip RK8xx base support.

```ini
device		rk805
```

Rockchip RK805 power management IC.

```ini
device		rk808
```

Rockchip RK808 power management IC.

```ini
device		rk817
```

Rockchip RK817 power management IC.

### Electronic Fuse (EFUSE)

```ini
device		aw_sid
```

Allwinner Secure ID eFuse.

### Thermal Sensor

```ini
device		aw_thermal
```

Allwinner thermal sensor controller.

```ini
device		mv_thermal
```

Marvell thermal sensor controller.

### SPI

```ini
device		bcm2835_spi
```

Broadcom BCM283x SPI bus.

### PWM

```ini
device		pwm
```

Configure PWM (Pulse Width Modulation) hardware.

```ini
device		aw_pwm
```

Allwinner PWM support.

```ini
device		vt_efifb
```

EFI framebuffer terminal driver.

```ini
device		vt_simplefb
```

Simple framebuffer virtual console driver.

```ini
options 	EVDEV_SUPPORT
```

EVDEV, evdev support in legacy input drivers.

```ini
device		aw_cir
```

Allwinner Consumer IR (IR) controller.

```ini
device		clk
device		efidev		# EFI pseudo device
device		efirtc		# EFI RTC
device		phy
device		hwreset
device		nvmem
device		regulator
device		syscon
device		aw_syscon
```

Pseudo devices.

```ini
device		backlight
```

Backlight subsystem.

### Other Devices

```ini
device		pl330
```

ARM PL330 DMA controller.

```ini
device		xdma
```

xDMA framework for SoC on-chip DMA controllers.

```ini
options 	THUNDERX_PASS_1_1_ERRATA
```

Chip-specific errata.

```ini
options 	EFIRT		# EFI runtime services
```

```ini
options 	FDT
```

FDT support.

```ini
device		acpi
```

ACPI support.

```ini
makeoptions	MODULES_EXTRA="dtb/allwinner dtb/rockchip dtb/rpi"
```

DTB (Device Tree Blob) support.

```ini
options 	CAMDEBUG
options 	CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH)
```

Add CAMDEBUG debug functionality.

```ini
options 	MMCCAM
```

Also includes camified MMC.

```ini
nooptions 	PPC_PROBE_CHIPSET
```

arm64 does not support inb/outb, so chipset probing that requires them is disabled.

```ini
nooptions 	DEBUG
```

These options may cause abnormal issues, the reason is not yet clear.

```ini
nodevice	snd_cmi
```

Related assumptions about bus labels do not hold on the arm64 architecture.

```ini
nooptions 	COMPAT_FREEBSD4
nooptions 	COMPAT_FREEBSD5
nooptions 	COMPAT_FREEBSD6
nooptions 	COMPAT_FREEBSD7
nooptions 	COMPAT_FREEBSD9
nooptions 	COMPAT_FREEBSD10
```

The arm64 architecture did not exist in these versions, so the required compatibility support is lacking; these options are directly disabled.

```ini
options 	COMPAT_FREEBSD32	# Compatible with FreeBSD/arm
```

arm64 supports 32-bit FreeBSD/arm binaries (armv6/armv7 ABI).

```ini
options		IOMMU
```

ARM64 SMMU/IOMMU support.

### ZFS

```ini
options 	ZFS
```

ZFS file system support.

### HID-over-I2C

```ini
device		iichid
```

HID-over-I2C support.

```ini
options 	IICHID_DEBUG
```

Enable HID-over-I2C debug messages.

```ini
options 	IICHID_SAMPLING
```

Workaround for missing GPIO interrupt support.

## armv7/32-bit arm Machine-Dependent Configuration

* Original: [sys/arm/conf/NOTES](https://github.com/freebsd/freebsd-src/blob/main/sys/arm/conf/NOTES): Machine-dependent kernel configuration notes for armv7. Version: [arm: tweak imx module build logic](https://github.com/freebsd/freebsd-src/commit/5aefe9f16f240696142894bdeabcebbb057c7053).

This architecture is being deprecated, so its kernel options are not listed.

## 64-bit RISC-V Machine-Dependent Configuration

* Original: [sys/riscv/conf/NOTES](https://github.com/freebsd/freebsd-src/blob/main/sys/riscv/conf/NOTES): Machine-dependent kernel configuration notes for riscv64 (64-bit RISC-V). Over 100 lines. Version: [riscv: support PV\_STATS pmap option](https://github.com/freebsd/freebsd-src/commit/88d81453b1151f8b133023073f3a773dd78cdc3a).

```ini
cpu RISCV
```

Specifies the processor architecture as RISC-V.

```ini
makeoptions        DEBUG=-g
```

Build a kernel with gdb(1) debug symbols.

```ini
makeoptions        WITH_CTF=1
```

Run ctfconvert(1) to support DTrace.

```ini
options         PRINTF_BUFR_SIZE=128
```

Prevents printf output interleaving.

```ini
options         KDTRACE_FRAME
```

Ensures stack frame information is compiled into the kernel.

```ini
options         KDTRACE_HOOKS
```

Kernel DTrace hooks.

```ini
options         DDB_CTF
```

Kernel ELF linker loads CTF data.

```ini
options         RACCT_DEFAULT_TO_DISABLED
```

Sets the default value of `kern.racct.enable` to `0`.

```ini
options         PV_STATS
```

Enables detailed statistics for the PV entry allocator.

```ini
device rcons
```

RISC-V SBI console.

```ini
device clk
device hwreset
device phy
device regulator
device syscon
device syscon_power
device riscv_syscon
```

Pseudo devices.

```ini
device backlight
```

Backlight subsystem.

```ini
device dwmmc
```

MMC/SD/SDIO card slot support.

```ini
device dtrace
```

DTrace core.

> **Note**
>
> The `dtrace` option introduces CDDL-licensed components into the kernel.

```ini
device dtraceall
```

Built-in all DTrace modules.

### Serial (COM) Ports

```ini
device uart_lowrisc
```

lowRISC UART driver.

```ini
device uart_ns8250
```

ns8250-type UART driver.

### RTC Real-Time Clock

```ini
device da9063_rtc
```

Dialog Semiconductor DA9063 real-time clock.

```ini
device goldfish_rtc
```

QEMU real-time clock.

### Ethernet Drivers

```ini
device          dwc
```

Synopsys DesignWare GMAC Ethernet.

```ini
device xae
```

Xilinx AXI Ethernet MAC.

### DMA Interface Support

```ini
device xdma
```

DMA interface.

```ini
device axidma
```

Xilinx AXI DMA controller.

### SPI

```ini
device xilinx_spi
```

Xilinx AXI Quad SPI controller.

### Power Management Control

```ini
device da9063_pmic
```

Dialog Semiconductor DA9063 Power Management IC (PMIC).

### SiFive Device Drivers

```ini
device fe310aon
device fu740_pci_dw
device sifive_gpio
device sifive_spi
files "../sifive/files.sifive"
```

### Flattened Device Tree (FDT)

```ini
options         FDT
makeoptions        MODULES_EXTRA+="dtb/sifive"
```

### FreeBSD/riscv Did Not Exist in These Versions

```ini
nooptions         COMPAT_FREEBSD4
nooptions         COMPAT_FREEBSD5
nooptions         COMPAT_FREEBSD6
nooptions         COMPAT_FREEBSD7
nooptions         COMPAT_FREEBSD9
nooptions         COMPAT_FREEBSD10
nooptions         COMPAT_FREEBSD11
```

### Since the RISC-V Architecture Does Not Support inb/outb Instructions, Chipset Probing That Requires These Instructions Is Disabled

```ini
nooptions         PPC_PROBE_CHIPSET
```

### On the RISC-V Architecture, Certain Assumptions About Bus Labels Do Not Hold

```ini
nodevice        snd_cmi
```

### hwpmc(4) Functionality Is Not Yet Implemented

```ini
nodevice        hwpmc
nooptions         HWPMC_HOOKS
```

### RISC-V Architecture Specific

```ini
nodevice        ccr
nodevice        cxgbe
nodevice        cxgbev
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/ask/flat/chapter-40-freebsd-kernel-architecture/di-40.3-jie-ji-qi-xiang-guan-de-nei-he-xuan-xiang-zhu-jie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
