> 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-15-system-booting/di-15.2-jie-qi-dong-xiao-xi-dmesg.md).

# 15.2 Boot Messages (dmesg)

When FreeBSD boots, most boot messages are related to devices being detected. A copy of the boot messages is saved in **/var/run/dmesg.boot**.

The following example shows the complete boot messages of a Radxa X4 16G 128G eMMC model under 15.0-CURRENT.

```sh
# ----- Kernel Boot Marker -----
---<<BOOT>>---
# This line marks the beginning of kernel boot message output. The previous boot loader (loader) output does not appear in the dmesg buffer,
# because the dmesg buffer is created by the kernel during initialization. Boot loader messages (boot menu) can only be viewed through the serial console or screen.

# ----- Copyright Notice -----
Copyright (c) 1992-2025 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
# The first line declares the copyright of the FreeBSD Project (FreeBSD's own code, starting from 1992).
# The second line declares the copyright of The Regents of the University of California — the copyright holder of 4.4BSD-Lite and earlier BSD versions.
# The year span 1979-1994 represents the complete history of BSD from 3BSD to 4.4BSD-Lite (4.4BSD-Lite2 was released in June 1995, after this range).
# The third line declares that the FreeBSD Foundation holds the "FreeBSD" registered trademark.

# ----- Kernel Version Identifier -----
FreeBSD 15.0-CURRENT #0 main-n275588-045a4c108fcf: Fri Feb 21 02:25:56 UTC 2025
    root@releng3.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
# Format: <system name> <version>-<branch> #<build number> <Git commit hash>: <build date and time>
# 15.0-CURRENT: Development branch (not a formal release).
# #0: The 0th build of this kernel configuration (config(8) build count).
# main-n275588-045a4c108fcf: Git main branch snapshot identifier.
# Second line: Build host (root@releng3.nyi.freebsd.org), build directory path, kernel configuration file (GENERIC), target architecture (amd64).

# ----- Compiler Information -----
FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd708029e0b2)
# FreeBSD base system compiler version. The kernel of the current FreeBSD version is compiled with Clang 19.1.7.
# FreeBSD has used Clang as the default system compiler since 10.0, replacing GCC.

# ----- Debug Option Warning -----
WARNING: WITNESS option enabled, expect reduced performance.
# WITNESS is a kernel deadlock detection and lock order verification mechanism. When enabled, it validates every lock acquisition,
# introducing significant performance overhead. The CURRENT branch kernel enables this by default,
# to catch lock order reversals during development. RELEASE versions disable this option.

# ----- Console and Display Device -----
VT(efifb): resolution 800x600
# VT (Virtual Terminal, Newcons): FreeBSD's next-generation system console driver (replacing syscons).
# efifb: Display through the framebuffer driver provided by EFI firmware.
# UEFI firmware sets the default display resolution to 800x600. After the drm (Direct Rendering Manager) driver is loaded,
# the resolution can increase to the monitor's native resolution.

# ===== CPU Detection and Feature Enumeration =====
CPU: Intel(R) N100 (806.40-MHz K8-class CPU)
# CPU model name. Intel N100 is a low-power processor of the Alder Lake-N architecture.
# 806.40 MHz is the initial CPU frequency detected by the kernel at boot (equal to the invariant TSC frequency),
# not Intel's official Processor Base Frequency (N100 official base frequency is 800 MHz).
# After loading hwpstate_intel(4), the kernel dynamically adjusts frequency through Intel Speed Shift (N100 max turbo frequency can reach ~3.4 GHz).
# "K8-class" indicates this CPU supports the AMD64 instruction set (AMD K8 was the first x86-64 processor);
# the kernel code classifies using AMD K8 as the AMD64 feature baseline.

  Origin="GenuineIntel"  Id=0xb06e0  Family=0x6  Model=0xbe  Stepping=0
# Origin: CPU vendor string, GenuineIntel = Intel. Family/Model/Stepping used for microcode update matching.

  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
# Basic x86 features (CPUID leaf 1 EDX register). Covers all standard features from the 32-bit era:
# FPU (x87 floating point), VME (Virtual 8086 mode enhancements), TSC (Time Stamp Counter), APIC, etc.
# SSE/SSE2: Streaming SIMD Extensions, 128-bit SIMD introduced in the Intel P4 era.

  Features2=0x7ffafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
# ECX extended features (CPUID leaf 1 ECX register):
# VMX: Intel Virtualization Technology (VT-x), required by bhyve(8).
# AESNI: AES instruction set, accelerates encryption operations (OpenSSL/ZFS encryption both benefit).
# AVX: 256-bit SIMD, acceleration instructions for floating-point intensive scenarios.
# RDRAND: Hardware random number generator, provides entropy source for random(4).

  AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
  AMD Features2=0x121<LAHF,ABM,Prefetch>
# AMD extended features (Intel also reports these bits after implementing AMD64):
# SYSCALL: Fast system call instruction (core of AMD64 ABI). NX: No-execute page bit (W^X security mechanism).
# LM (Long Mode): 64-bit support. Page1GB: 1GB large page support.

  Structured Extended Features=0x239ca7eb<FSGSBASE,TSCADJ,BMI1,AVX2,FDPEXC,SMEP,BMI2,ERMS,INVPCID,NFPUSG,PQE,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,PROCTRACE,SHA>
# Structured extended features (CPUID leaf 7, sub-leaf 0 EBX):
# SMEP (Supervisor Mode Execution Protection): Kernel mode blocks execution of user mode code — critical security feature.
# SMAP (Supervisor Mode Access Prevention): Kernel mode blocks access to user mode memory.
# AVX2: 256-bit integer SIMD extension, improves media processing/encryption-decryption performance.
# RDSEED: A stronger random number instruction complementary to RDRAND (generates directly from entropy source rather than enhanced output).

  Structured Extended Features2=0x98c007bc<UMIP,PKU,OSPKE,WAITPKG,GFNI,VAES,VPCLMULQDQ,RDPID,MOVDIRI,MOVDIR64B>
# Structured extended features 2 (leaf 7, sub-leaf 0 ECX):
# UMIP/OSPKE: Memory protection enhancements. WAITPKG: Intel user-mode wait instruction package, for spin-wait optimization.
# GFNI/VAES/VPCLMULQDQ: Galois Field/AES acceleration instructions introduced in Intel 10nm+, significantly accelerating encryption operations.

  Structured Extended Features3=0xfc184410<FSRM,MD_CLEAR,IBT,IBPB,STIBP,L1DFL,ARCH_CAP,CORE_CAP,SSBD>
# Structured extended features 3 (leaf 7, sub-leaf 0 EDX):
# MD_CLEAR: Supports VERW instruction to clear microarchitectural buffers (MDS mitigation).
# IBPB/STIBP/SSBD: Hardware mitigation control bits for Spectre/Meltdown side-channel vulnerabilities.
# FSRM: Fast Short REP MOVSB (memcpy acceleration), used in conjunction with ERMS.

  XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
# XSAVE: x86 context save/restore extension (CPUID leaf D, sub-leaf 1 EAX).
# XSAVEOPT/XSAVES: Optimized state saving, reduces context switch overhead.

  IA32_ARCH_CAPS=0x180fd6b<RDCL_NO,IBRS_ALL,SKIP_L1DFL_VME,MDS_NO,TAA_NO>
# IA32_ARCH_CAPABILITIES (MSR 0x10A): Intel architecture capabilities MSR, hardware reports its own security features.
# RDCL_NO: Not affected by RIDL / MDS vulnerabilities. MDS_NO/TAA_NO: Not affected by microarchitectural data sampling attacks.
# These flag bits affect system security assessment — they indicate that this CPU does not need corresponding security mitigations.

  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID,VID,PostIntr
# VT-x (Intel Virtualization Technology) sub-feature set:
# EPT (Extended Page Tables): Second Level Address Translation (SLAT), core dependency of bhyve, significantly improves VM memory performance.
# VPID (Virtual Processor Identifier): TLB tagging, avoids TLB flush on VM switches.
# VID (Virtual Interrupt Delivery): Hardware passthrough interrupt delivery. PostIntr: Posted Interrupt support.

  TSC: P-state invariant, performance statistics
# TSC (Time Stamp Counter) features: Invariant TSC means it is not affected by P-state (frequency adjustment) and C-state (sleep),
# the kernel can use it as a high-precision monotonic clock source (timecounter).

# ===== Physical Memory Detection =====
real memory  = 17179869184 (16384 MB)
# Total physical memory provided by hardware (16 GB).

avail memory = 16318308352 (15562 MB)
# Physical memory available to the kernel. The difference (approximately 822 MB) includes:
# 1) Memory occupied by kernel code and static data segments. 2) Memory pre-reserved by the kernel memory allocator (kmem).
# 3) Memory regions marked as reserved in the BIOS/UEFI firmware memory map.
# 4) Address space occupied by MMIO region mappings of certain PCI devices.

# ===== Event Timers =====
Event timer "LAPIC" quality 600
# LAPIC (Local APIC) timer quality score. The kernel maintains multiple timer sources; the higher the quality value, the higher the priority.
# 600 is relatively high (HPET is 550 (Event)/950 (Timecounter), TSC is 1000 (highest priority)).
# The kernel traverses all timers at boot and selects the best available source in descending quality order.

# ===== ACPI Subsystem =====
ACPI APIC Table: <ALASKA A M I >
# ACPI APIC (MADT) table vendor information. "ALASKA A M I" is a common default ACPI OEM ID for AMI (American Megatrends Inc.)
# BIOS, used by many motherboard manufacturers, not a specific manufacturer's product line code.

WARNING: L3 data cache covers more APIC IDs than a package (7 > 3)
# L3 cache shared APIC ID range is inconsistent with the BSP (Bootstrap Processor) reported value,
# possibly a minor issue in the BIOS/Firmware ACPI table, does not affect normal operation. This issue is common on low-power platforms.

# ===== SMP (Symmetric Multiprocessing) Initialization =====
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s)
# SMP detection result. 1 physical socket (package) × 4 cores.
# Intel N100 has 4 cores and 4 threads (no hyperthreading support), so logical CPU count = physical core count.

# ===== Random Number Subsystem Initialization =====
random: registering fast source Intel Secure Key RNG
random: fast provider: "Intel Secure Key RNG"
random: unblocking device.
# FreeBSD random number subsystem (random(4)) initialization process:
# 1) Register the fast Intel Secure Key RNG (RDRAND instruction) as a hardware entropy source.
# 2) Mark the fast provider as "Intel Secure Key RNG".
# 3) unblocking device: After the kernel collects enough early entropy, /dev/random is unblocked,
#    and userland programs can now normally read random numbers. The CURRENT version uses the FenestrasX algorithm.

# ===== I/O APIC and AP Startup =====
ioapic0 <Version 2.0> irqs 0-119
# I/O APIC (Advanced Programmable Interrupt Controller) version 2.0, supports 120 IRQ lines (0-119),
# responsible for distributing PCI device interrupt requests to corresponding CPU cores (LAPIC).

Launching APs: 2 1 3
# AP (Application Processor) startup order. BSP (Bootstrap Processor) is CPU 0,
# already running before APs start, subsequent per-core startup: CPU 2 → CPU 1 → CPU 3.
# Startup order is determined by APIC ID and topology algorithm, typically starting APs not on the same physical core as the BSP first.

random: entropy device external interface
# random(4) external entropy interface registration complete. Userland programs can begin reading /dev/random.

# ===== Keyboard Multiplexer =====
kbd0 at kbdmux0
# kbd0 connected to keyboard multiplexer kbdmux0(4). kbdmux allows multiple keyboards to function simultaneously as a single keyboard device
# (AT keyboard + USB keyboard both usable), with input transparently merged.

# ===== EFI Realtime Clock =====
efirtc0: <EFI Realtime Clock>
efirtc0: registered as a time-of-day clock, resolution 1.000000s
# efiRTC: Clock driver that gets/sets time through EFI Runtime Services.
# "time-of-day clock": Hardware clock source registration for system time. 1s granularity means EFI RTC is only accurate to the second level,
# providing the initial time reference for the kernel during early boot. Higher-precision TSC/HPET will be used as timecounter later.

# ===== SMBIOS =====
smbios0: <System Management BIOS> at iomem 0x75ca6000-0x75ca6017
smbios0: Version: 3.6
# SMBIOS (DMI) provides hardware description information such as motherboard, BIOS, system serial number, etc. The driver maps to the memory address.

# ===== AES-NI Acceleration Engine =====
aesni0: <AES-CBC,AES-CCM,AES-GCM,AES-ICM,AES-XTS,SHA1,SHA256>
# aesni(4) driver loaded, providing hardware acceleration for AES modes (CBC/CCM/GCM, etc.) and SHA-1/SHA-256.
# GELI full-disk encryption, ZFS native encryption, IPsec, OpenSSL, etc. can all use this driver for line-speed encryption.

# ===== ACPI Root Device -----
acpi0: <ALASKA A M I>
# ACPI root device (ACPI namespace for the socket/motherboard), OEM ID = ALASKA (AMI BIOS common default OEM ID).

# ----- ACPI Firmware Errors (non-fatal) -----
Firmware Error (ACPI): Could not resolve symbol [\134_SB.PC00.TXHC.RHUB.SS01], AE_NOT_FOUND (20241212/dswload2-315)
ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20241212/psobject-372)
Firmware Error (ACPI): Could not resolve symbol [\134_SB.PC00.TXHC.RHUB.SS02], AE_NOT_FOUND (20241212/dswload2-315)
ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20241212/psobject-372)
# BIOS/UEFI firmware ACPI DSDT/SSDT tables reference non-existent USB SuperSpeed (SS) port symbols:
# \134 is the backslash ACPI name path escape (ACPI namespace root \), RHUB.SS01/SS02
# are SuperSpeed port objects under the xHCI Root Hub. AE_NOT_FOUND indicates they cannot be found.
# This is typically a firmware (BIOS/UEFI) bug: USB 3.0 controller SS port references are defined,
# but the corresponding device nodes are not declared in the actual DSDT/SSDT tables.
# Impact: These two USB SS ports are unusable (the platform may physically only support USB 2.0 or lack corresponding USB 3.0 slots).

acpi0: Power Button (fixed)
# ACPI fixed hardware power button, managed by acpi_button(4).

# ===== High Precision Event Timer (HPET) =====
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
# HPET memory-mapped I/O address range. HPET is a high-precision timer on x86 platforms replacing the traditional PIT/RTC.

Timecounter "HPET" frequency 19200000 Hz quality 950
# HPET timecounter frequency 19.2 MHz, quality 950 (second only to TSC at 1000).
# timecounter is used for precise time acquisition such as gettimeofday(2)/clock_gettime(2).

Event timer "HPET" frequency 19200000 Hz quality 550
Event timer "HPET1" frequency 19200000 Hz quality 440
Event timer "HPET2" frequency 19200000 Hz quality 440
Event timer "HPET3" frequency 19200000 Hz quality 440
Event timer "HPET4" frequency 19200000 Hz quality 440
# HPET internal comparators as event timers:
# 1 main timer (quality 550) + 4 secondary timers (quality 440).
# event timers are used for periodic and one-shot timer interrupts such as kernel hardclock/statclock.
# HPET1-4 quality 440 is lower than the main timer's 550; the kernel prefers the main timer,
# and only enables backup timers in multi-CPU CPU binding scenarios.

# ===== AT Realtime Clock (Traditional RTC) =====
atrtc1: <AT realtime clock> on acpi0
atrtc1: Warning: Couldn't map I/O.
atrtc1: registered as a time-of-day clock, resolution 1.000000s
# Traditional AT RTC (Motorola MC146818A compatible), provides date/time set/get.
# Warning indicates inability to map I/O ports (UEFI mode firmware may not have allocated I/O space), but has no practical impact.
# Modern UEFI platforms recommend using efiRTC; non-PNP ISA AT RTC has been deferred to FreeBSD 16.0 for removal from GENERIC.

Event timer "RTC" frequency 32768 Hz quality 0
# RTC periodic interrupt frequency 32768 Hz (2^15 Hz), quality 0 (lowest priority, only as last resort).

# ===== Traditional AT Timer (i8254 PIT) =====
attimer0: <AT timer> port 0x40-0x43,0x50-0x53 irq 0 on acpi0
# i8254 Programmable Interval Timer (PIT). Ports 0x40-0x43
# are PIT data/command ports, irq 0 is the PIT interrupt.

Timecounter "i8254" frequency 1193182 Hz quality 0
# i8254 frequency = 1.193182 MHz (NTSC color subcarrier frequency / 3, a historical legacy value).
# quality 0 = lowest priority, only used when no higher priority timecounter is available.

Event timer "i8254" frequency 1193182 Hz quality 100
# As an event timer, quality 100, higher than RTC (0), but still inferior to LAPIC/HPET on modern platforms.

# ===== ACPI Fast Timer (ACPI PM Timer) =====
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1808-0x180b on acpi0
# ACPI Power Management Timer (PM Timer), frequency 3.579545 MHz. 24-bit counter means
# approximately 4.7 seconds before counter overflow wraparound (2^24 / 3579545 ≈ 4.69 s); the kernel must read values and accumulate before overflow,
# to use as a high-precision timecounter. quality 900, a moderately high timecounter selection.

# ===== PCI Bus Enumeration =====
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
# ACPI Host-PCI bridge (port-mapped PCI configuration space, 0xCF8=address register, 0xCFC=data register).

pci0: <ACPI PCI bus> on pcib0
# PCI bus 0 bound to Host-PCI bridge. The kernel then enumerates all PCI devices and attempts driver matching.

# ----- Graphics Card -----
vgapci0: <VGA-compatible display> port 0x4000-0x403f mem 0x6000000000-0x6000ffffff,0x4000000000-0x400fffffff at device 2.0 on pci0
# Intel N100 integrated UHD graphics (Alder Lake-N built-in GPU). device 2.0 = PCI BDF (Bus 0, Device 2, Function 0).

vgapci0: Boot video device
# This device is marked as the boot video device. UEFI GOP (Graphics Output Protocol) has previously set the framebuffer
# to 800x600 (see VT(efifb) line above); this marker is passed to the kernel drm-kmod driver for use as the primary display output.

# ----- USB 3.0 xHCI Controller 0 -----
xhci0: <XHCI (generic) USB 3.0 controller> mem 0x6001120000-0x600112ffff at device 13.0 on pci0
xhci0: 32 bytes context size, 64-bit DMA
# xHCI (USB 3.0 Host Controller, PCI Function 13.0). context size=32 B is the xHCI data structure size,
# 64-bit DMA indicates support for 64-bit bus addresses — compatible with physical memory above 4 GB.

usbus0 on xhci0
# usbus0 (USB bus instance) bound to xhci0. The USB core manages connected USB devices through this bus.

usbus0: 5.0Gbps Super Speed USB v3.0
# Speed 5.0 Gbps = SuperSpeed USB 3.0 Gen1.

# ----- Devices Without Matching Driver -----
pci0: <simple comms, UART> at device 18.0 (no driver attached)
# PCI Serial/UART controller without bound driver. Possibly Intel Trace Hub or serial port.
# "(no driver attached)" indicates the kernel has no matching driver for this PCI device ID (not in the support table by VID/DID).

# ----- USB 3.0 xHCI Controller 1 -----
xhci1: <XHCI (generic) USB 3.0 controller> mem 0x6001100000-0x600110ffff at device 20.0 on pci0
xhci1: 32 bytes context size, 64-bit DMA
usbus1 on xhci1
usbus1: 5.0Gbps Super Speed USB v3.0
# Second xHCI controller (Alder Lake-N supports multiple USB controllers). usbus1 is independent of usbus0.

# ----- Other PCI Devices Without Matching Driver -----
pci0: <memory, RAM> at device 20.2 (no driver attached)
# Possibly an MMIO RAM region used by Intel power management/thermal monitoring, no dedicated driver needed.

pci0: <simple comms> at device 22.0 (no driver attached)
# Possibly Intel Management Engine Interface (MEI/HECI). FreeBSD has no MEI driver (most MEI functionality
# is management engine interaction, mostly found on servers/workstations).

# ----- SD/MMC Controller -----
sdhci_pci0: <Generic SD HCI> mem 0x6001149000-0x6001149fff at device 26.0 on pci0
sdhci_pci0: 1 slot(s) allocated
# SD/MMC host controller driver (sdhci(4)), detected 1 SD card slot.

# ----- WITNESS Debug Report (non-fatal) -----
uma_zalloc_debug: zone "malloc-16" with the following non-sleepable locks held:
exclusive sleep mutex SD slot mtx (sdhci) r = 0 (0xfffff80001ad9020) locked @ /usr/src/sys/dev/sdhci/sdhci.c:688
# WITNESS detected that while holding a non-sleepable lock (sleep mutex) "SD slot mtx",
# the kernel memory allocator UMA attempted to allocate memory from zone "malloc-16" and may sleep —
# this is a potential lock order reversal (LOR).
# r = 0 = recursion count 0, indicating a single acquisition of a non-recursive lock.

stack backtrace:
#0 0xffffffff80bcc76c at witness_debugger+0x6c
#1 0xffffffff80bcd980 at witness_warn+0x430
#2 0xffffffff80f05784 at uma_zalloc_debug+0x34
#3 0xffffffff80f052d7 at uma_zalloc_arg+0x27
#4 0xffffffff80b27bdd at malloc+0x7d
#5 0xffffffff80b28592 at reallocf+0x12
#6 0xffffffff80b9367d at devclass_add_device+0x1cd
#7 0xffffffff80b91c2b at make_device+0x10b
#8 0xffffffff80b91a6d at device_add_child_ordered+0x2d
#9 0xffffffff8086f42c at sdhci_card_task+0x1fc
#10 0xffffffff80875021 at sdhci_pci_attach+0x491
#11 0xffffffff80b93e8b at device_attach+0x45b
#12 0xffffffff80b951fa at bus_attach_children+0x4a
#13 0xffffffff8082ba77 at pci_attach+0xd7
#14 0xffffffff80f52775 at acpi_pci_attach+0x15
#15 0xffffffff80b93e8b at device_attach+0x45b
#16 0xffffffff80b951fa at bus_attach_children+0x4a
#17 0xffffffff80f55ad8 at acpi_pcib_acpi_attach+0x428
# Stack backtrace from top to bottom is the call order:
# witness_debugger: WITNESS enters debug output.
# witness_warn: WARN level — non-critical lock order warning (not a deadlock).
# uma_zalloc_debug → uma_zalloc_arg → malloc → reallocf: Memory allocator detection path.
# devclass_add_device → make_device: Adding a new device instance to the device class.
# sdhci_card_task: SD card detection task (executed in sdhci(4) attach context).
# sdhci_pci_attach → device_attach: Device driver attach entry.
# bus_attach_children → ... → acpi_pcib_acpi_attach: Recursive attach call chain traversing bus child devices, going up layer by layer through the ACPI layer back to the ACPI attach entry at the top of the PCI bridge.
# This LOR does not affect normal SD card read/write; it is for CURRENT debugging purposes only.

mmc0: <MMC/SD bus> on sdhci_pci0
# mmc0 bus bound to the SD/MMC host controller; eMMC or SD card devices can be identified subsequently.

# ===== PCI-PCI Bridges and Sub-buses =====
# ----- PCIe Root Port 1 -----
pcib1: <ACPI PCI-PCI bridge> at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
pci1: <network> at device 0.0 (no driver attached)
# PCIe bridge 28.0 (PCIe Root Port #1) has a network device (wireless NIC) behind it,
# but the driver has not been loaded yet (drivers are loaded later at boot via kldload or devmatch).

# ----- PCIe Root Port 6 -----
pcib2: <ACPI PCI-PCI bridge> at device 28.6 on pci0
pci2: <ACPI PCI bus> on pcib2

# ----- Intel I226-V Wired NIC -----
igc0: <Intel(R) Ethernet Controller I226-V> mem 0x80500000-0x805fffff,0x80600000-0x80603fff at device 0.0 on pci2
# igc(4) driver for Intel I225/I226 series 2.5 Gbps Ethernet controllers.

igc0: EEPROM V2.17-0 eTrack 0x80000303
# NIC EEPROM version and Intel internal version tracking number. EEPROM stores MAC address and PHY calibration data.

igc0: Using 1024 TX descriptors and 1024 RX descriptors
# TX/RX descriptor ring buffer size. Descriptors are hardware DMA transfer metadata structures,
# each descriptor corresponds to a packet buffer to be sent/received. 1024 descriptors → up to 1024 outstanding packets.

igc0: Using 4 RX queues 4 TX queues
# Multi-queue RSS configuration: 4 CPUs correspond to 4 queues, each CPU independently processes its own packet flow.

igc0: Using MSI-X interrupts with 5 vectors
# MSI-X (Message Signaled Interrupts Extended): 1 interrupt vector per queue + 1 management vector = 5.
# Compared to traditional pin-based INTx interrupts, MSI-X has no interrupt sharing, no priority conflicts, and can be bound to specific CPUs.

igc0: Ethernet address: 10:02:b5:86:0e:f9
# MAC address. Permanently stored in EEPROM, read by igc(4) at system boot.

igc0: netmap queues/slots: TX 4/1024, RX 4/1024
# netmap(4) high-performance zero-copy network framework compatibility info: supports 4 hardware queues, 1024 buffer slots per queue.

# ----- PCIe Root Port 7 -----
pcib3: <ACPI PCI-PCI bridge> at device 29.0 on pci0
pci3: <ACPI PCI bus> on pcib3

# ----- NVMe SSD -----
nvme0: <Generic NVMe Device> mem 0x80700000-0x80703fff at device 0.0 on pci3
# NVMe controller (PCIe device 0.0), managed through nda(4) CAM layer driver or nvd(4) direct mapping driver.

# ===== PCI-ISA Bridge and ISA Bus =====
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
# LPC (Low Pin Count) bridge appears as a PCI-ISA bridge in software. ISA bus is a traditional x86 interface,
# used by legacy devices accessed via ISA such as atrtc(4), atkbd(4), uart(4), etc.

# ===== Intel High Definition Audio Controller =====
hdac0: <Intel Alder Lake-N HDA Controller> mem 0x6001140000-0x6001143fff,0x6001000000-0x60010fffff at device 31.3 on pci0
# Intel HDA (High Definition Audio) controller, attached at PCI Function 31.3.

pci0: <serial bus> at device 31.5 (no driver attached)
# Possibly an I2C serial bus controller, currently no matching driver.

# ===== ACPI Fixed Features =====
acpi_button0: <Sleep Button> on acpi0
# ACPI sleep button (typically on laptops).

cpu0: <ACPI CPU> on acpi0
# CPU 0 ACPI processor object (used for _PSS/_PCT/_CST and other power management objects).

acpi_button1: <Power Button> on acpi0
# ACPI power button — the difference from the earlier fixed Power Button is:
# "fixed" = ACPI FADT fixed hardware event, "acpi_button1" = Control Method power device in ACPI namespace.

acpi_tz0: <Thermal Zone> on acpi0
# ACPI thermal zone (temperature sensor), used for CPU/motherboard temperature monitoring and fan speed control.

acpi_syscontainer0: <System Container> on acpi0
acpi_syscontainer1: <System Container> on acpi0
# ACPI system container devices, topology containers for NUMA/multi-node systems.

# ===== AT RTC (ISA Side) =====
atrtc0: <AT realtime clock> at port 0x70 irq 8 on isa0
atrtc0: Warning: Couldn't map I/O.
atrtc0: registered as a time-of-day clock, resolution 1.000000s
atrtc0: Can't map interrupt.
atrtc0: non-PNP ISA device will be removed from GENERIC in FreeBSD 15.
# atrtc(4) probing on the ISA bus side. Both warnings do not affect system operation — ISA I/O and interrupts are typically not mappable on UEFI platforms.
# Non-PNP ISA atrtc has been deferred to FreeBSD 16.0 for removal from the GENERIC kernel configuration (ACPI-enumerated atrtc still exists, replaced by efirtc and ACPI clocks).

# ===== Intel Speed Shift (HWP) =====
hwpstate_intel0: <Intel Speed Shift> on cpu0
cpufreq0: <CPU frequency control> on cpu0
hwpstate_intel1: <Intel Speed Shift> on cpu1
cpufreq1: <CPU frequency control> on cpu1
hwpstate_intel2: <Intel Speed Shift> on cpu2
cpufreq2: <CPU frequency control> on cpu2
hwpstate_intel3: <Intel Speed Shift> on cpu3
cpufreq3: <CPU frequency control> on cpu3
# Intel Speed Shift (HWP = Hardware P-state) — CPU automatic frequency adjustment mechanism
# introduced by Intel starting from Skylake: the CPU hardware itself adjusts core frequency in real-time based on load,
# without OS intervention. The traditional method (cpufreq) requires the OS to select P-states through ACPI _PSS tables (passive frequency adjustment).
# HWP has better latency and granularity than traditional cpufreq, and is an important component of FreeBSD power management and performance.

# ===== Final Timecounter Selection =====
Timecounter "TSC" frequency 806401362 Hz quality 1000
# Time Stamp Counter (TSC) frequency = 806.4 MHz, the increment rate of the invariant TSC.
# Note: TSC frequency ≠ Intel's official Processor Base Frequency (N100 official base frequency is 800 MHz).
# quality 1000 is the highest priority — the kernel ultimately selects TSC as the system's primary timecounter.
# Invariant TSC increments at a fixed rate, unaffected by P-state/C-state frequency changes, and is the finest-grained reliable time source.

Timecounters tick every 1.000 msec
# The kernel timecounter subsystem updates the system time reference at a frequency of 1ms (1000 Hz).

# ===== USB Root Hub Discovery =====
ugen1.1: <Intel XHCI root HUB> at usbus1
ugen0.1: <Intel XHCI root HUB> at usbus0
# USB generic device nodes. In ugenX.Y, X=USB bus number, Y=device address (root hub is always 1).

uhub0 on usbus1
uhub0: <Intel XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus1
# uhub(4) — USB hub driver. class 9 = Hub class. rev 3.00 = USB 3.0.

uhub1 on usbus0
uhub1: <Intel XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0

# ===== ZFS Version Information =====
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
# ZFS version information: filesystem layer version 5, storage pool version 5000 (OpenZFS 2.x/3.x native feature flag support).
# "features support" means each pool has a feature flags set,
# rather than a fixed version number — different pools can independently enable different features (e.g., compression, deduplication, etc.).

# ===== eMMC Storage Device =====
mmcsd0: 125GB <MMCHC Y2P128 0.0 SN F034273C MFG 04/2023 by 155 0x0000> at mmc0 200.0MHz/8bit/8192-block
# Radxa X4 onboard 128 GB eMMC storage. Communication rate 200.0 MHz, 8-bit data width (HS400 mode).

mmcsd0boot0: 4MB partition 1 at mmcsd0
mmcsd0boot1: 4MB partition 2 at mmcsd0
# Two boot partitions built into eMMC — typically store BootROM/UEFI firmware.
# The Linux kernel typically uses them to store U-Boot SPL.

mmcsd0rpmb: 17MB partition 3 at mmcsd0
# eMMC RPMB (Replay Protected Memory Block) — replay-protected secure storage partition,
# used for security purposes such as anti-rollback key storage. Size 17 MB.

uhub1: 2 ports with 2 removable, self powered
# uhub1 has 2 removable (external-facing) ports, self-powered (meaning it does not draw power from the upstream port).

# ===== NVMe Controller Initialization =====
nvme0: Allocated 16MB host memory buffer
# NVMe specification Host Memory Buffer (HMB) — the SSD can use host system memory
# as cache for the mapping table (FTL mapping table), reducing SSD's local DRAM requirements or increasing cache capacity.

# ===== HD Audio Codec Detection =====
hdacc0: <Realtek ALC269 HDA CODEC> at cad 0 on hdac0
# HD Audio Codec (Realtek ALC269) at codec address 0. ALC269 is common in laptops and small form factor PCs.

hdaa0: <Realtek ALC269 Audio Function Group> at nid 1 on hdacc0
# AFG (Audio Function Group), HDA specification terminology — contains DAC/ADC/mixer/jack and other functional nodes.

pcm0: <Realtek ALC269 (Right Analog)> at nid 21 and 24 on hdaa0
# pcm(4) audio device instance. nid 21 (Pin Complex) / nid 24 (Pin Complex) represent
# right channel analog output pins — likely 3.5mm headphone/speaker output. The system now has audio output capability.

# ===== NVMe Disk Device (nda/CAM path) =====
nda0 at nvme0 bus 0 scbus0 target 0 lun 1
# nda(4): NVMe disk device connected through the CAM(4) framework.
# nda0: 500 GB Fanxiang S530Q NVMe SSD.
# scbus0 target 0 lun 1: Simulated addressing on the SCSI mid-layer bus.
# (FreeBSD's CAM layer unifies nvme(4)→nda(4) and ahci(4)→ada(4) and other different transport protocols)

nda0: <Fanxiang S530Q 500GB SN14243 FX240960178>
nda0: Serial Number FX240960178
nda0: nvme version 1.4
nda0: 476940MB (976773168 512 byte sectors)
# NVMe specification version 1.4. 476940 MiB ÷ 1024 ≈ 465.76 GiB.
# 976773168 × 512 B = 500.107 GB (107 MB extra for firmware/bad block mapping).

# ===== Mounting Root File System =====
Trying to mount root from zfs:zroot/ROOT/default []...
# The kernel attempts to mount the root file system from ZFS pool "zroot" dataset "zroot/ROOT/default".
# [] contains optional parameters passed to mountroot (typically "rw" or "ro"); CURRENT boot is empty.
# This is the last kernel stage of the boot process — after the root system is mounted successfully, the kernel executes init(8).

WARNING: WITNESS option enabled, expect reduced performance.
# WITNESS second reminder (repeated warning). This is the final reminder before mounting root and entering multi-user mode.

uhub0: 16 ports with 16 removable, self powered
# uhub0 has 16 ports (all removable, self-powered), corresponding to xHCI controller 1.

Root mount waiting for: usbus1
# Root mount suspended waiting for USB bus enumeration on usbus1 (xHCI controller 2).
# Because keyboard or drivers may be on the USB bus, USB must be ready before boot can continue.

ugen1.2: <Realtek Bluetooth Radio> at usbus1
# Bluetooth adapter (Realtek). ugen node creation marks the Bluetooth hardware as available; ubt(4) driver can be loaded after boot.

# ===== SMBus Controller (late enumeration) =====
ichsmb0: <Intel Alder Lake SMBus controller> port 0xefa0-0xefbf mem 0x6001148000-0x60011480ff at device 31.4 on pci0
smbus0: <System Management Bus> on ichsmb0
# Intel PCH SMBus (System Management Bus) controller, used for communication with SPD (memory module EEPROM),
# temperature sensors, voltage monitors and other low-speed devices, accessed through the smbus(4) framework.

# ===== Realtek 8852BE WiFi 6 NIC =====
rtw890: <rtw89_8852be> port 0x3000-0x30ff mem 0x80800000-0x808fffff at device 0.0 on pci1
# rtw89(4) driver for Realtek 8852BE WiFi 6 wireless NIC. The driver loads closed-source firmware in firmware mode.

rtw890: successfully loaded firmware image 'rtw89/rtw8852b_fw-1.bin'
rtw890: loaded firmware rtw89/rtw8852b_fw-1.bin
rtw890: Firmware version 0.29.29.5 (da87cccd), cmd version 0, type 5
rtw890: Firmware version 0.29.29.5 (da87cccd), cmd version 0, type 3
# Firmware loading process: first load the firmware image file .bin, then verify the firmware version.
# Firmware version 0.29.29.5 (GIT commit da87cccd), cmd version = 0 (command interface version),
# type 5 and type 3 are WiFi MAC layer firmware and Bluetooth coexistence/PHY sub-firmware respectively.
# Most modern WiFi chips require loading closed-source firmware at runtime — the chip itself is firmware-less ROM + general-purpose DSP.

rtw890: chip rfe_type is 5
# RFE (RF Front-End) type = 5. Front-end type determines how the driver performs RF calibration and antenna selection.

# ===== ACPI WMI (Windows Management Instrumentation) =====
acpi_wmi0: <ACPI-WMI mapping> on acpi0
acpi_wmi0: Embedded MOF found
# acpi_wmi(4): ACPI WMI mapping driver. WMI provides an interface from ACPI to Windows drivers,
# FreeBSD uses this driver to read embedded MOF (Managed Object Format) metadata in ACPI WMI.
# WMI interfaces are commonly used for laptop hotkeys, RF kill switches, fan control, etc. — but x86 small form factor PC platforms may have no practical functionality.

acpi_wmi0: cannot find EC device
# No Embedded Controller (EC) found — many WMI events require the EC to relay keyboard/ACPI notifications,
# the absence of an EC indicates that WMI on this platform only provides basic information (such as BIOS model) without actual control functionality.

ACPI: \134_SB.WFDE.WQCC: 1 arguments were passed to a non-method ACPI object (Buffer) (20241212/nsarguments-361)
# When the kernel parsed the WMI event data object (_SB.WFDE.WQCC) in the ACPI namespace, it found that arguments were passed
# to a non-method object (Buffer data type) — BIOS bug, no functional impact.

acpi_wmi1: <ACPI-WMI mapping> on acpi0
acpi_wmi1: cannot find EC device
acpi_wmi1: Embedded MOF found
ACPI: \134_SB.WFTE.WQCC: 1 arguments were passed to a non-method ACPI object (Buffer) (20241212/nsarguments-361)
# Second ACPI WMI mapping instance. Some motherboards provide different categories of functionality through two WMI GUIDs.
# Similar situation here; no EC device means WMI events cannot be processed.

# ===== Network Interface Ready =====
lo0: link state changed to UP
# lo0 (loopback 127.0.0.1) interface link state changed to UP. Loopback is always online.

igc0: link state changed to UP
# Intel I226-V wired NIC link state UP. Physical cable plugged in and link negotiation successful.

# ===== Bluetooth Device Final Mount =====
ubt0 on uhub0
ubt0: <Realtek Bluetooth Radio, class 224/1, rev 1.00/0.00, addr 1> on usbus1
# ubt(4) Bluetooth USB device driver has been bound. Bluetooth is USB class 224 (Wireless),
# subclass 1 (RF Controller = Bluetooth), protocol 1 (BR/EDR+LE).

# ===== MAC Security Policy Loading =====
Security policy loaded: MAC/ntpd (mac_ntpd)
# mac_ntpd(4): MAC (Mandatory Access Control/TrustedBSD) framework ntpd isolation policy.
# Grants the ntpd user (uid 123) the ability to adjust the system clock and bind to the NTP port (123),
# enabling ntpd to run as a non-root user. This is one of FreeBSD's default security policies.
```


---

# 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-15-system-booting/di-15.2-jie-qi-dong-xiao-xi-dmesg.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.
