18c2ecf20Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci=========================== 48c2ecf20Sopenharmony_ciAMD64 Specific Boot Options 58c2ecf20Sopenharmony_ci=========================== 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ciThere are many others (usually documented in driver documentation), but 88c2ecf20Sopenharmony_cionly the AMD64 specific ones are listed here. 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ciMachine check 118c2ecf20Sopenharmony_ci============= 128c2ecf20Sopenharmony_ciPlease see Documentation/x86/x86_64/machinecheck.rst for sysfs runtime tunables. 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci mce=off 158c2ecf20Sopenharmony_ci Disable machine check 168c2ecf20Sopenharmony_ci mce=no_cmci 178c2ecf20Sopenharmony_ci Disable CMCI(Corrected Machine Check Interrupt) that 188c2ecf20Sopenharmony_ci Intel processor supports. Usually this disablement is 198c2ecf20Sopenharmony_ci not recommended, but it might be handy if your hardware 208c2ecf20Sopenharmony_ci is misbehaving. 218c2ecf20Sopenharmony_ci Note that you'll get more problems without CMCI than with 228c2ecf20Sopenharmony_ci due to the shared banks, i.e. you might get duplicated 238c2ecf20Sopenharmony_ci error logs. 248c2ecf20Sopenharmony_ci mce=dont_log_ce 258c2ecf20Sopenharmony_ci Don't make logs for corrected errors. All events reported 268c2ecf20Sopenharmony_ci as corrected are silently cleared by OS. 278c2ecf20Sopenharmony_ci This option will be useful if you have no interest in any 288c2ecf20Sopenharmony_ci of corrected errors. 298c2ecf20Sopenharmony_ci mce=ignore_ce 308c2ecf20Sopenharmony_ci Disable features for corrected errors, e.g. polling timer 318c2ecf20Sopenharmony_ci and CMCI. All events reported as corrected are not cleared 328c2ecf20Sopenharmony_ci by OS and remained in its error banks. 338c2ecf20Sopenharmony_ci Usually this disablement is not recommended, however if 348c2ecf20Sopenharmony_ci there is an agent checking/clearing corrected errors 358c2ecf20Sopenharmony_ci (e.g. BIOS or hardware monitoring applications), conflicting 368c2ecf20Sopenharmony_ci with OS's error handling, and you cannot deactivate the agent, 378c2ecf20Sopenharmony_ci then this option will be a help. 388c2ecf20Sopenharmony_ci mce=no_lmce 398c2ecf20Sopenharmony_ci Do not opt-in to Local MCE delivery. Use legacy method 408c2ecf20Sopenharmony_ci to broadcast MCEs. 418c2ecf20Sopenharmony_ci mce=bootlog 428c2ecf20Sopenharmony_ci Enable logging of machine checks left over from booting. 438c2ecf20Sopenharmony_ci Disabled by default on AMD Fam10h and older because some BIOS 448c2ecf20Sopenharmony_ci leave bogus ones. 458c2ecf20Sopenharmony_ci If your BIOS doesn't do that it's a good idea to enable though 468c2ecf20Sopenharmony_ci to make sure you log even machine check events that result 478c2ecf20Sopenharmony_ci in a reboot. On Intel systems it is enabled by default. 488c2ecf20Sopenharmony_ci mce=nobootlog 498c2ecf20Sopenharmony_ci Disable boot machine check logging. 508c2ecf20Sopenharmony_ci mce=tolerancelevel[,monarchtimeout] (number,number) 518c2ecf20Sopenharmony_ci tolerance levels: 528c2ecf20Sopenharmony_ci 0: always panic on uncorrected errors, log corrected errors 538c2ecf20Sopenharmony_ci 1: panic or SIGBUS on uncorrected errors, log corrected errors 548c2ecf20Sopenharmony_ci 2: SIGBUS or log uncorrected errors, log corrected errors 558c2ecf20Sopenharmony_ci 3: never panic or SIGBUS, log all errors (for testing only) 568c2ecf20Sopenharmony_ci Default is 1 578c2ecf20Sopenharmony_ci Can be also set using sysfs which is preferable. 588c2ecf20Sopenharmony_ci monarchtimeout: 598c2ecf20Sopenharmony_ci Sets the time in us to wait for other CPUs on machine checks. 0 608c2ecf20Sopenharmony_ci to disable. 618c2ecf20Sopenharmony_ci mce=bios_cmci_threshold 628c2ecf20Sopenharmony_ci Don't overwrite the bios-set CMCI threshold. This boot option 638c2ecf20Sopenharmony_ci prevents Linux from overwriting the CMCI threshold set by the 648c2ecf20Sopenharmony_ci bios. Without this option, Linux always sets the CMCI 658c2ecf20Sopenharmony_ci threshold to 1. Enabling this may make memory predictive failure 668c2ecf20Sopenharmony_ci analysis less effective if the bios sets thresholds for memory 678c2ecf20Sopenharmony_ci errors since we will not see details for all errors. 688c2ecf20Sopenharmony_ci mce=recovery 698c2ecf20Sopenharmony_ci Force-enable recoverable machine check code paths 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci nomce (for compatibility with i386) 728c2ecf20Sopenharmony_ci same as mce=off 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci Everything else is in sysfs now. 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ciAPICs 778c2ecf20Sopenharmony_ci===== 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci apic 808c2ecf20Sopenharmony_ci Use IO-APIC. Default 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci noapic 838c2ecf20Sopenharmony_ci Don't use the IO-APIC. 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci disableapic 868c2ecf20Sopenharmony_ci Don't use the local APIC 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci nolapic 898c2ecf20Sopenharmony_ci Don't use the local APIC (alias for i386 compatibility) 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci pirq=... 928c2ecf20Sopenharmony_ci See Documentation/x86/i386/IO-APIC.rst 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci noapictimer 958c2ecf20Sopenharmony_ci Don't set up the APIC timer 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci no_timer_check 988c2ecf20Sopenharmony_ci Don't check the IO-APIC timer. This can work around 998c2ecf20Sopenharmony_ci problems with incorrect timer initialization on some boards. 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci apicpmtimer 1028c2ecf20Sopenharmony_ci Do APIC timer calibration using the pmtimer. Implies 1038c2ecf20Sopenharmony_ci apicmaintimer. Useful when your PIT timer is totally broken. 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ciTiming 1068c2ecf20Sopenharmony_ci====== 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci notsc 1098c2ecf20Sopenharmony_ci Deprecated, use tsc=unstable instead. 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci nohpet 1128c2ecf20Sopenharmony_ci Don't use the HPET timer. 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ciIdle loop 1158c2ecf20Sopenharmony_ci========= 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci idle=poll 1188c2ecf20Sopenharmony_ci Don't do power saving in the idle loop using HLT, but poll for rescheduling 1198c2ecf20Sopenharmony_ci event. This will make the CPUs eat a lot more power, but may be useful 1208c2ecf20Sopenharmony_ci to get slightly better performance in multiprocessor benchmarks. It also 1218c2ecf20Sopenharmony_ci makes some profiling using performance counters more accurate. 1228c2ecf20Sopenharmony_ci Please note that on systems with MONITOR/MWAIT support (like Intel EM64T 1238c2ecf20Sopenharmony_ci CPUs) this option has no performance advantage over the normal idle loop. 1248c2ecf20Sopenharmony_ci It may also interact badly with hyperthreading. 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ciRebooting 1278c2ecf20Sopenharmony_ci========= 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ci reboot=b[ios] | t[riple] | k[bd] | a[cpi] | e[fi] [, [w]arm | [c]old] 1308c2ecf20Sopenharmony_ci bios 1318c2ecf20Sopenharmony_ci Use the CPU reboot vector for warm reset 1328c2ecf20Sopenharmony_ci warm 1338c2ecf20Sopenharmony_ci Don't set the cold reboot flag 1348c2ecf20Sopenharmony_ci cold 1358c2ecf20Sopenharmony_ci Set the cold reboot flag 1368c2ecf20Sopenharmony_ci triple 1378c2ecf20Sopenharmony_ci Force a triple fault (init) 1388c2ecf20Sopenharmony_ci kbd 1398c2ecf20Sopenharmony_ci Use the keyboard controller. cold reset (default) 1408c2ecf20Sopenharmony_ci acpi 1418c2ecf20Sopenharmony_ci Use the ACPI RESET_REG in the FADT. If ACPI is not configured or 1428c2ecf20Sopenharmony_ci the ACPI reset does not work, the reboot path attempts the reset 1438c2ecf20Sopenharmony_ci using the keyboard controller. 1448c2ecf20Sopenharmony_ci efi 1458c2ecf20Sopenharmony_ci Use efi reset_system runtime service. If EFI is not configured or 1468c2ecf20Sopenharmony_ci the EFI reset does not work, the reboot path attempts the reset using 1478c2ecf20Sopenharmony_ci the keyboard controller. 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ci Using warm reset will be much faster especially on big memory 1508c2ecf20Sopenharmony_ci systems because the BIOS will not go through the memory check. 1518c2ecf20Sopenharmony_ci Disadvantage is that not all hardware will be completely reinitialized 1528c2ecf20Sopenharmony_ci on reboot so there may be boot problems on some systems. 1538c2ecf20Sopenharmony_ci 1548c2ecf20Sopenharmony_ci reboot=force 1558c2ecf20Sopenharmony_ci Don't stop other CPUs on reboot. This can make reboot more reliable 1568c2ecf20Sopenharmony_ci in some cases. 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ciNon Executable Mappings 1598c2ecf20Sopenharmony_ci======================= 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci noexec=on|off 1628c2ecf20Sopenharmony_ci on 1638c2ecf20Sopenharmony_ci Enable(default) 1648c2ecf20Sopenharmony_ci off 1658c2ecf20Sopenharmony_ci Disable 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ciNUMA 1688c2ecf20Sopenharmony_ci==== 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_ci numa=off 1718c2ecf20Sopenharmony_ci Only set up a single NUMA node spanning all memory. 1728c2ecf20Sopenharmony_ci 1738c2ecf20Sopenharmony_ci numa=noacpi 1748c2ecf20Sopenharmony_ci Don't parse the SRAT table for NUMA setup 1758c2ecf20Sopenharmony_ci 1768c2ecf20Sopenharmony_ci numa=nohmat 1778c2ecf20Sopenharmony_ci Don't parse the HMAT table for NUMA setup, or soft-reserved memory 1788c2ecf20Sopenharmony_ci partitioning. 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci numa=fake=<size>[MG] 1818c2ecf20Sopenharmony_ci If given as a memory unit, fills all system RAM with nodes of 1828c2ecf20Sopenharmony_ci size interleaved over physical nodes. 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ci numa=fake=<N> 1858c2ecf20Sopenharmony_ci If given as an integer, fills all system RAM with N fake nodes 1868c2ecf20Sopenharmony_ci interleaved over physical nodes. 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ci numa=fake=<N>U 1898c2ecf20Sopenharmony_ci If given as an integer followed by 'U', it will divide each 1908c2ecf20Sopenharmony_ci physical node into N emulated nodes. 1918c2ecf20Sopenharmony_ci 1928c2ecf20Sopenharmony_ciACPI 1938c2ecf20Sopenharmony_ci==== 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci acpi=off 1968c2ecf20Sopenharmony_ci Don't enable ACPI 1978c2ecf20Sopenharmony_ci acpi=ht 1988c2ecf20Sopenharmony_ci Use ACPI boot table parsing, but don't enable ACPI interpreter 1998c2ecf20Sopenharmony_ci acpi=force 2008c2ecf20Sopenharmony_ci Force ACPI on (currently not needed) 2018c2ecf20Sopenharmony_ci acpi=strict 2028c2ecf20Sopenharmony_ci Disable out of spec ACPI workarounds. 2038c2ecf20Sopenharmony_ci acpi_sci={edge,level,high,low} 2048c2ecf20Sopenharmony_ci Set up ACPI SCI interrupt. 2058c2ecf20Sopenharmony_ci acpi=noirq 2068c2ecf20Sopenharmony_ci Don't route interrupts 2078c2ecf20Sopenharmony_ci acpi=nocmcff 2088c2ecf20Sopenharmony_ci Disable firmware first mode for corrected errors. This 2098c2ecf20Sopenharmony_ci disables parsing the HEST CMC error source to check if 2108c2ecf20Sopenharmony_ci firmware has set the FF flag. This may result in 2118c2ecf20Sopenharmony_ci duplicate corrected error reports. 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ciPCI 2148c2ecf20Sopenharmony_ci=== 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci pci=off 2178c2ecf20Sopenharmony_ci Don't use PCI 2188c2ecf20Sopenharmony_ci pci=conf1 2198c2ecf20Sopenharmony_ci Use conf1 access. 2208c2ecf20Sopenharmony_ci pci=conf2 2218c2ecf20Sopenharmony_ci Use conf2 access. 2228c2ecf20Sopenharmony_ci pci=rom 2238c2ecf20Sopenharmony_ci Assign ROMs. 2248c2ecf20Sopenharmony_ci pci=assign-busses 2258c2ecf20Sopenharmony_ci Assign busses 2268c2ecf20Sopenharmony_ci pci=irqmask=MASK 2278c2ecf20Sopenharmony_ci Set PCI interrupt mask to MASK 2288c2ecf20Sopenharmony_ci pci=lastbus=NUMBER 2298c2ecf20Sopenharmony_ci Scan up to NUMBER busses, no matter what the mptable says. 2308c2ecf20Sopenharmony_ci pci=noacpi 2318c2ecf20Sopenharmony_ci Don't use ACPI to set up PCI interrupt routing. 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_ciIOMMU (input/output memory management unit) 2348c2ecf20Sopenharmony_ci=========================================== 2358c2ecf20Sopenharmony_ciMultiple x86-64 PCI-DMA mapping implementations exist, for example: 2368c2ecf20Sopenharmony_ci 2378c2ecf20Sopenharmony_ci 1. <kernel/dma/direct.c>: use no hardware/software IOMMU at all 2388c2ecf20Sopenharmony_ci (e.g. because you have < 3 GB memory). 2398c2ecf20Sopenharmony_ci Kernel boot message: "PCI-DMA: Disabling IOMMU" 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_ci 2. <arch/x86/kernel/amd_gart_64.c>: AMD GART based hardware IOMMU. 2428c2ecf20Sopenharmony_ci Kernel boot message: "PCI-DMA: using GART IOMMU" 2438c2ecf20Sopenharmony_ci 2448c2ecf20Sopenharmony_ci 3. <arch/x86_64/kernel/pci-swiotlb.c> : Software IOMMU implementation. Used 2458c2ecf20Sopenharmony_ci e.g. if there is no hardware IOMMU in the system and it is need because 2468c2ecf20Sopenharmony_ci you have >3GB memory or told the kernel to us it (iommu=soft)) 2478c2ecf20Sopenharmony_ci Kernel boot message: "PCI-DMA: Using software bounce buffering 2488c2ecf20Sopenharmony_ci for IO (SWIOTLB)" 2498c2ecf20Sopenharmony_ci 2508c2ecf20Sopenharmony_ci 4. <arch/x86_64/pci-calgary.c> : IBM Calgary hardware IOMMU. Used in IBM 2518c2ecf20Sopenharmony_ci pSeries and xSeries servers. This hardware IOMMU supports DMA address 2528c2ecf20Sopenharmony_ci mapping with memory protection, etc. 2538c2ecf20Sopenharmony_ci Kernel boot message: "PCI-DMA: Using Calgary IOMMU" 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci:: 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ci iommu=[<size>][,noagp][,off][,force][,noforce] 2588c2ecf20Sopenharmony_ci [,memaper[=<order>]][,merge][,fullflush][,nomerge] 2598c2ecf20Sopenharmony_ci [,noaperture][,calgary] 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ciGeneral iommu options: 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_ci off 2648c2ecf20Sopenharmony_ci Don't initialize and use any kind of IOMMU. 2658c2ecf20Sopenharmony_ci noforce 2668c2ecf20Sopenharmony_ci Don't force hardware IOMMU usage when it is not needed. (default). 2678c2ecf20Sopenharmony_ci force 2688c2ecf20Sopenharmony_ci Force the use of the hardware IOMMU even when it is 2698c2ecf20Sopenharmony_ci not actually needed (e.g. because < 3 GB memory). 2708c2ecf20Sopenharmony_ci soft 2718c2ecf20Sopenharmony_ci Use software bounce buffering (SWIOTLB) (default for 2728c2ecf20Sopenharmony_ci Intel machines). This can be used to prevent the usage 2738c2ecf20Sopenharmony_ci of an available hardware IOMMU. 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ciiommu options only relevant to the AMD GART hardware IOMMU: 2768c2ecf20Sopenharmony_ci 2778c2ecf20Sopenharmony_ci <size> 2788c2ecf20Sopenharmony_ci Set the size of the remapping area in bytes. 2798c2ecf20Sopenharmony_ci allowed 2808c2ecf20Sopenharmony_ci Overwrite iommu off workarounds for specific chipsets. 2818c2ecf20Sopenharmony_ci fullflush 2828c2ecf20Sopenharmony_ci Flush IOMMU on each allocation (default). 2838c2ecf20Sopenharmony_ci nofullflush 2848c2ecf20Sopenharmony_ci Don't use IOMMU fullflush. 2858c2ecf20Sopenharmony_ci memaper[=<order>] 2868c2ecf20Sopenharmony_ci Allocate an own aperture over RAM with size 32MB<<order. 2878c2ecf20Sopenharmony_ci (default: order=1, i.e. 64MB) 2888c2ecf20Sopenharmony_ci merge 2898c2ecf20Sopenharmony_ci Do scatter-gather (SG) merging. Implies "force" (experimental). 2908c2ecf20Sopenharmony_ci nomerge 2918c2ecf20Sopenharmony_ci Don't do scatter-gather (SG) merging. 2928c2ecf20Sopenharmony_ci noaperture 2938c2ecf20Sopenharmony_ci Ask the IOMMU not to touch the aperture for AGP. 2948c2ecf20Sopenharmony_ci noagp 2958c2ecf20Sopenharmony_ci Don't initialize the AGP driver and use full aperture. 2968c2ecf20Sopenharmony_ci panic 2978c2ecf20Sopenharmony_ci Always panic when IOMMU overflows. 2988c2ecf20Sopenharmony_ci calgary 2998c2ecf20Sopenharmony_ci Use the Calgary IOMMU if it is available 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_ciiommu options only relevant to the software bounce buffering (SWIOTLB) IOMMU 3028c2ecf20Sopenharmony_ciimplementation: 3038c2ecf20Sopenharmony_ci 3048c2ecf20Sopenharmony_ci swiotlb=<pages>[,force] 3058c2ecf20Sopenharmony_ci <pages> 3068c2ecf20Sopenharmony_ci Prereserve that many 128K pages for the software IO bounce buffering. 3078c2ecf20Sopenharmony_ci force 3088c2ecf20Sopenharmony_ci Force all IO through the software TLB. 3098c2ecf20Sopenharmony_ci 3108c2ecf20Sopenharmony_ciSettings for the IBM Calgary hardware IOMMU currently found in IBM 3118c2ecf20Sopenharmony_cipSeries and xSeries machines 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_ci calgary=[64k,128k,256k,512k,1M,2M,4M,8M] 3148c2ecf20Sopenharmony_ci Set the size of each PCI slot's translation table when using the 3158c2ecf20Sopenharmony_ci Calgary IOMMU. This is the size of the translation table itself 3168c2ecf20Sopenharmony_ci in main memory. The smallest table, 64k, covers an IO space of 3178c2ecf20Sopenharmony_ci 32MB; the largest, 8MB table, can cover an IO space of 4GB. 3188c2ecf20Sopenharmony_ci Normally the kernel will make the right choice by itself. 3198c2ecf20Sopenharmony_ci calgary=[translate_empty_slots] 3208c2ecf20Sopenharmony_ci Enable translation even on slots that have no devices attached to 3218c2ecf20Sopenharmony_ci them, in case a device will be hotplugged in the future. 3228c2ecf20Sopenharmony_ci calgary=[disable=<PCI bus number>] 3238c2ecf20Sopenharmony_ci Disable translation on a given PHB. For 3248c2ecf20Sopenharmony_ci example, the built-in graphics adapter resides on the first bridge 3258c2ecf20Sopenharmony_ci (PCI bus number 0); if translation (isolation) is enabled on this 3268c2ecf20Sopenharmony_ci bridge, X servers that access the hardware directly from user 3278c2ecf20Sopenharmony_ci space might stop working. Use this option if you have devices that 3288c2ecf20Sopenharmony_ci are accessed from userspace directly on some PCI host bridge. 3298c2ecf20Sopenharmony_ci panic 3308c2ecf20Sopenharmony_ci Always panic when IOMMU overflows 3318c2ecf20Sopenharmony_ci 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_ciMiscellaneous 3348c2ecf20Sopenharmony_ci============= 3358c2ecf20Sopenharmony_ci 3368c2ecf20Sopenharmony_ci nogbpages 3378c2ecf20Sopenharmony_ci Do not use GB pages for kernel direct mappings. 3388c2ecf20Sopenharmony_ci gbpages 3398c2ecf20Sopenharmony_ci Use GB pages for kernel direct mappings. 340