linux/Documentation/x86/x86_64/boot-options.txt
<<
>>
Prefs
   1AMD64 specific boot options
   2
   3There are many others (usually documented in driver documentation), but
   4only the AMD64 specific ones are listed here.
   5
   6Machine check
   7
   8   mce=off disable machine check
   9   mce=bootlog Enable logging of machine checks left over from booting.
  10               Disabled by default on AMD because some BIOS leave bogus ones.
  11               If your BIOS doesn't do that it's a good idea to enable though
  12               to make sure you log even machine check events that result
  13               in a reboot. On Intel systems it is enabled by default.
  14   mce=nobootlog
  15                Disable boot machine check logging.
  16   mce=tolerancelevel (number)
  17                0: always panic on uncorrected errors, log corrected errors
  18                1: panic or SIGBUS on uncorrected errors, log corrected errors
  19                2: SIGBUS or log uncorrected errors, log corrected errors
  20                3: never panic or SIGBUS, log all errors (for testing only)
  21                Default is 1
  22                Can be also set using sysfs which is preferable.
  23
  24   nomce (for compatibility with i386): same as mce=off
  25
  26   Everything else is in sysfs now.
  27
  28APICs
  29
  30   apic          Use IO-APIC. Default
  31
  32   noapic        Don't use the IO-APIC.
  33
  34   disableapic   Don't use the local APIC
  35
  36   nolapic       Don't use the local APIC (alias for i386 compatibility)
  37
  38   pirq=...      See Documentation/i386/IO-APIC.txt
  39
  40   noapictimer   Don't set up the APIC timer
  41
  42   no_timer_check Don't check the IO-APIC timer. This can work around
  43                 problems with incorrect timer initialization on some boards.
  44
  45   apicmaintimer Run time keeping from the local APIC timer instead
  46                 of using the PIT/HPET interrupt for this. This is useful
  47                 when the PIT/HPET interrupts are unreliable.
  48
  49   noapicmaintimer  Don't do time keeping using the APIC timer.
  50                 Useful when this option was auto selected, but doesn't work.
  51
  52   apicpmtimer
  53                 Do APIC timer calibration using the pmtimer. Implies
  54                 apicmaintimer. Useful when your PIT timer is totally
  55                 broken.
  56
  57   disable_8254_timer / enable_8254_timer
  58                 Enable interrupt 0 timer routing over the 8254 in addition to over
  59                 the IO-APIC. The kernel tries to set a sensible default.
  60
  61Early Console
  62
  63   syntax: earlyprintk=vga
  64           earlyprintk=serial[,ttySn[,baudrate]]
  65
  66   The early console is useful when the kernel crashes before the
  67   normal console is initialized. It is not enabled by
  68   default because it has some cosmetic problems.
  69   Append ,keep to not disable it when the real console takes over.
  70   Only vga or serial at a time, not both.
  71   Currently only ttyS0 and ttyS1 are supported.
  72   Interaction with the standard serial driver is not very good.
  73   The VGA output is eventually overwritten by the real console.
  74
  75Timing
  76
  77  notsc
  78  Don't use the CPU time stamp counter to read the wall time.
  79  This can be used to work around timing problems on multiprocessor systems
  80  with not properly synchronized CPUs.
  81
  82  report_lost_ticks
  83  Report when timer interrupts are lost because some code turned off
  84  interrupts for too long.
  85
  86  nmi_watchdog=NUMBER[,panic]
  87  NUMBER can be:
  88  0 don't use an NMI watchdog
  89  1 use the IO-APIC timer for the NMI watchdog
  90  2 use the local APIC for the NMI watchdog using a performance counter. Note
  91  This will use one performance counter and the local APIC's performance
  92  vector.
  93  When panic is specified panic when an NMI watchdog timeout occurs.
  94  This is useful when you use a panic=... timeout and need the box
  95  quickly up again.
  96
  97  nohpet
  98  Don't use the HPET timer.
  99
 100Idle loop
 101
 102  idle=poll
 103  Don't do power saving in the idle loop using HLT, but poll for rescheduling
 104  event. This will make the CPUs eat a lot more power, but may be useful
 105  to get slightly better performance in multiprocessor benchmarks. It also
 106  makes some profiling using performance counters more accurate.
 107  Please note that on systems with MONITOR/MWAIT support (like Intel EM64T
 108  CPUs) this option has no performance advantage over the normal idle loop.
 109  It may also interact badly with hyperthreading.
 110
 111Rebooting
 112
 113   reboot=b[ios] | t[riple] | k[bd] | a[cpi] | e[fi] [, [w]arm | [c]old]
 114   bios   Use the CPU reboot vector for warm reset
 115   warm   Don't set the cold reboot flag
 116   cold   Set the cold reboot flag
 117   triple Force a triple fault (init)
 118   kbd    Use the keyboard controller. cold reset (default)
 119   acpi   Use the ACPI RESET_REG in the FADT. If ACPI is not configured or the
 120          ACPI reset does not work, the reboot path attempts the reset using
 121          the keyboard controller.
 122   efi    Use efi reset_system runtime service. If EFI is not configured or the
 123          EFI reset does not work, the reboot path attempts the reset using
 124          the keyboard controller.
 125
 126   Using warm reset will be much faster especially on big memory
 127   systems because the BIOS will not go through the memory check.
 128   Disadvantage is that not all hardware will be completely reinitialized
 129   on reboot so there may be boot problems on some systems.
 130
 131   reboot=force
 132
 133   Don't stop other CPUs on reboot. This can make reboot more reliable
 134   in some cases.
 135
 136Non Executable Mappings
 137
 138  noexec=on|off
 139
 140  on      Enable(default)
 141  off     Disable
 142
 143SMP
 144
 145  additional_cpus=NUM Allow NUM more CPUs for hotplug
 146                 (defaults are specified by the BIOS, see Documentation/x86_64/cpu-hotplug-spec)
 147
 148NUMA
 149
 150  numa=off      Only set up a single NUMA node spanning all memory.
 151
 152  numa=noacpi   Don't parse the SRAT table for NUMA setup
 153
 154  numa=fake=CMDLINE
 155                If a number, fakes CMDLINE nodes and ignores NUMA setup of the
 156                actual machine.  Otherwise, system memory is configured
 157                depending on the sizes and coefficients listed.  For example:
 158                        numa=fake=2*512,1024,4*256,*128
 159                gives two 512M nodes, a 1024M node, four 256M nodes, and the
 160                rest split into 128M chunks.  If the last character of CMDLINE
 161                is a *, the remaining memory is divided up equally among its
 162                coefficient:
 163                        numa=fake=2*512,2*
 164                gives two 512M nodes and the rest split into two nodes.
 165                Otherwise, the remaining system RAM is allocated to an
 166                additional node.
 167
 168  numa=hotadd=percent
 169                Only allow hotadd memory to preallocate page structures upto
 170                percent of already available memory.
 171                numa=hotadd=0 will disable hotadd memory.
 172
 173ACPI
 174
 175  acpi=off      Don't enable ACPI
 176  acpi=ht       Use ACPI boot table parsing, but don't enable ACPI
 177                interpreter
 178  acpi=force    Force ACPI on (currently not needed)
 179
 180  acpi=strict   Disable out of spec ACPI workarounds.
 181
 182  acpi_sci={edge,level,high,low}  Set up ACPI SCI interrupt.
 183
 184  acpi=noirq    Don't route interrupts
 185
 186PCI
 187
 188  pci=off       Don't use PCI
 189  pci=conf1     Use conf1 access.
 190  pci=conf2     Use conf2 access.
 191  pci=rom       Assign ROMs.
 192  pci=assign-busses    Assign busses
 193  pci=irqmask=MASK             Set PCI interrupt mask to MASK
 194  pci=lastbus=NUMBER           Scan upto NUMBER busses, no matter what the mptable says.
 195  pci=noacpi            Don't use ACPI to set up PCI interrupt routing.
 196
 197IOMMU (input/output memory management unit)
 198
 199 Currently four x86-64 PCI-DMA mapping implementations exist:
 200
 201   1. <arch/x86_64/kernel/pci-nommu.c>: use no hardware/software IOMMU at all
 202      (e.g. because you have < 3 GB memory).
 203      Kernel boot message: "PCI-DMA: Disabling IOMMU"
 204
 205   2. <arch/x86_64/kernel/pci-gart.c>: AMD GART based hardware IOMMU.
 206      Kernel boot message: "PCI-DMA: using GART IOMMU"
 207
 208   3. <arch/x86_64/kernel/pci-swiotlb.c> : Software IOMMU implementation. Used
 209      e.g. if there is no hardware IOMMU in the system and it is need because
 210      you have >3GB memory or told the kernel to us it (iommu=soft))
 211      Kernel boot message: "PCI-DMA: Using software bounce buffering
 212      for IO (SWIOTLB)"
 213
 214   4. <arch/x86_64/pci-calgary.c> : IBM Calgary hardware IOMMU. Used in IBM
 215      pSeries and xSeries servers. This hardware IOMMU supports DMA address
 216      mapping with memory protection, etc.
 217      Kernel boot message: "PCI-DMA: Using Calgary IOMMU"
 218
 219 iommu=[<size>][,noagp][,off][,force][,noforce][,leak[=<nr_of_leak_pages>]
 220        [,memaper[=<order>]][,merge][,forcesac][,fullflush][,nomerge]
 221        [,noaperture][,calgary]
 222
 223  General iommu options:
 224    off                Don't initialize and use any kind of IOMMU.
 225    noforce            Don't force hardware IOMMU usage when it is not needed.
 226                       (default).
 227    force              Force the use of the hardware IOMMU even when it is
 228                       not actually needed (e.g. because < 3 GB memory).
 229    soft               Use software bounce buffering (SWIOTLB) (default for
 230                       Intel machines). This can be used to prevent the usage
 231                       of an available hardware IOMMU.
 232
 233  iommu options only relevant to the AMD GART hardware IOMMU:
 234    <size>             Set the size of the remapping area in bytes.
 235    allowed            Overwrite iommu off workarounds for specific chipsets.
 236    fullflush          Flush IOMMU on each allocation (default).
 237    nofullflush        Don't use IOMMU fullflush.
 238    leak               Turn on simple iommu leak tracing (only when
 239                       CONFIG_IOMMU_LEAK is on). Default number of leak pages
 240                       is 20.
 241    memaper[=<order>]  Allocate an own aperture over RAM with size 32MB<<order.
 242                       (default: order=1, i.e. 64MB)
 243    merge              Do scatter-gather (SG) merging. Implies "force"
 244                       (experimental).
 245    nomerge            Don't do scatter-gather (SG) merging.
 246    noaperture         Ask the IOMMU not to touch the aperture for AGP.
 247    forcesac           Force single-address cycle (SAC) mode for masks <40bits
 248                       (experimental).
 249    noagp              Don't initialize the AGP driver and use full aperture.
 250    allowdac           Allow double-address cycle (DAC) mode, i.e. DMA >4GB.
 251                       DAC is used with 32-bit PCI to push a 64-bit address in
 252                       two cycles. When off all DMA over >4GB is forced through
 253                       an IOMMU or software bounce buffering.
 254    nodac              Forbid DAC mode, i.e. DMA >4GB.
 255    panic              Always panic when IOMMU overflows.
 256    calgary            Use the Calgary IOMMU if it is available
 257
 258  iommu options only relevant to the software bounce buffering (SWIOTLB) IOMMU
 259  implementation:
 260    swiotlb=<pages>[,force]
 261    <pages>            Prereserve that many 128K pages for the software IO
 262                       bounce buffering.
 263    force              Force all IO through the software TLB.
 264
 265  Settings for the IBM Calgary hardware IOMMU currently found in IBM
 266  pSeries and xSeries machines:
 267
 268    calgary=[64k,128k,256k,512k,1M,2M,4M,8M]
 269    calgary=[translate_empty_slots]
 270    calgary=[disable=<PCI bus number>]
 271    panic              Always panic when IOMMU overflows
 272
 273    64k,...,8M - Set the size of each PCI slot's translation table
 274    when using the Calgary IOMMU. This is the size of the translation
 275    table itself in main memory. The smallest table, 64k, covers an IO
 276    space of 32MB; the largest, 8MB table, can cover an IO space of
 277    4GB. Normally the kernel will make the right choice by itself.
 278
 279    translate_empty_slots - Enable translation even on slots that have
 280    no devices attached to them, in case a device will be hotplugged
 281    in the future.
 282
 283    disable=<PCI bus number> - Disable translation on a given PHB. For
 284    example, the built-in graphics adapter resides on the first bridge
 285    (PCI bus number 0); if translation (isolation) is enabled on this
 286    bridge, X servers that access the hardware directly from user
 287    space might stop working. Use this option if you have devices that
 288    are accessed from userspace directly on some PCI host bridge.
 289
 290Debugging
 291
 292  oops=panic    Always panic on oopses. Default is to just kill the process,
 293                but there is a small probability of deadlocking the machine.
 294                This will also cause panics on machine check exceptions.
 295                Useful together with panic=30 to trigger a reboot.
 296
 297  kstack=N      Print N words from the kernel stack in oops dumps.
 298
 299  pagefaulttrace  Dump all page faults. Only useful for extreme debugging
 300                and will create a lot of output.
 301
 302  call_trace=[old|both|newfallback|new]
 303                old: use old inexact backtracer
 304                new: use new exact dwarf2 unwinder
 305                both: print entries from both
 306                newfallback: use new unwinder but fall back to old if it gets
 307                        stuck (default)
 308
 309Miscellaneous
 310
 311        nogbpages
 312                Do not use GB pages for kernel direct mappings.
 313        gbpages
 314                Use GB pages for kernel direct mappings.
 315
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.