e085f869d5
features of CPUs like reading/writing machine-specific registers, retrieving cpuid data, and updating microcode. - Add cpucontrol(8) utility, that provides userland access to the features of cpuctl(4). - Add subsequent manpages. The cpuctl(4) device operates as follows. The pseudo-device node cpuctlX is created for each cpu present in the systems. The pseudo-device minor number corresponds to the cpu number in the system. The cpuctl(4) pseudo- device allows a number of ioctl to be preformed, namely RDMSR/WRMSR/CPUID and UPDATE. The first pair alows the caller to read/write machine-specific registers from the correspondent CPU. cpuid data could be retrieved using the CPUID call, and microcode updates are applied via UPDATE. The permissions are inforced based on the pseudo-device file permissions. RDMSR/CPUID will be allowed when the caller has read access to the device node, while WRMSR/UPDATE will be granted only when the node is opened for writing. There're also a number of priv(9) checks. The cpucontrol(8) utility is intened to provide userland access to the cpuctl(4) device features. The utility also allows one to apply cpu microcode updates. Currently only Intel and AMD cpus are supported and were tested. Approved by: kib Reviewed by: rpaulo, cokane, Peter Jeremy MFC after: 1 month
509 lines
14 KiB
Plaintext
509 lines
14 KiB
Plaintext
#
|
||
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
|
||
#
|
||
# This file contains machine dependent kernel configuration notes. For
|
||
# machine independent notes, look in /sys/conf/NOTES.
|
||
#
|
||
# $FreeBSD$
|
||
#
|
||
|
||
#
|
||
# We want LINT to cover profiling as well.
|
||
profile 2
|
||
|
||
|
||
#####################################################################
|
||
# SMP OPTIONS:
|
||
#
|
||
# Notes:
|
||
#
|
||
# IPI_PREEMPTION instructs the kernel to preempt threads running on other
|
||
# CPUS if needed. Relies on the PREEMPTION option
|
||
|
||
# Optional:
|
||
options IPI_PREEMPTION
|
||
device atpic # Optional legacy pic support
|
||
device mptable # Optional MPSPEC mptable support
|
||
|
||
#
|
||
# Watchdog routines.
|
||
#
|
||
options MP_WATCHDOG
|
||
|
||
#
|
||
# Debugging options.
|
||
#
|
||
options STOP_NMI # Stop CPUS using NMI instead of IPI
|
||
|
||
|
||
|
||
#####################################################################
|
||
# CPU OPTIONS
|
||
|
||
#
|
||
# You must specify at least one CPU (the one you intend to run on);
|
||
# deleting the specification for CPUs you don't need to use may make
|
||
# parts of the system run faster.
|
||
#
|
||
cpu HAMMER # aka K8, aka Opteron & Athlon64
|
||
|
||
#
|
||
# Options for CPU features.
|
||
#
|
||
|
||
#
|
||
# PERFMON causes the driver for Pentium/Pentium Pro performance counters
|
||
# to be compiled. See perfmon(4) for more information.
|
||
#
|
||
#XXX#options PERFMON
|
||
|
||
|
||
#####################################################################
|
||
# NETWORKING OPTIONS
|
||
|
||
#
|
||
# DEVICE_POLLING adds support for mixed interrupt-polling handling
|
||
# of network device drivers, which has significant benefits in terms
|
||
# of robustness to overloads and responsivity, as well as permitting
|
||
# accurate scheduling of the CPU time between kernel network processing
|
||
# and other activities. The drawback is a moderate (up to 1/HZ seconds)
|
||
# potential increase in response times.
|
||
# It is strongly recommended to use HZ=1000 or 2000 with DEVICE_POLLING
|
||
# to achieve smoother behaviour.
|
||
# Additionally, you can enable/disable polling at runtime with help of
|
||
# the ifconfig(8) utility, and select the CPU fraction reserved to
|
||
# userland with the sysctl variable kern.polling.user_frac
|
||
# (default 50, range 0..100).
|
||
#
|
||
# Not all device drivers support this mode of operation at the time of
|
||
# this writing. See polling(4) for more details.
|
||
|
||
options DEVICE_POLLING
|
||
|
||
# BPF_JITTER adds support for BPF just-in-time compiler.
|
||
|
||
options BPF_JITTER
|
||
|
||
|
||
#####################################################################
|
||
# CLOCK OPTIONS
|
||
|
||
# Provide read/write access to the memory in the clock chip.
|
||
device nvram # Access to rtc cmos via /dev/nvram
|
||
|
||
|
||
#####################################################################
|
||
# MISCELLANEOUS DEVICES AND OPTIONS
|
||
|
||
device speaker #Play IBM BASIC-style noises out your speaker
|
||
hint.speaker.0.at="isa"
|
||
hint.speaker.0.port="0x61"
|
||
device gzip #Exec gzipped a.out's. REQUIRES COMPAT_AOUT!
|
||
|
||
|
||
#####################################################################
|
||
# HARDWARE BUS CONFIGURATION
|
||
|
||
#
|
||
# ISA bus
|
||
#
|
||
device isa
|
||
|
||
#
|
||
# Options for `isa':
|
||
#
|
||
# AUTO_EOI_1 enables the `automatic EOI' feature for the master 8259A
|
||
# interrupt controller. This saves about 0.7-1.25 usec for each interrupt.
|
||
# This option breaks suspend/resume on some portables.
|
||
#
|
||
# AUTO_EOI_2 enables the `automatic EOI' feature for the slave 8259A
|
||
# interrupt controller. This saves about 0.7-1.25 usec for each interrupt.
|
||
# Automatic EOI is documented not to work for for the slave with the
|
||
# original i8259A, but it works for some clones and some integrated
|
||
# versions.
|
||
#
|
||
# MAXMEM specifies the amount of RAM on the machine; if this is not
|
||
# specified, FreeBSD will first read the amount of memory from the CMOS
|
||
# RAM, so the amount of memory will initially be limited to 64MB or 16MB
|
||
# depending on the BIOS. If the BIOS reports 64MB, a memory probe will
|
||
# then attempt to detect the installed amount of RAM. If this probe
|
||
# fails to detect >64MB RAM you will have to use the MAXMEM option.
|
||
# The amount is in kilobytes, so for a machine with 128MB of RAM, it would
|
||
# be 131072 (128 * 1024).
|
||
#
|
||
# BROKEN_KEYBOARD_RESET disables the use of the keyboard controller to
|
||
# reset the CPU for reboot. This is needed on some systems with broken
|
||
# keyboard controllers.
|
||
|
||
options AUTO_EOI_1
|
||
#options AUTO_EOI_2
|
||
|
||
options MAXMEM=(128*1024)
|
||
#options BROKEN_KEYBOARD_RESET
|
||
|
||
#
|
||
# PCI bus & PCI options:
|
||
#
|
||
device pci
|
||
|
||
#
|
||
# AGP GART support
|
||
device agp
|
||
|
||
|
||
#####################################################################
|
||
# HARDWARE DEVICE CONFIGURATION
|
||
|
||
#
|
||
# Optional devices:
|
||
#
|
||
|
||
# PS/2 mouse
|
||
device psm
|
||
hint.psm.0.at="atkbdc"
|
||
hint.psm.0.irq="12"
|
||
|
||
# Options for psm:
|
||
options PSM_HOOKRESUME #hook the system resume event, useful
|
||
#for some laptops
|
||
options PSM_RESETAFTERSUSPEND #reset the device at the resume event
|
||
|
||
# The keyboard controller; it controls the keyboard and the PS/2 mouse.
|
||
device atkbdc
|
||
hint.atkbdc.0.at="isa"
|
||
hint.atkbdc.0.port="0x060"
|
||
|
||
# The AT keyboard
|
||
device atkbd
|
||
hint.atkbd.0.at="atkbdc"
|
||
hint.atkbd.0.irq="1"
|
||
|
||
# Options for atkbd:
|
||
options ATKBD_DFLT_KEYMAP # specify the built-in keymap
|
||
makeoptions ATKBD_DFLT_KEYMAP=jp.106
|
||
|
||
# `flags' for atkbd:
|
||
# 0x01 Force detection of keyboard, else we always assume a keyboard
|
||
# 0x02 Don't reset keyboard, useful for some newer ThinkPads
|
||
# 0x03 Force detection and avoid reset, might help with certain
|
||
# dockingstations
|
||
# 0x04 Old-style (XT) keyboard support, useful for older ThinkPads
|
||
|
||
# Video card driver for VGA adapters.
|
||
device vga
|
||
hint.vga.0.at="isa"
|
||
|
||
# Options for vga:
|
||
# Try the following option if the mouse pointer is not drawn correctly
|
||
# or font does not seem to be loaded properly. May cause flicker on
|
||
# some systems.
|
||
options VGA_ALT_SEQACCESS
|
||
|
||
# If you can dispense with some vga driver features, you may want to
|
||
# use the following options to save some memory.
|
||
#options VGA_NO_FONT_LOADING # don't save/load font
|
||
#options VGA_NO_MODE_CHANGE # don't change video modes
|
||
|
||
# Older video cards may require this option for proper operation.
|
||
options VGA_SLOW_IOACCESS # do byte-wide i/o's to TS and GDC regs
|
||
|
||
# The following option probably won't work with the LCD displays.
|
||
options VGA_WIDTH90 # support 90 column modes
|
||
|
||
# Debugging.
|
||
options VGA_DEBUG
|
||
|
||
# 3Dfx Voodoo Graphics, Voodoo II /dev/3dfx CDEV support. This will create
|
||
# the /dev/3dfx0 device to work with glide implementations. This should get
|
||
# linked to /dev/3dfx and /dev/voodoo. Note that this is not the same as
|
||
# the tdfx DRI module from XFree86 and is completely unrelated.
|
||
#
|
||
# To enable Linuxulator support, one must also include COMPAT_LINUX in the
|
||
# config as well. The other option is to load both as modules.
|
||
|
||
device tdfx # Enable 3Dfx Voodoo support
|
||
#XXX#device tdfx_linux # Enable Linuxulator support
|
||
|
||
#
|
||
# ACPI support using the Intel ACPI Component Architecture reference
|
||
# implementation.
|
||
#
|
||
# ACPI_DEBUG enables the use of the debug.acpi.level and debug.acpi.layer
|
||
# kernel environment variables to select initial debugging levels for the
|
||
# Intel ACPICA code. (Note that the Intel code must also have USE_DEBUGGER
|
||
# defined when it is built).
|
||
#
|
||
# ACPI_NO_SEMAPHORES makes the AcpiOs*Semaphore routines a no-op.
|
||
|
||
device acpi
|
||
options ACPI_DEBUG
|
||
#!options ACPI_NO_SEMAPHORES
|
||
|
||
# The cpufreq(4) driver provides support for non-ACPI CPU frequency control
|
||
device cpufreq
|
||
|
||
# Direct Rendering modules for 3D acceleration.
|
||
device drm # DRM core module required by DRM drivers
|
||
device i915drm # Intel i830 through i915
|
||
device mach64drm # ATI Rage Pro, Rage Mobility P/M, Rage XL
|
||
device mgadrm # AGP Matrox G200, G400, G450, G550
|
||
device r128drm # ATI Rage 128
|
||
device radeondrm # ATI Radeon
|
||
device savagedrm # S3 Savage3D, Savage4
|
||
device sisdrm # SiS 300/305, 540, 630
|
||
device tdfxdrm # 3dfx Voodoo 3/4/5 and Banshee
|
||
options DRM_DEBUG # Include debug printfs (slow)
|
||
|
||
#
|
||
# Network interfaces:
|
||
#
|
||
|
||
# ath: Atheros a/b/g WiFi adapters (requires ath_hal and wlan)
|
||
# ed: Western Digital and SMC 80xx; Novell NE1000 and NE2000; 3Com 3C503
|
||
# HP PC Lan+, various PC Card devices
|
||
# (requires miibus)
|
||
# ipw: Intel PRO/Wireless 2100 IEEE 802.11 adapter
|
||
# iwi: Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 adapters
|
||
# iwn: Intel Wireless WiFi Link 4965AGN 802.11 network adapters
|
||
# nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source)
|
||
# nve: nVidia nForce MCP on-board Ethernet Networking
|
||
# ral: Ralink Technology IEEE 802.11 wireless adapter
|
||
# ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter
|
||
# wpi: Intel 3945ABG Wireless LAN controller
|
||
|
||
device ed
|
||
options ED_3C503
|
||
options ED_HPP
|
||
options ED_SIC
|
||
device iwi
|
||
device iwn
|
||
device ipw
|
||
device nfe # nVidia nForce MCP on-board Ethernet Networking
|
||
device nve # nVidia nForce MCP on-board Ethernet Networking
|
||
device ral
|
||
device ural
|
||
device wpi
|
||
|
||
device ath
|
||
device ath_hal # Atheros HAL (includes binary component)
|
||
#device ath_rate_amrr # AMRR rate control for ath driver
|
||
#device ath_rate_onoe # Onoe rate control for ath driver
|
||
device ath_rate_sample # SampleRate rate control for the ath driver
|
||
#device wlan # 802.11 layer
|
||
|
||
#
|
||
#XXX this stores pointers in a 32bit field that is defined by the hardware
|
||
#device pst
|
||
|
||
#
|
||
# Areca 11xx and 12xx series of SATA II RAID controllers.
|
||
# CAM is required.
|
||
#
|
||
device arcmsr # Areca SATA II RAID
|
||
|
||
#
|
||
# 3ware 9000 series PATA/SATA RAID controller driver and options.
|
||
# The driver is implemented as a SIM, and so, needs the CAM infrastructure.
|
||
#
|
||
options TWA_DEBUG # 0-10; 10 prints the most messages.
|
||
options TWA_FLASH_FIRMWARE # firmware image bundled when defined.
|
||
device twa # 3ware 9000 series PATA/SATA RAID
|
||
|
||
#
|
||
# SCSI host adapters:
|
||
#
|
||
# ncv: NCR 53C500 based SCSI host adapters.
|
||
# nsp: Workbit Ninja SCSI-3 based PC Card SCSI host adapters.
|
||
# stg: TMC 18C30, 18C50 based SCSI host adapters.
|
||
|
||
device ncv
|
||
device nsp
|
||
device stg
|
||
|
||
#
|
||
# Adaptec FSA RAID controllers, including integrated DELL controllers,
|
||
# the Dell PERC 2/QC and the HP NetRAID-4M
|
||
device aac
|
||
device aacp # SCSI Passthrough interface (optional, CAM required)
|
||
|
||
#
|
||
# Highpoint RocketRAID 182x.
|
||
device hptmv
|
||
|
||
#
|
||
# Highpoint RocketRAID. Supports RR172x, RR222x, RR2240, RR232x, RR2340,
|
||
# RR2210, RR174x, RR2522, RR231x, RR230x.
|
||
device hptrr
|
||
|
||
#
|
||
# Highpoint RocketRaid 3xxx series SATA RAID
|
||
device hptiop
|
||
|
||
#
|
||
# IBM (now Adaptec) ServeRAID controllers
|
||
device ips
|
||
|
||
#
|
||
# SafeNet crypto driver: can be moved to the MI NOTES as soon as
|
||
# it's tested on a big-endian machine
|
||
#
|
||
device safe # SafeNet 1141
|
||
options SAFE_DEBUG # enable debugging support: hw.safe.debug
|
||
options SAFE_RNDTEST # enable rndtest support
|
||
|
||
#####################################################################
|
||
|
||
#
|
||
# Miscellaneous hardware:
|
||
#
|
||
# ipmi: Intelligent Platform Management Interface
|
||
# smbios: DMI/SMBIOS entry point
|
||
# vpd: Vital Product Data kernel interface
|
||
# asmc: Apple System Management Controller
|
||
|
||
# Notes on the Specialix SI/XIO driver:
|
||
# The host card is memory, not IO mapped.
|
||
# The Rev 1 host cards use a 64K chunk, on a 32K boundary.
|
||
# The Rev 2 host cards use a 32K chunk, on a 32K boundary.
|
||
# The cards can use an IRQ of 11, 12 or 15.
|
||
|
||
device ipmi
|
||
# Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724)
|
||
device pbio
|
||
hint.pbio.0.at="isa"
|
||
hint.pbio.0.port="0x360"
|
||
device smbios
|
||
device vpd
|
||
device asmc
|
||
#
|
||
# Laptop/Notebook options:
|
||
#
|
||
|
||
|
||
#
|
||
# I2C Bus
|
||
#
|
||
|
||
#
|
||
# Hardware watchdog timers:
|
||
#
|
||
# ichwd: Intel ICH watchdog timer
|
||
#
|
||
device ichwd
|
||
|
||
#
|
||
# Temperature sensors:
|
||
#
|
||
# coretemp: on-die sensor on Intel Core and newer CPUs
|
||
# k8temp: on-die sensor on AMD K8 CPUs
|
||
#
|
||
device coretemp
|
||
device k8temp
|
||
|
||
#
|
||
# CPU control pseudo-device. Provides access to MSRs, CPUID info and
|
||
# microcode update feature.
|
||
#
|
||
device cpuctl
|
||
|
||
#
|
||
# System Management Bus (SMB)
|
||
#
|
||
options ENABLE_ALART # Control alarm on Intel intpm driver
|
||
|
||
#
|
||
# Set the number of PV entries per process. Increasing this can
|
||
# stop panics related to heavy use of shared memory. However, that can
|
||
# (combined with large amounts of physical memory) cause panics at
|
||
# boot time due the kernel running out of VM space.
|
||
#
|
||
# If you're tweaking this, you might also want to increase the sysctls
|
||
# "vm.v_free_min", "vm.v_free_reserved", and "vm.v_free_target".
|
||
#
|
||
# The value below is the one more than the default.
|
||
#
|
||
options PMAP_SHPGPERPROC=201
|
||
|
||
|
||
#####################################################################
|
||
# ABI Emulation
|
||
|
||
#XXX keep these here for now and reactivate when support for emulating
|
||
#XXX these 32 bit binaries is added.
|
||
|
||
# Enable 32-bit runtime support for FreeBSD/i386 binaries.
|
||
options COMPAT_IA32
|
||
|
||
# Enable iBCS2 runtime support for SCO and ISC binaries
|
||
#XXX#options IBCS2
|
||
|
||
# Emulate spx device for client side of SVR3 local X interface
|
||
#XXX#options SPX_HACK
|
||
|
||
# Enable Linux ABI emulation
|
||
#XXX#options COMPAT_LINUX
|
||
|
||
# Enable 32-bit Linux ABI emulation (requires COMPAT_43 and COMPAT_IA32)
|
||
options COMPAT_LINUX32
|
||
|
||
# Enable the linux-like proc filesystem support (requires COMPAT_LINUX32
|
||
# and PSEUDOFS)
|
||
options LINPROCFS
|
||
|
||
#Enable the linux-like sys filesystem support (requires COMPAT_LINUX32
|
||
# and PSEUDOFS)
|
||
options LINSYSFS
|
||
|
||
#
|
||
# SysVR4 ABI emulation
|
||
#
|
||
# The svr4 ABI emulator can be statically compiled into the kernel or loaded as
|
||
# a KLD module.
|
||
# The STREAMS network emulation code can also be compiled statically or as a
|
||
# module. If loaded as a module, it must be loaded before the svr4 module
|
||
# (the /usr/sbin/svr4 script does this for you). If compiling statically,
|
||
# the `streams' device must be configured into any kernel which also
|
||
# specifies COMPAT_SVR4. It is possible to have a statically-configured
|
||
# STREAMS device and a dynamically loadable svr4 emulator; the /usr/sbin/svr4
|
||
# script understands that it doesn't need to load the `streams' module under
|
||
# those circumstances.
|
||
# Caveat: At this time, `options KTRACE' is required for the svr4 emulator
|
||
# (whether static or dynamic).
|
||
#
|
||
#XXX#options COMPAT_SVR4 # build emulator statically
|
||
#XXX#options DEBUG_SVR4 # enable verbose debugging
|
||
#XXX#device streams # STREAMS network driver (required for svr4).
|
||
|
||
|
||
#####################################################################
|
||
# VM OPTIONS
|
||
|
||
# KSTACK_PAGES is the number of memory pages to assign to the kernel
|
||
# stack of each thread.
|
||
|
||
options KSTACK_PAGES=3
|
||
|
||
#####################################################################
|
||
|
||
# More undocumented options for linting.
|
||
# Note that documenting these are not considered an affront.
|
||
|
||
options FB_INSTALL_CDEV # install a CDEV entry in /dev
|
||
|
||
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
|
||
|
||
# Enable NDIS binary driver support
|
||
options NDISAPI
|
||
device ndis
|