Em Fri, 26 Apr 2019 23:31:44 +0800 Changbin Du <changbin.du@xxxxxxxxx> escreveu: > This converts the plain text documentation to reStructuredText format and > add it to Sphinx TOC tree. No essential content change. > > Signed-off-by: Changbin Du <changbin.du@xxxxxxxxx> > --- > Documentation/x86/index.rst | 1 + > Documentation/x86/x86_64/boot-options.rst | 326 ++++++++++++++++++++++ > Documentation/x86/x86_64/boot-options.txt | 278 ------------------ > Documentation/x86/x86_64/index.rst | 10 + > 4 files changed, 337 insertions(+), 278 deletions(-) > create mode 100644 Documentation/x86/x86_64/boot-options.rst > delete mode 100644 Documentation/x86/x86_64/boot-options.txt > create mode 100644 Documentation/x86/x86_64/index.rst > > diff --git a/Documentation/x86/index.rst b/Documentation/x86/index.rst > index 19323c5b89ce..e7becb146c30 100644 > --- a/Documentation/x86/index.rst > +++ b/Documentation/x86/index.rst > @@ -27,3 +27,4 @@ Linux x86 Support > resctrl_ui > usb-legacy-support > i386/index > + x86_64/index > diff --git a/Documentation/x86/x86_64/boot-options.rst b/Documentation/x86/x86_64/boot-options.rst > new file mode 100644 > index 000000000000..2378f30c694a > --- /dev/null > +++ b/Documentation/x86/x86_64/boot-options.rst > @@ -0,0 +1,326 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +=========================== > +AMD64 Specific Boot Options > +=========================== > + > +There are many others (usually documented in driver documentation), but > +only the AMD64 specific ones are listed here. > + > +Machine check > +============= > +Please see Documentation/x86/x86_64/machinecheck for sysfs runtime tunables. > + > + mce=off > + Disable machine check > + mce=no_cmci > + Disable CMCI(Corrected Machine Check Interrupt) that > + Intel processor supports. Usually this disablement is > + not recommended, but it might be handy if your hardware > + is misbehaving. > + Note that you'll get more problems without CMCI than with > + due to the shared banks, i.e. you might get duplicated > + error logs. > + mce=dont_log_ce > + Don't make logs for corrected errors. All events reported > + as corrected are silently cleared by OS. > + This option will be useful if you have no interest in any > + of corrected errors. > + mce=ignore_ce > + Disable features for corrected errors, e.g. polling timer > + and CMCI. All events reported as corrected are not cleared > + by OS and remained in its error banks. > + Usually this disablement is not recommended, however if > + there is an agent checking/clearing corrected errors > + (e.g. BIOS or hardware monitoring applications), conflicting > + with OS's error handling, and you cannot deactivate the agent, > + then this option will be a help. > + mce=no_lmce > + Do not opt-in to Local MCE delivery. Use legacy method > + to broadcast MCEs. > + mce=bootlog > + Enable logging of machine checks left over from booting. > + Disabled by default on AMD Fam10h and older because some BIOS > + leave bogus ones. > + If your BIOS doesn't do that it's a good idea to enable though > + to make sure you log even machine check events that result > + in a reboot. On Intel systems it is enabled by default. > + mce=nobootlog > + Disable boot machine check logging. > + mce=tolerancelevel[,monarchtimeout] (number,number) > + tolerance levels: > + 0: always panic on uncorrected errors, log corrected errors > + 1: panic or SIGBUS on uncorrected errors, log corrected errors > + 2: SIGBUS or log uncorrected errors, log corrected errors > + 3: never panic or SIGBUS, log all errors (for testing only) > + Default is 1 > + Can be also set using sysfs which is preferable. > + monarchtimeout: > + Sets the time in us to wait for other CPUs on machine checks. 0 > + to disable. > + mce=bios_cmci_threshold > + Don't overwrite the bios-set CMCI threshold. This boot option > + prevents Linux from overwriting the CMCI threshold set by the > + bios. Without this option, Linux always sets the CMCI > + threshold to 1. Enabling this may make memory predictive failure > + analysis less effective if the bios sets thresholds for memory > + errors since we will not see details for all errors. > + mce=recovery > + Force-enable recoverable machine check code paths > + > + nomce (for compatibility with i386) > + same as mce=off > + > + Everything else is in sysfs now. > + > +APICs > +===== > + > + apic > + Use IO-APIC. Default > + > + noapic > + Don't use the IO-APIC. > + > + disableapic > + Don't use the local APIC > + > + nolapic > + Don't use the local APIC (alias for i386 compatibility) > + > + pirq=... > + See Documentation/x86/i386/IO-APIC.txt > + > + noapictimer > + Don't set up the APIC timer > + > + no_timer_check > + Don't check the IO-APIC timer. This can work around > + problems with incorrect timer initialization on some boards. > + > + apicpmtimer > + Do APIC timer calibration using the pmtimer. Implies > + apicmaintimer. Useful when your PIT timer is totally broken. > + > +Timing > +====== > + > + notsc > + Deprecated, use tsc=unstable instead. > + > + nohpet > + Don't use the HPET timer. > + > +Idle loop > +========= > + > + idle=poll > + Don't do power saving in the idle loop using HLT, but poll for rescheduling > + event. This will make the CPUs eat a lot more power, but may be useful > + to get slightly better performance in multiprocessor benchmarks. It also > + makes some profiling using performance counters more accurate. > + Please note that on systems with MONITOR/MWAIT support (like Intel EM64T > + CPUs) this option has no performance advantage over the normal idle loop. > + It may also interact badly with hyperthreading. > + > +Rebooting > +========= > + > + reboot=b[ios] | t[riple] | k[bd] | a[cpi] | e[fi] [, [w]arm | [c]old] > + * bios - Use the CPU reboot vector for warm reset Please use the same convention as the one you used before, e. g.: * bios Use the CPU reboot vector for warm reset and so on. After such change: Reviewed-by: Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx> > + * warm - Don't set the cold reboot flag > + * cold - Set the cold reboot flag > + * triple - Force a triple fault (init) > + * kbd - Use the keyboard controller. cold reset (default) > + * acpi - Use the ACPI RESET_REG in the FADT. If ACPI is not configured or > + the ACPI reset does not work, the reboot path attempts the reset > + using the keyboard controller. > + * efi - Use efi reset_system runtime service. If EFI is not configured or > + the EFI reset does not work, the reboot path attempts the reset using > + the keyboard controller. > + > + Using warm reset will be much faster especially on big memory > + systems because the BIOS will not go through the memory check. > + Disadvantage is that not all hardware will be completely reinitialized > + on reboot so there may be boot problems on some systems. > + > + reboot=force > + Don't stop other CPUs on reboot. This can make reboot more reliable > + in some cases. > + > +Non Executable Mappings > +======================= > + > + noexec=on|off > + * on - Enable(default) > + * off - Disable > + > +NUMA > +==== > + > + numa=off > + Only set up a single NUMA node spanning all memory. > + > + numa=noacpi > + Don't parse the SRAT table for NUMA setup > + > + numa=fake=<size>[MG] > + If given as a memory unit, fills all system RAM with nodes of > + size interleaved over physical nodes. > + > + numa=fake=<N> > + If given as an integer, fills all system RAM with N fake nodes > + interleaved over physical nodes. > + > + numa=fake=<N>U > + If given as an integer followed by 'U', it will divide each > + physical node into N emulated nodes. > + > +ACPI > +==== > + > + acpi=off > + Don't enable ACPI > + acpi=ht > + Use ACPI boot table parsing, but don't enable ACPI interpreter > + acpi=force > + Force ACPI on (currently not needed) > + acpi=strict > + Disable out of spec ACPI workarounds. > + acpi_sci={edge,level,high,low} > + Set up ACPI SCI interrupt. > + acpi=noirq > + Don't route interrupts > + acpi=nocmcff > + Disable firmware first mode for corrected errors. This > + disables parsing the HEST CMC error source to check if > + firmware has set the FF flag. This may result in > + duplicate corrected error reports. > + > +PCI > +=== > + > + pci=off > + Don't use PCI > + pci=conf1 > + Use conf1 access. > + pci=conf2 > + Use conf2 access. > + pci=rom > + Assign ROMs. > + pci=assign-busses > + Assign busses > + pci=irqmask=MASK > + Set PCI interrupt mask to MASK > + pci=lastbus=NUMBER > + Scan up to NUMBER busses, no matter what the mptable says. > + pci=noacpi > + Don't use ACPI to set up PCI interrupt routing. > + > +IOMMU (input/output memory management unit) > +=========================================== > +Multiple x86-64 PCI-DMA mapping implementations exist, for example: > + > + 1. <lib/dma-direct.c>: use no hardware/software IOMMU at all > + (e.g. because you have < 3 GB memory). > + Kernel boot message: "PCI-DMA: Disabling IOMMU" > + > + 2. <arch/x86/kernel/amd_gart_64.c>: AMD GART based hardware IOMMU. > + Kernel boot message: "PCI-DMA: using GART IOMMU" > + > + 3. <arch/x86_64/kernel/pci-swiotlb.c> : Software IOMMU implementation. Used > + e.g. if there is no hardware IOMMU in the system and it is need because > + you have >3GB memory or told the kernel to us it (iommu=soft)) > + Kernel boot message: "PCI-DMA: Using software bounce buffering > + for IO (SWIOTLB)" > + > + 4. <arch/x86_64/pci-calgary.c> : IBM Calgary hardware IOMMU. Used in IBM > + pSeries and xSeries servers. This hardware IOMMU supports DMA address > + mapping with memory protection, etc. > + Kernel boot message: "PCI-DMA: Using Calgary IOMMU" > + > +:: > + > + iommu=[<size>][,noagp][,off][,force][,noforce] > + [,memaper[=<order>]][,merge][,fullflush][,nomerge] > + [,noaperture][,calgary] > + > +General iommu options: > + > + off > + Don't initialize and use any kind of IOMMU. > + noforce > + Don't force hardware IOMMU usage when it is not needed. (default). > + force > + Force the use of the hardware IOMMU even when it is > + not actually needed (e.g. because < 3 GB memory). > + soft > + Use software bounce buffering (SWIOTLB) (default for > + Intel machines). This can be used to prevent the usage > + of an available hardware IOMMU. > + > +iommu options only relevant to the AMD GART hardware IOMMU: > + > + <size> > + Set the size of the remapping area in bytes. > + allowed > + Overwrite iommu off workarounds for specific chipsets. > + fullflush > + Flush IOMMU on each allocation (default). > + nofullflush > + Don't use IOMMU fullflush. > + memaper[=<order>] > + Allocate an own aperture over RAM with size 32MB<<order. > + (default: order=1, i.e. 64MB) > + merge > + Do scatter-gather (SG) merging. Implies "force" (experimental). > + nomerge > + Don't do scatter-gather (SG) merging. > + noaperture > + Ask the IOMMU not to touch the aperture for AGP. > + noagp > + Don't initialize the AGP driver and use full aperture. > + panic > + Always panic when IOMMU overflows. > + calgary > + Use the Calgary IOMMU if it is available > + > +iommu options only relevant to the software bounce buffering (SWIOTLB) IOMMU > +implementation: > + > + swiotlb=<pages>[,force] > + <pages> > + Prereserve that many 128K pages for the software IO bounce buffering. > + force > + Force all IO through the software TLB. > + > +Settings for the IBM Calgary hardware IOMMU currently found in IBM > +pSeries and xSeries machines > + > + calgary=[64k,128k,256k,512k,1M,2M,4M,8M] > + Set the size of each PCI slot's translation table when using the > + Calgary IOMMU. This is the size of the translation table itself > + in main memory. The smallest table, 64k, covers an IO space of > + 32MB; the largest, 8MB table, can cover an IO space of 4GB. > + Normally the kernel will make the right choice by itself. > + calgary=[translate_empty_slots] > + Enable translation even on slots that have no devices attached to > + them, in case a device will be hotplugged in the future. > + calgary=[disable=<PCI bus number>] > + Disable translation on a given PHB. For > + example, the built-in graphics adapter resides on the first bridge > + (PCI bus number 0); if translation (isolation) is enabled on this > + bridge, X servers that access the hardware directly from user > + space might stop working. Use this option if you have devices that > + are accessed from userspace directly on some PCI host bridge. > + panic > + Always panic when IOMMU overflows > + > + > +Miscellaneous > +============= > + > + nogbpages > + Do not use GB pages for kernel direct mappings. > + gbpages > + Use GB pages for kernel direct mappings. > diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt > deleted file mode 100644 > index abc53886655e..000000000000 > --- a/Documentation/x86/x86_64/boot-options.txt > +++ /dev/null > @@ -1,278 +0,0 @@ > -AMD64 specific boot options > - > -There are many others (usually documented in driver documentation), but > -only the AMD64 specific ones are listed here. > - > -Machine check > - > - Please see Documentation/x86/x86_64/machinecheck for sysfs runtime tunables. > - > - mce=off > - Disable machine check > - mce=no_cmci > - Disable CMCI(Corrected Machine Check Interrupt) that > - Intel processor supports. Usually this disablement is > - not recommended, but it might be handy if your hardware > - is misbehaving. > - Note that you'll get more problems without CMCI than with > - due to the shared banks, i.e. you might get duplicated > - error logs. > - mce=dont_log_ce > - Don't make logs for corrected errors. All events reported > - as corrected are silently cleared by OS. > - This option will be useful if you have no interest in any > - of corrected errors. > - mce=ignore_ce > - Disable features for corrected errors, e.g. polling timer > - and CMCI. All events reported as corrected are not cleared > - by OS and remained in its error banks. > - Usually this disablement is not recommended, however if > - there is an agent checking/clearing corrected errors > - (e.g. BIOS or hardware monitoring applications), conflicting > - with OS's error handling, and you cannot deactivate the agent, > - then this option will be a help. > - mce=no_lmce > - Do not opt-in to Local MCE delivery. Use legacy method > - to broadcast MCEs. > - mce=bootlog > - Enable logging of machine checks left over from booting. > - Disabled by default on AMD Fam10h and older because some BIOS > - leave bogus ones. > - If your BIOS doesn't do that it's a good idea to enable though > - to make sure you log even machine check events that result > - in a reboot. On Intel systems it is enabled by default. > - mce=nobootlog > - Disable boot machine check logging. > - mce=tolerancelevel[,monarchtimeout] (number,number) > - tolerance levels: > - 0: always panic on uncorrected errors, log corrected errors > - 1: panic or SIGBUS on uncorrected errors, log corrected errors > - 2: SIGBUS or log uncorrected errors, log corrected errors > - 3: never panic or SIGBUS, log all errors (for testing only) > - Default is 1 > - Can be also set using sysfs which is preferable. > - monarchtimeout: > - Sets the time in us to wait for other CPUs on machine checks. 0 > - to disable. > - mce=bios_cmci_threshold > - Don't overwrite the bios-set CMCI threshold. This boot option > - prevents Linux from overwriting the CMCI threshold set by the > - bios. Without this option, Linux always sets the CMCI > - threshold to 1. Enabling this may make memory predictive failure > - analysis less effective if the bios sets thresholds for memory > - errors since we will not see details for all errors. > - mce=recovery > - Force-enable recoverable machine check code paths > - > - nomce (for compatibility with i386): same as mce=off > - > - Everything else is in sysfs now. > - > -APICs > - > - apic Use IO-APIC. Default > - > - noapic Don't use the IO-APIC. > - > - disableapic Don't use the local APIC > - > - nolapic Don't use the local APIC (alias for i386 compatibility) > - > - pirq=... See Documentation/x86/i386/IO-APIC.txt > - > - noapictimer Don't set up the APIC timer > - > - no_timer_check Don't check the IO-APIC timer. This can work around > - problems with incorrect timer initialization on some boards. > - apicpmtimer > - Do APIC timer calibration using the pmtimer. Implies > - apicmaintimer. Useful when your PIT timer is totally > - broken. > - > -Timing > - > - notsc > - Deprecated, use tsc=unstable instead. > - > - nohpet > - Don't use the HPET timer. > - > -Idle loop > - > - idle=poll > - Don't do power saving in the idle loop using HLT, but poll for rescheduling > - event. This will make the CPUs eat a lot more power, but may be useful > - to get slightly better performance in multiprocessor benchmarks. It also > - makes some profiling using performance counters more accurate. > - Please note that on systems with MONITOR/MWAIT support (like Intel EM64T > - CPUs) this option has no performance advantage over the normal idle loop. > - It may also interact badly with hyperthreading. > - > -Rebooting > - > - reboot=b[ios] | t[riple] | k[bd] | a[cpi] | e[fi] [, [w]arm | [c]old] > - bios Use the CPU reboot vector for warm reset > - warm Don't set the cold reboot flag > - cold Set the cold reboot flag > - triple Force a triple fault (init) > - kbd Use the keyboard controller. cold reset (default) > - acpi Use the ACPI RESET_REG in the FADT. If ACPI is not configured or the > - ACPI reset does not work, the reboot path attempts the reset using > - the keyboard controller. > - efi Use efi reset_system runtime service. If EFI is not configured or the > - EFI reset does not work, the reboot path attempts the reset using > - the keyboard controller. > - > - Using warm reset will be much faster especially on big memory > - systems because the BIOS will not go through the memory check. > - Disadvantage is that not all hardware will be completely reinitialized > - on reboot so there may be boot problems on some systems. > - > - reboot=force > - > - Don't stop other CPUs on reboot. This can make reboot more reliable > - in some cases. > - > -Non Executable Mappings > - > - noexec=on|off > - > - on Enable(default) > - off Disable > - > -NUMA > - > - numa=off Only set up a single NUMA node spanning all memory. > - > - numa=noacpi Don't parse the SRAT table for NUMA setup > - > - numa=fake=<size>[MG] > - If given as a memory unit, fills all system RAM with nodes of > - size interleaved over physical nodes. > - > - numa=fake=<N> > - If given as an integer, fills all system RAM with N fake nodes > - interleaved over physical nodes. > - > - numa=fake=<N>U > - If given as an integer followed by 'U', it will divide each > - physical node into N emulated nodes. > - > -ACPI > - > - acpi=off Don't enable ACPI > - acpi=ht Use ACPI boot table parsing, but don't enable ACPI > - interpreter > - acpi=force Force ACPI on (currently not needed) > - > - acpi=strict Disable out of spec ACPI workarounds. > - > - acpi_sci={edge,level,high,low} Set up ACPI SCI interrupt. > - > - acpi=noirq Don't route interrupts > - > - acpi=nocmcff Disable firmware first mode for corrected errors. This > - disables parsing the HEST CMC error source to check if > - firmware has set the FF flag. This may result in > - duplicate corrected error reports. > - > -PCI > - > - pci=off Don't use PCI > - pci=conf1 Use conf1 access. > - pci=conf2 Use conf2 access. > - pci=rom Assign ROMs. > - pci=assign-busses Assign busses > - pci=irqmask=MASK Set PCI interrupt mask to MASK > - pci=lastbus=NUMBER Scan up to NUMBER busses, no matter what the mptable says. > - pci=noacpi Don't use ACPI to set up PCI interrupt routing. > - > -IOMMU (input/output memory management unit) > - > - Multiple x86-64 PCI-DMA mapping implementations exist, for example: > - > - 1. <lib/dma-direct.c>: use no hardware/software IOMMU at all > - (e.g. because you have < 3 GB memory). > - Kernel boot message: "PCI-DMA: Disabling IOMMU" > - > - 2. <arch/x86/kernel/amd_gart_64.c>: AMD GART based hardware IOMMU. > - Kernel boot message: "PCI-DMA: using GART IOMMU" > - > - 3. <arch/x86_64/kernel/pci-swiotlb.c> : Software IOMMU implementation. Used > - e.g. if there is no hardware IOMMU in the system and it is need because > - you have >3GB memory or told the kernel to us it (iommu=soft)) > - Kernel boot message: "PCI-DMA: Using software bounce buffering > - for IO (SWIOTLB)" > - > - 4. <arch/x86_64/pci-calgary.c> : IBM Calgary hardware IOMMU. Used in IBM > - pSeries and xSeries servers. This hardware IOMMU supports DMA address > - mapping with memory protection, etc. > - Kernel boot message: "PCI-DMA: Using Calgary IOMMU" > - > - iommu=[<size>][,noagp][,off][,force][,noforce] > - [,memaper[=<order>]][,merge][,fullflush][,nomerge] > - [,noaperture][,calgary] > - > - General iommu options: > - off Don't initialize and use any kind of IOMMU. > - noforce Don't force hardware IOMMU usage when it is not needed. > - (default). > - force Force the use of the hardware IOMMU even when it is > - not actually needed (e.g. because < 3 GB memory). > - soft Use software bounce buffering (SWIOTLB) (default for > - Intel machines). This can be used to prevent the usage > - of an available hardware IOMMU. > - > - iommu options only relevant to the AMD GART hardware IOMMU: > - <size> Set the size of the remapping area in bytes. > - allowed Overwrite iommu off workarounds for specific chipsets. > - fullflush Flush IOMMU on each allocation (default). > - nofullflush Don't use IOMMU fullflush. > - memaper[=<order>] Allocate an own aperture over RAM with size 32MB<<order. > - (default: order=1, i.e. 64MB) > - merge Do scatter-gather (SG) merging. Implies "force" > - (experimental). > - nomerge Don't do scatter-gather (SG) merging. > - noaperture Ask the IOMMU not to touch the aperture for AGP. > - noagp Don't initialize the AGP driver and use full aperture. > - panic Always panic when IOMMU overflows. > - calgary Use the Calgary IOMMU if it is available > - > - iommu options only relevant to the software bounce buffering (SWIOTLB) IOMMU > - implementation: > - swiotlb=<pages>[,force] > - <pages> Prereserve that many 128K pages for the software IO > - bounce buffering. > - force Force all IO through the software TLB. > - > - Settings for the IBM Calgary hardware IOMMU currently found in IBM > - pSeries and xSeries machines: > - > - calgary=[64k,128k,256k,512k,1M,2M,4M,8M] > - calgary=[translate_empty_slots] > - calgary=[disable=<PCI bus number>] > - panic Always panic when IOMMU overflows > - > - 64k,...,8M - Set the size of each PCI slot's translation table > - when using the Calgary IOMMU. This is the size of the translation > - table itself in main memory. The smallest table, 64k, covers an IO > - space of 32MB; the largest, 8MB table, can cover an IO space of > - 4GB. Normally the kernel will make the right choice by itself. > - > - translate_empty_slots - Enable translation even on slots that have > - no devices attached to them, in case a device will be hotplugged > - in the future. > - > - disable=<PCI bus number> - Disable translation on a given PHB. For > - example, the built-in graphics adapter resides on the first bridge > - (PCI bus number 0); if translation (isolation) is enabled on this > - bridge, X servers that access the hardware directly from user > - space might stop working. Use this option if you have devices that > - are accessed from userspace directly on some PCI host bridge. > - > -Miscellaneous > - > - nogbpages > - Do not use GB pages for kernel direct mappings. > - gbpages > - Use GB pages for kernel direct mappings. > diff --git a/Documentation/x86/x86_64/index.rst b/Documentation/x86/x86_64/index.rst > new file mode 100644 > index 000000000000..a8cf7713cac9 > --- /dev/null > +++ b/Documentation/x86/x86_64/index.rst > @@ -0,0 +1,10 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +============== > +x86_64 Support > +============== > + > +.. toctree:: > + :maxdepth: 2 > + > + boot-options Thanks, Mauro