1*5f74217cSAbdelkader Boudih.\" SPDX-License-Identifier: BSD-2-Clause 2*5f74217cSAbdelkader Boudih.\" 3*5f74217cSAbdelkader Boudih.\" Copyright (c) 2026 Abdelkader Boudih <freebsd@seuros.com> 4*5f74217cSAbdelkader Boudih.\" 5*5f74217cSAbdelkader Boudih.\" Redistribution and use in source and binary forms, with or without 6*5f74217cSAbdelkader Boudih.\" modification, are permitted provided that the following conditions 7*5f74217cSAbdelkader Boudih.\" are met: 8*5f74217cSAbdelkader Boudih.\" 1. Redistributions of source code must retain the above copyright 9*5f74217cSAbdelkader Boudih.\" notice, this list of conditions and the following disclaimer. 10*5f74217cSAbdelkader Boudih.\" 2. Redistributions in binary form must reproduce the above copyright 11*5f74217cSAbdelkader Boudih.\" notice, this list of conditions and the following disclaimer in the 12*5f74217cSAbdelkader Boudih.\" documentation and/or other materials provided with the distribution. 13*5f74217cSAbdelkader Boudih.\" 14*5f74217cSAbdelkader Boudih.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*5f74217cSAbdelkader Boudih.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*5f74217cSAbdelkader Boudih.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*5f74217cSAbdelkader Boudih.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*5f74217cSAbdelkader Boudih.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*5f74217cSAbdelkader Boudih.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*5f74217cSAbdelkader Boudih.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*5f74217cSAbdelkader Boudih.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*5f74217cSAbdelkader Boudih.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*5f74217cSAbdelkader Boudih.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*5f74217cSAbdelkader Boudih.\" SUCH DAMAGE. 25*5f74217cSAbdelkader Boudih.\" 26*5f74217cSAbdelkader Boudih.Dd March 2, 2026 27*5f74217cSAbdelkader Boudih.Dt COREBOOT 4 28*5f74217cSAbdelkader Boudih.Os 29*5f74217cSAbdelkader Boudih.Sh NAME 30*5f74217cSAbdelkader Boudih.Nm coreboot 31*5f74217cSAbdelkader Boudih.Nd coreboot firmware table driver 32*5f74217cSAbdelkader Boudih.Sh SYNOPSIS 33*5f74217cSAbdelkader BoudihTo compile this driver into the kernel, 34*5f74217cSAbdelkader Boudihplace the following line in your 35*5f74217cSAbdelkader Boudihkernel configuration file: 36*5f74217cSAbdelkader Boudih.Bd -ragged -offset indent 37*5f74217cSAbdelkader Boudih.Cd "device coreboot" 38*5f74217cSAbdelkader Boudih.Ed 39*5f74217cSAbdelkader Boudih.Pp 40*5f74217cSAbdelkader BoudihAlternatively, to load the driver as a 41*5f74217cSAbdelkader Boudihmodule at boot time, place the following line in 42*5f74217cSAbdelkader Boudih.Xr loader.conf 5 : 43*5f74217cSAbdelkader Boudih.Bd -literal -offset indent 44*5f74217cSAbdelkader Boudihcoreboot_load="YES" 45*5f74217cSAbdelkader Boudih.Ed 46*5f74217cSAbdelkader Boudih.Sh DESCRIPTION 47*5f74217cSAbdelkader BoudihThe 48*5f74217cSAbdelkader Boudih.Nm 49*5f74217cSAbdelkader Boudihdriver provides access to firmware tables created by the coreboot 50*5f74217cSAbdelkader Boudihopen-source firmware project. 51*5f74217cSAbdelkader BoudihIt discovers the coreboot table by scanning low memory for the 52*5f74217cSAbdelkader Boudih.Dq LBIO 53*5f74217cSAbdelkader Boudihsignature, follows any forward pointer to the real table in high memory, 54*5f74217cSAbdelkader Boudihand validates the IP-style checksums. 55*5f74217cSAbdelkader Boudih.Pp 56*5f74217cSAbdelkader BoudihThe driver exposes firmware information through three interfaces: 57*5f74217cSAbdelkader Boudih.Bl -tag -width "/dev/coreboot_console" 58*5f74217cSAbdelkader Boudih.It Sy sysctl 59*5f74217cSAbdelkader BoudihA 60*5f74217cSAbdelkader Boudih.Xr sysctl 8 61*5f74217cSAbdelkader Boudihtree under 62*5f74217cSAbdelkader Boudih.Va hw.coreboot 63*5f74217cSAbdelkader Boudihprovides access to: 64*5f74217cSAbdelkader Boudih.Bl -bullet -compact 65*5f74217cSAbdelkader Boudih.It 66*5f74217cSAbdelkader Boudihfirmware version, build date, and compiler information 67*5f74217cSAbdelkader Boudih.It 68*5f74217cSAbdelkader Boudihmainboard identification and board configuration 69*5f74217cSAbdelkader Boudih.It 70*5f74217cSAbdelkader BoudihMAC addresses, framebuffer, GPIO, and SPI flash details 71*5f74217cSAbdelkader Boudih.It 72*5f74217cSAbdelkader BoudihTPM information and SMMSTORE configuration 73*5f74217cSAbdelkader Boudih.It 74*5f74217cSAbdelkader BoudihACPI RSDP address, PCIe controller base, and TSC frequency 75*5f74217cSAbdelkader Boudih.It 76*5f74217cSAbdelkader Boudihboot timestamps and CBMEM entry enumeration 77*5f74217cSAbdelkader Boudih.El 78*5f74217cSAbdelkader Boudih.It Pa /dev/coreboot_console 79*5f74217cSAbdelkader BoudihA character device providing read-only access to the CBMEM firmware console 80*5f74217cSAbdelkader Boudihring buffer. 81*5f74217cSAbdelkader BoudihThis contains coreboot's own boot log, analogous to 82*5f74217cSAbdelkader Boudih.Xr dmesg 8 83*5f74217cSAbdelkader Boudihbut for the firmware stage before the OS kernel starts. 84*5f74217cSAbdelkader BoudihThe ring buffer uses bit 31 of its cursor as an overflow indicator; 85*5f74217cSAbdelkader Boudihwhen set, the buffer has wrapped and data is read starting from the 86*5f74217cSAbdelkader Boudihcursor position. 87*5f74217cSAbdelkader Boudih.It Pa /dev/cbmem 88*5f74217cSAbdelkader BoudihA character device providing 89*5f74217cSAbdelkader Boudih.Xr ioctl 2 90*5f74217cSAbdelkader Boudihaccess to individual CBMEM entries. 91*5f74217cSAbdelkader BoudihCBMEM is coreboot's mechanism for passing data between firmware stages 92*5f74217cSAbdelkader Boudihand to the operating system. 93*5f74217cSAbdelkader Boudih.El 94*5f74217cSAbdelkader Boudih.Ss Verbose Output 95*5f74217cSAbdelkader BoudihBy default, the driver prints a single attach summary line showing table 96*5f74217cSAbdelkader Boudihlocation and size. 97*5f74217cSAbdelkader Boudih.Pp 98*5f74217cSAbdelkader BoudihWhen 99*5f74217cSAbdelkader Boudih.Va bootverbose 100*5f74217cSAbdelkader Boudihis set 101*5f74217cSAbdelkader Boudih.Pq e.g., Dq Li boot -v , 102*5f74217cSAbdelkader Boudihthe driver additionally prints firmware identity and parsed hardware details 103*5f74217cSAbdelkader Boudihsuch as mainboard, board config, MAC count, ACPI RSDP, SPI flash, framebuffer, 104*5f74217cSAbdelkader BoudihGPIO, and TPM summary. 105*5f74217cSAbdelkader Boudih.Pp 106*5f74217cSAbdelkader BoudihWhen 107*5f74217cSAbdelkader Boudih.Va hw.coreboot.debug 108*5f74217cSAbdelkader Boudihis non-zero, the driver prints extra internal diagnostics such as SMMSTORE, 109*5f74217cSAbdelkader Boudihtimestamp, TPM CB log, and FMAP addresses. 110*5f74217cSAbdelkader Boudih.Pp 111*5f74217cSAbdelkader BoudihAll sysctl nodes are registered regardless of verbosity settings. 112*5f74217cSAbdelkader Boudih.Ss sysctl Variables 113*5f74217cSAbdelkader BoudihThe following 114*5f74217cSAbdelkader Boudih.Xr sysctl 8 115*5f74217cSAbdelkader Boudihvariables are available when the driver is loaded 116*5f74217cSAbdelkader Boudih(variables only appear if the corresponding table record exists): 117*5f74217cSAbdelkader Boudih.Bl -tag -width "hw.coreboot.smmstore.com_buffer" 118*5f74217cSAbdelkader Boudih.It Va hw.coreboot.debug 119*5f74217cSAbdelkader BoudihEnable verbose coreboot diagnostics (read-write, default 0). 120*5f74217cSAbdelkader BoudihTunable via 121*5f74217cSAbdelkader Boudih.Xr loader.conf 5 122*5f74217cSAbdelkader Boudihas 123*5f74217cSAbdelkader Boudih.Va hw.coreboot.debug . 124*5f74217cSAbdelkader Boudih.It Va hw.coreboot.version 125*5f74217cSAbdelkader BoudihFirmware version string. 126*5f74217cSAbdelkader Boudih.It Va hw.coreboot.build 127*5f74217cSAbdelkader BoudihBuild date and time. 128*5f74217cSAbdelkader Boudih.It Va hw.coreboot.compile_time 129*5f74217cSAbdelkader BoudihFirmware compile time string. 130*5f74217cSAbdelkader Boudih.It Va hw.coreboot.compiler 131*5f74217cSAbdelkader BoudihCompiler identification string. 132*5f74217cSAbdelkader Boudih.It Va hw.coreboot.extra_version 133*5f74217cSAbdelkader BoudihExtra version information. 134*5f74217cSAbdelkader Boudih.It Va hw.coreboot.platform_blob_version 135*5f74217cSAbdelkader BoudihPlatform blob version string. 136*5f74217cSAbdelkader Boudih.It Va hw.coreboot.serialno 137*5f74217cSAbdelkader BoudihBoard serial number. 138*5f74217cSAbdelkader Boudih.It Va hw.coreboot.version_timestamp 139*5f74217cSAbdelkader BoudihFirmware version timestamp. 140*5f74217cSAbdelkader Boudih.It Va hw.coreboot.table_addr 141*5f74217cSAbdelkader BoudihPhysical address of the coreboot table. 142*5f74217cSAbdelkader Boudih.It Va hw.coreboot.table_size 143*5f74217cSAbdelkader BoudihTotal size of the coreboot table in bytes. 144*5f74217cSAbdelkader Boudih.It Va hw.coreboot.mainboard.vendor 145*5f74217cSAbdelkader BoudihMainboard vendor name. 146*5f74217cSAbdelkader Boudih.It Va hw.coreboot.mainboard.part 147*5f74217cSAbdelkader BoudihMainboard part number. 148*5f74217cSAbdelkader Boudih.It Va hw.coreboot.serial.baseaddr 149*5f74217cSAbdelkader BoudihSerial port base address. 150*5f74217cSAbdelkader Boudih.It Va hw.coreboot.serial.baud 151*5f74217cSAbdelkader BoudihSerial port baud rate. 152*5f74217cSAbdelkader Boudih.It Va hw.coreboot.serial.regwidth 153*5f74217cSAbdelkader BoudihSerial port register width. 154*5f74217cSAbdelkader Boudih.It Va hw.coreboot.tsc_freq_khz 155*5f74217cSAbdelkader BoudihTSC frequency in kilohertz as reported by firmware. 156*5f74217cSAbdelkader Boudih.It Va hw.coreboot.pcie_ctrl_base 157*5f74217cSAbdelkader BoudihPCIe controller base address. 158*5f74217cSAbdelkader Boudih.It Va hw.coreboot.acpi_rsdp 159*5f74217cSAbdelkader BoudihACPI RSDP physical address. 160*5f74217cSAbdelkader Boudih.It Va hw.coreboot.board.fw_config 161*5f74217cSAbdelkader BoudihFirmware configuration bitmask. 162*5f74217cSAbdelkader Boudih.It Va hw.coreboot.board.board_id 163*5f74217cSAbdelkader BoudihBoard ID. 164*5f74217cSAbdelkader Boudih.It Va hw.coreboot.board.ram_code 165*5f74217cSAbdelkader BoudihRAM code. 166*5f74217cSAbdelkader Boudih.It Va hw.coreboot.board.sku_id 167*5f74217cSAbdelkader BoudihSKU ID. 168*5f74217cSAbdelkader Boudih.It Va hw.coreboot.mac.N 169*5f74217cSAbdelkader BoudihFactory MAC address N (formatted as xx:xx:xx:xx:xx:xx). 170*5f74217cSAbdelkader Boudih.It Va hw.coreboot.boot_media.fmap_offset 171*5f74217cSAbdelkader BoudihFMAP offset from boot media start. 172*5f74217cSAbdelkader Boudih.It Va hw.coreboot.boot_media.cbfs_offset 173*5f74217cSAbdelkader BoudihCBFS offset from boot media start. 174*5f74217cSAbdelkader Boudih.It Va hw.coreboot.boot_media.cbfs_size 175*5f74217cSAbdelkader BoudihCBFS size in bytes. 176*5f74217cSAbdelkader Boudih.It Va hw.coreboot.boot_media.size 177*5f74217cSAbdelkader BoudihBoot media size in bytes. 178*5f74217cSAbdelkader Boudih.It Va hw.coreboot.mmc_early_cmd1_status 179*5f74217cSAbdelkader BoudihEarly eMMC/MMC CMD1 status value. 180*5f74217cSAbdelkader Boudih.It Va hw.coreboot.spi_flash.size 181*5f74217cSAbdelkader BoudihSPI flash size in bytes. 182*5f74217cSAbdelkader Boudih.It Va hw.coreboot.spi_flash.sector_size 183*5f74217cSAbdelkader BoudihSPI flash sector size in bytes. 184*5f74217cSAbdelkader Boudih.It Va hw.coreboot.spi_flash.erase_cmd 185*5f74217cSAbdelkader BoudihSPI flash erase command byte. 186*5f74217cSAbdelkader Boudih.It Va hw.coreboot.console_type 187*5f74217cSAbdelkader BoudihFirmware console type (0=serial8250, 1=VGA, 2=BTEXT, 3=LOGBUF, 4=SROM, 188*5f74217cSAbdelkader Boudih5=EHCI, 6=serial8250mem). 189*5f74217cSAbdelkader Boudih.It Va hw.coreboot.framebuffer.addr 190*5f74217cSAbdelkader BoudihFramebuffer physical address. 191*5f74217cSAbdelkader Boudih.It Va hw.coreboot.framebuffer.x_res 192*5f74217cSAbdelkader BoudihFramebuffer horizontal resolution. 193*5f74217cSAbdelkader Boudih.It Va hw.coreboot.framebuffer.y_res 194*5f74217cSAbdelkader BoudihFramebuffer vertical resolution. 195*5f74217cSAbdelkader Boudih.It Va hw.coreboot.framebuffer.bpp 196*5f74217cSAbdelkader BoudihFramebuffer bits per pixel. 197*5f74217cSAbdelkader Boudih.It Va hw.coreboot.gpio.N.name 198*5f74217cSAbdelkader BoudihGPIO pin N name. 199*5f74217cSAbdelkader Boudih.It Va hw.coreboot.gpio.N.port 200*5f74217cSAbdelkader BoudihGPIO pin N port number. 201*5f74217cSAbdelkader Boudih.It Va hw.coreboot.gpio.N.value 202*5f74217cSAbdelkader BoudihGPIO pin N value. 203*5f74217cSAbdelkader Boudih.It Va hw.coreboot.gpio.N.polarity 204*5f74217cSAbdelkader BoudihGPIO pin N polarity. 205*5f74217cSAbdelkader Boudih.It Va hw.coreboot.tpm.version 206*5f74217cSAbdelkader BoudihTPM version (1=TPM 1.2, 2=TPM 2.0). 207*5f74217cSAbdelkader Boudih.It Va hw.coreboot.tpm.ppi_addr 208*5f74217cSAbdelkader BoudihTPM Physical Presence Interface address. 209*5f74217cSAbdelkader Boudih.It Va hw.coreboot.tpm.cblog_addr 210*5f74217cSAbdelkader BoudihTPM event log physical address. 211*5f74217cSAbdelkader Boudih.It Va hw.coreboot.smmstore.num_blocks 212*5f74217cSAbdelkader BoudihSMMSTORE v2 number of blocks. 213*5f74217cSAbdelkader Boudih.It Va hw.coreboot.smmstore.block_size 214*5f74217cSAbdelkader BoudihSMMSTORE v2 block size in bytes. 215*5f74217cSAbdelkader Boudih.It Va hw.coreboot.smmstore.mmap_addr 216*5f74217cSAbdelkader BoudihSMMSTORE v2 memory-mapped address. 217*5f74217cSAbdelkader Boudih.It Va hw.coreboot.smmstore.com_buffer 218*5f74217cSAbdelkader BoudihSMMSTORE v2 communication buffer address. 219*5f74217cSAbdelkader Boudih.It Va hw.coreboot.smmstore.apm_cmd 220*5f74217cSAbdelkader BoudihSMMSTORE v2 APM command byte. 221*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.acpi_gnvs 222*5f74217cSAbdelkader BoudihACPI GNVS CBMEM physical address. 223*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.acpi_cnvs 224*5f74217cSAbdelkader BoudihACPI CNVS CBMEM physical address. 225*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.vpd 226*5f74217cSAbdelkader BoudihVPD CBMEM physical address. 227*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.wifi_calibration 228*5f74217cSAbdelkader BoudihWiFi calibration CBMEM physical address. 229*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.fmap 230*5f74217cSAbdelkader BoudihFMAP CBMEM physical address. 231*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.vboot_workbuf 232*5f74217cSAbdelkader BoudihVboot work buffer CBMEM physical address. 233*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.type_c_info 234*5f74217cSAbdelkader BoudihType-C info CBMEM physical address. 235*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem_refs.root_bridge_info 236*5f74217cSAbdelkader BoudihRoot bridge info CBMEM physical address. 237*5f74217cSAbdelkader Boudih.It Va hw.coreboot.timestamps_addr 238*5f74217cSAbdelkader BoudihTimestamps CBMEM physical address. 239*5f74217cSAbdelkader Boudih.It Va hw.coreboot.timestamps 240*5f74217cSAbdelkader BoudihFormatted boot stage timing table (read-only). 241*5f74217cSAbdelkader BoudihEach line shows the timestamp ID, stage name, absolute time in 242*5f74217cSAbdelkader Boudihmicroseconds, and delta from the previous stage. 243*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem.N.id 244*5f74217cSAbdelkader BoudihCBMEM entry ID. 245*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem.N.name 246*5f74217cSAbdelkader BoudihHuman-readable CBMEM entry name. 247*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem.N.address 248*5f74217cSAbdelkader BoudihPhysical address of the CBMEM entry. 249*5f74217cSAbdelkader Boudih.It Va hw.coreboot.cbmem.N.size 250*5f74217cSAbdelkader BoudihSize of the CBMEM entry in bytes. 251*5f74217cSAbdelkader Boudih.El 252*5f74217cSAbdelkader Boudih.Ss ioctl Interface 253*5f74217cSAbdelkader BoudihThe 254*5f74217cSAbdelkader Boudih.Pa /dev/cbmem 255*5f74217cSAbdelkader Boudihdevice supports the following 256*5f74217cSAbdelkader Boudih.Xr ioctl 2 257*5f74217cSAbdelkader Boudihcommands, defined in 258*5f74217cSAbdelkader Boudih.In dev/coreboot/corebootio.h : 259*5f74217cSAbdelkader Boudih.Bl -tag -width CBMEM_IOC_LIST 260*5f74217cSAbdelkader Boudih.It Dv CBMEM_IOC_LIST 261*5f74217cSAbdelkader BoudihReturns a 262*5f74217cSAbdelkader Boudih.Vt struct cbmem_list 263*5f74217cSAbdelkader Boudihcontaining the count and metadata of all discovered CBMEM entries. 264*5f74217cSAbdelkader Boudih.It Dv CBMEM_IOC_READ 265*5f74217cSAbdelkader BoudihReads data from a CBMEM entry identified by its ID. 266*5f74217cSAbdelkader BoudihTakes a 267*5f74217cSAbdelkader Boudih.Vt struct cbmem_read_req 268*5f74217cSAbdelkader Boudihspecifying the entry ID, offset, size, and a userspace buffer. 269*5f74217cSAbdelkader Boudih.El 270*5f74217cSAbdelkader Boudih.Sh FILES 271*5f74217cSAbdelkader Boudih.Bl -tag -width "/dev/coreboot_console" 272*5f74217cSAbdelkader Boudih.It Pa /dev/coreboot_console 273*5f74217cSAbdelkader BoudihFirmware console ring buffer (read-only). 274*5f74217cSAbdelkader Boudih.It Pa /dev/cbmem 275*5f74217cSAbdelkader BoudihCBMEM entry access device. 276*5f74217cSAbdelkader Boudih.El 277*5f74217cSAbdelkader Boudih.Sh EXAMPLES 278*5f74217cSAbdelkader BoudihDisplay the coreboot firmware version: 279*5f74217cSAbdelkader Boudih.Pp 280*5f74217cSAbdelkader Boudih.Dl "sysctl hw.coreboot.version" 281*5f74217cSAbdelkader Boudih.Pp 282*5f74217cSAbdelkader BoudihRead the firmware boot log: 283*5f74217cSAbdelkader Boudih.Pp 284*5f74217cSAbdelkader Boudih.Dl "cat /dev/coreboot_console" 285*5f74217cSAbdelkader Boudih.Pp 286*5f74217cSAbdelkader BoudihList all CBMEM entries: 287*5f74217cSAbdelkader Boudih.Pp 288*5f74217cSAbdelkader Boudih.Dl "sysctl hw.coreboot.cbmem" 289*5f74217cSAbdelkader Boudih.Pp 290*5f74217cSAbdelkader BoudihShow board identification: 291*5f74217cSAbdelkader Boudih.Pp 292*5f74217cSAbdelkader Boudih.Dl "sysctl hw.coreboot.board" 293*5f74217cSAbdelkader Boudih.Pp 294*5f74217cSAbdelkader BoudihShow factory MAC addresses: 295*5f74217cSAbdelkader Boudih.Pp 296*5f74217cSAbdelkader Boudih.Dl "sysctl hw.coreboot.mac" 297*5f74217cSAbdelkader Boudih.Pp 298*5f74217cSAbdelkader BoudihDisplay boot stage timestamps: 299*5f74217cSAbdelkader Boudih.Pp 300*5f74217cSAbdelkader Boudih.Dl "sysctl hw.coreboot.timestamps" 301*5f74217cSAbdelkader Boudih.Pp 302*5f74217cSAbdelkader BoudihEnable debug output and reload the module (the sysctl value resets on 303*5f74217cSAbdelkader Boudihunload, so it must be set again or persisted via 304*5f74217cSAbdelkader Boudih.Xr loader.conf 5 ) : 305*5f74217cSAbdelkader Boudih.Bd -literal -offset indent 306*5f74217cSAbdelkader Boudihkldunload coreboot 307*5f74217cSAbdelkader Boudihkldload coreboot 308*5f74217cSAbdelkader Boudihsysctl hw.coreboot.debug=1 309*5f74217cSAbdelkader Boudihdmesg | grep coreboot 310*5f74217cSAbdelkader Boudih.Ed 311*5f74217cSAbdelkader Boudih.Pp 312*5f74217cSAbdelkader BoudihTo persist debug across reboots, add to 313*5f74217cSAbdelkader Boudih.Xr loader.conf 5 : 314*5f74217cSAbdelkader Boudih.Bd -literal -offset indent 315*5f74217cSAbdelkader Boudihhw.coreboot.debug=1 316*5f74217cSAbdelkader Boudih.Ed 317*5f74217cSAbdelkader Boudih.Sh COMPATIBILITY 318*5f74217cSAbdelkader BoudihThe 319*5f74217cSAbdelkader Boudih.Nm 320*5f74217cSAbdelkader Boudihdriver works with any x86 system running coreboot firmware. 321*5f74217cSAbdelkader BoudihThe coreboot table format uses a stable ABI with forward-compatible 322*5f74217cSAbdelkader Boudihtagged records; unknown tags are safely skipped. 323*5f74217cSAbdelkader Boudih.Pp 324*5f74217cSAbdelkader BoudihLinux provides similar functionality through a custom bus type with 325*5f74217cSAbdelkader Boudihseparate modules for each table record type, exposed via sysfs. 326*5f74217cSAbdelkader BoudihThe 327*5f74217cSAbdelkader Boudih.Fx 328*5f74217cSAbdelkader Boudihdriver uses a single module with native 329*5f74217cSAbdelkader Boudih.Xr sysctl 8 330*5f74217cSAbdelkader Boudihand 331*5f74217cSAbdelkader Boudih.Xr ioctl 2 332*5f74217cSAbdelkader Boudihinterfaces instead. 333*5f74217cSAbdelkader Boudih.Sh SEE ALSO 334*5f74217cSAbdelkader Boudih.Xr ioctl 2 , 335*5f74217cSAbdelkader Boudih.Xr smbios 4 , 336*5f74217cSAbdelkader Boudih.Xr sysctl 8 337*5f74217cSAbdelkader Boudih.Sh HISTORY 338*5f74217cSAbdelkader BoudihThe 339*5f74217cSAbdelkader Boudih.Nm 340*5f74217cSAbdelkader Boudihdriver first appeared in 341*5f74217cSAbdelkader Boudih.Fx 16.0 . 342*5f74217cSAbdelkader Boudih.Sh AUTHORS 343*5f74217cSAbdelkader Boudih.An Abdelkader Boudih Aq Mt freebsd@seuros.com . 344*5f74217cSAbdelkader Boudih.Sh CAVEATS 345*5f74217cSAbdelkader BoudihThe driver discovers the coreboot table by scanning physical memory 346*5f74217cSAbdelkader Boudihaddresses 0x0 through 0x1000 for the 347*5f74217cSAbdelkader Boudih.Dq LBIO 348*5f74217cSAbdelkader Boudihsignature. 349*5f74217cSAbdelkader BoudihOn systems without coreboot firmware, the driver will silently 350*5f74217cSAbdelkader Boudihnot attach. 351*5f74217cSAbdelkader Boudih.Pp 352*5f74217cSAbdelkader BoudihThe 353*5f74217cSAbdelkader Boudih.Pa /dev/coreboot_console 354*5f74217cSAbdelkader Boudihcontent is static after boot; coreboot does not write to the 355*5f74217cSAbdelkader Boudihconsole buffer after handing off control to the payload. 356