Merge tag 'docs-5.3' of git://git.lwn.net/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 9 Jul 2019 19:34:26 +0000 (12:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 9 Jul 2019 19:34:26 +0000 (12:34 -0700)
Pull Documentation updates from Jonathan Corbet:
 "It's been a relatively busy cycle for docs:

   - A fair pile of RST conversions, many from Mauro. These create more
     than the usual number of simple but annoying merge conflicts with
     other trees, unfortunately. He has a lot more of these waiting on
     the wings that, I think, will go to you directly later on.

   - A new document on how to use merges and rebases in kernel repos,
     and one on Spectre vulnerabilities.

   - Various improvements to the build system, including automatic
     markup of function() references because some people, for reasons I
     will never understand, were of the opinion that
     :c:func:``function()`` is unattractive and not fun to type.

   - We now recommend using sphinx 1.7, but still support back to 1.4.

   - Lots of smaller improvements, warning fixes, typo fixes, etc"

* tag 'docs-5.3' of git://git.lwn.net/linux: (129 commits)
  docs: automarkup.py: ignore exceptions when seeking for xrefs
  docs: Move binderfs to admin-guide
  Disable Sphinx SmartyPants in HTML output
  doc: RCU callback locks need only _bh, not necessarily _irq
  docs: format kernel-parameters -- as code
  Doc : doc-guide : Fix a typo
  platform: x86: get rid of a non-existent document
  Add the RCU docs to the core-api manual
  Documentation: RCU: Add TOC tree hooks
  Documentation: RCU: Rename txt files to rst
  Documentation: RCU: Convert RCU UP systems to reST
  Documentation: RCU: Convert RCU linked list to reST
  Documentation: RCU: Convert RCU basic concepts to reST
  docs: filesystems: Remove uneeded .rst extension on toctables
  scripts/sphinx-pre-install: fix out-of-tree build
  docs: zh_CN: submitting-drivers.rst: Remove a duplicated Documentation/
  Documentation: PGP: update for newer HW devices
  Documentation: Add section about CPU vulnerabilities for Spectre
  Documentation: platform: Delete x86-laptop-drivers.txt
  docs: Note that :c:func: should no longer be used
  ...

44 files changed:
1  2 
Documentation/ABI/testing/sysfs-devices-system-cpu
Documentation/admin-guide/kernel-parameters.txt
Documentation/arm64/elf_hwcaps.rst
Documentation/arm64/sve.rst
Documentation/core-api/timekeeping.rst
Documentation/driver-api/gpio/consumer.rst
Documentation/fault-injection/nvme-fault-injection.rst
Documentation/memory-barriers.txt
Documentation/scheduler/sched-deadline.rst
Documentation/scheduler/sched-design-CFS.rst
Documentation/scheduler/sched-rt-group.rst
Documentation/security/keys/core.rst
Documentation/sysctl/kernel.txt
Documentation/translations/ko_KR/memory-barriers.txt
Documentation/virtual/kvm/api.txt
Documentation/vm/numa.rst
Documentation/x86/x86_64/fake-numa-for-cpusets.rst
MAINTAINERS
arch/arm/Kconfig
arch/arm64/Kconfig
arch/arm64/include/uapi/asm/sigcontext.h
arch/riscv/Kconfig
arch/x86/Kconfig
arch/x86/Kconfig.debug
arch/x86/boot/header.S
arch/x86/entry/entry_64.S
arch/x86/kernel/kexec-bzimage64.c
arch/x86/kernel/kprobes/core.c
drivers/acpi/Kconfig
drivers/firmware/Kconfig
drivers/md/dm-init.c
drivers/pcmcia/ds.c
drivers/regulator/core.c
drivers/scsi/hpsa.c
drivers/vhost/vhost.c
drivers/video/fbdev/Kconfig
include/linux/regmap.h
include/pcmcia/ds.h
include/pcmcia/ss.h
init/Kconfig
kernel/sched/deadline.c
lib/Kconfig.debug
net/netfilter/Kconfig
sound/soc/sof/ops.h

@@@ -203,34 -178,21 +178,29 @@@ HWCAP_ILRCP
      Functionality implied by ID_AA64ISAR1_EL1.LRCPC == 0b0010.
  
  HWCAP_FLAGM
      Functionality implied by ID_AA64ISAR0_EL1.TS == 0b0001.
  
 +HWCAP2_FLAGM2
 +
 +    Functionality implied by ID_AA64ISAR0_EL1.TS == 0b0010.
 +
  HWCAP_SSBS
      Functionality implied by ID_AA64PFR1_EL1.SSBS == 0b0010.
  
  HWCAP_PACA
      Functionality implied by ID_AA64ISAR1_EL1.APA == 0b0001 or
      ID_AA64ISAR1_EL1.API == 0b0001, as described by
-     Documentation/arm64/pointer-authentication.txt.
+     Documentation/arm64/pointer-authentication.rst.
  
  HWCAP_PACG
      Functionality implied by ID_AA64ISAR1_EL1.GPA == 0b0001 or
      ID_AA64ISAR1_EL1.GPI == 0b0001, as described by
-     Documentation/arm64/pointer-authentication.txt.
+     Documentation/arm64/pointer-authentication.rst.
  
 +HWCAP2_FRINT
 +
 +    Functionality implied by ID_AA64ISAR1_EL1.FRINTTS == 0b0001.
 +
  
  4. Unused AT_HWCAP bits
  -----------------------
Simple merge
@@@ -113,9 -108,10 +113,9 @@@ Some additional variants exist for mor
                void ktime_get_coarse_boottime_ts64( struct timespec64 * )
                void ktime_get_coarse_real_ts64( struct timespec64 * )
                void ktime_get_coarse_clocktai_ts64( struct timespec64 * )
 -              void ktime_get_coarse_raw_ts64( struct timespec64 * )
  
        These are quicker than the non-coarse versions, but less accurate,
-       corresponding to CLOCK_MONONOTNIC_COARSE and CLOCK_REALTIME_COARSE
+       corresponding to CLOCK_MONOTONIC_COARSE and CLOCK_REALTIME_COARSE
        in user space, along with the equivalent boottime/tai/raw
        timebase not available in user space.
  
index 0000000,bbb1bf3..cdb2e82
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,120 +1,178 @@@
+ NVMe Fault Injection
+ ====================
+ Linux's fault injection framework provides a systematic way to support
+ error injection via debugfs in the /sys/kernel/debug directory. When
+ enabled, the default NVME_SC_INVALID_OPCODE with no retry will be
+ injected into the nvme_end_request. Users can change the default status
+ code and no retry flag via the debugfs. The list of Generic Command
+ Status can be found in include/linux/nvme.h
+ Following examples show how to inject an error into the nvme.
+ First, enable CONFIG_FAULT_INJECTION_DEBUG_FS kernel config,
+ recompile the kernel. After booting up the kernel, do the
+ following.
+ Example 1: Inject default status code with no retry
+ ---------------------------------------------------
+ ::
+   mount /dev/nvme0n1 /mnt
+   echo 1 > /sys/kernel/debug/nvme0n1/fault_inject/times
+   echo 100 > /sys/kernel/debug/nvme0n1/fault_inject/probability
+   cp a.file /mnt
+ Expected Result::
+   cp: cannot stat ‘/mnt/a.file’: Input/output error
+ Message from dmesg::
+   FAULT_INJECTION: forcing a failure.
+   name fault_inject, interval 1, probability 100, space 0, times 1
+   CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.15.0-rc8+ #2
+   Hardware name: innotek GmbH VirtualBox/VirtualBox,
+   BIOS VirtualBox 12/01/2006
+   Call Trace:
+     <IRQ>
+     dump_stack+0x5c/0x7d
+     should_fail+0x148/0x170
+     nvme_should_fail+0x2f/0x50 [nvme_core]
+     nvme_process_cq+0xe7/0x1d0 [nvme]
+     nvme_irq+0x1e/0x40 [nvme]
+     __handle_irq_event_percpu+0x3a/0x190
+     handle_irq_event_percpu+0x30/0x70
+     handle_irq_event+0x36/0x60
+     handle_fasteoi_irq+0x78/0x120
+     handle_irq+0xa7/0x130
+     ? tick_irq_enter+0xa8/0xc0
+     do_IRQ+0x43/0xc0
+     common_interrupt+0xa2/0xa2
+     </IRQ>
+   RIP: 0010:native_safe_halt+0x2/0x10
+   RSP: 0018:ffffffff82003e90 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffdd
+   RAX: ffffffff817a10c0 RBX: ffffffff82012480 RCX: 0000000000000000
+   RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
+   RBP: 0000000000000000 R08: 000000008e38ce64 R09: 0000000000000000
+   R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff82012480
+   R13: ffffffff82012480 R14: 0000000000000000 R15: 0000000000000000
+     ? __sched_text_end+0x4/0x4
+     default_idle+0x18/0xf0
+     do_idle+0x150/0x1d0
+     cpu_startup_entry+0x6f/0x80
+     start_kernel+0x4c4/0x4e4
+     ? set_init_arg+0x55/0x55
+     secondary_startup_64+0xa5/0xb0
+     print_req_error: I/O error, dev nvme0n1, sector 9240
+   EXT4-fs error (device nvme0n1): ext4_find_entry:1436:
+   inode #2: comm cp: reading directory lblock 0
+ Example 2: Inject default status code with retry
+ ------------------------------------------------
+ ::
+   mount /dev/nvme0n1 /mnt
+   echo 1 > /sys/kernel/debug/nvme0n1/fault_inject/times
+   echo 100 > /sys/kernel/debug/nvme0n1/fault_inject/probability
+   echo 1 > /sys/kernel/debug/nvme0n1/fault_inject/status
+   echo 0 > /sys/kernel/debug/nvme0n1/fault_inject/dont_retry
+   cp a.file /mnt
+ Expected Result::
+   command success without error
+ Message from dmesg::
+   FAULT_INJECTION: forcing a failure.
+   name fault_inject, interval 1, probability 100, space 0, times 1
+   CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.15.0-rc8+ #4
+   Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
+   Call Trace:
+     <IRQ>
+     dump_stack+0x5c/0x7d
+     should_fail+0x148/0x170
+     nvme_should_fail+0x30/0x60 [nvme_core]
+     nvme_loop_queue_response+0x84/0x110 [nvme_loop]
+     nvmet_req_complete+0x11/0x40 [nvmet]
+     nvmet_bio_done+0x28/0x40 [nvmet]
+     blk_update_request+0xb0/0x310
+     blk_mq_end_request+0x18/0x60
+     flush_smp_call_function_queue+0x3d/0xf0
+     smp_call_function_single_interrupt+0x2c/0xc0
+     call_function_single_interrupt+0xa2/0xb0
+     </IRQ>
+   RIP: 0010:native_safe_halt+0x2/0x10
+   RSP: 0018:ffffc9000068bec0 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff04
+   RAX: ffffffff817a10c0 RBX: ffff88011a3c9680 RCX: 0000000000000000
+   RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
+   RBP: 0000000000000001 R08: 000000008e38c131 R09: 0000000000000000
+   R10: 0000000000000000 R11: 0000000000000000 R12: ffff88011a3c9680
+   R13: ffff88011a3c9680 R14: 0000000000000000 R15: 0000000000000000
+     ? __sched_text_end+0x4/0x4
+     default_idle+0x18/0xf0
+     do_idle+0x150/0x1d0
+     cpu_startup_entry+0x6f/0x80
+     start_secondary+0x187/0x1e0
+     secondary_startup_64+0xa5/0xb0
++
++Example 3: Inject an error into the 10th admin command
++------------------------------------------------------
++
++::
++
++  echo 100 > /sys/kernel/debug/nvme0/fault_inject/probability
++  echo 10 > /sys/kernel/debug/nvme0/fault_inject/space
++  echo 1 > /sys/kernel/debug/nvme0/fault_inject/times
++  nvme reset /dev/nvme0
++
++Expected Result::
++
++  After NVMe controller reset, the reinitialization may or may not succeed.
++  It depends on which admin command is actually forced to fail.
++
++Message from dmesg::
++
++  nvme nvme0: resetting controller
++  FAULT_INJECTION: forcing a failure.
++  name fault_inject, interval 1, probability 100, space 1, times 1
++  CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.2.0-rc2+ #2
++  Hardware name: MSI MS-7A45/B150M MORTAR ARCTIC (MS-7A45), BIOS 1.50 04/25/2017
++  Call Trace:
++   <IRQ>
++   dump_stack+0x63/0x85
++   should_fail+0x14a/0x170
++   nvme_should_fail+0x38/0x80 [nvme_core]
++   nvme_irq+0x129/0x280 [nvme]
++   ? blk_mq_end_request+0xb3/0x120
++   __handle_irq_event_percpu+0x84/0x1a0
++   handle_irq_event_percpu+0x32/0x80
++   handle_irq_event+0x3b/0x60
++   handle_edge_irq+0x7f/0x1a0
++   handle_irq+0x20/0x30
++   do_IRQ+0x4e/0xe0
++   common_interrupt+0xf/0xf
++   </IRQ>
++  RIP: 0010:cpuidle_enter_state+0xc5/0x460
++  Code: ff e8 8f 5f 86 ff 80 7d c7 00 74 17 9c 58 0f 1f 44 00 00 f6 c4 02 0f 85 69 03 00 00 31 ff e8 62 aa 8c ff fb 66 0f 1f 44 00 00 <45> 85 ed 0f 88 37 03 00 00 4c 8b 45 d0 4c 2b 45 b8 48 ba cf f7 53
++  RSP: 0018:ffffffff88c03dd0 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffdc
++  RAX: ffff9dac25a2ac80 RBX: ffffffff88d53760 RCX: 000000000000001f
++  RDX: 0000000000000000 RSI: 000000002d958403 RDI: 0000000000000000
++  RBP: ffffffff88c03e18 R08: fffffff75e35ffb7 R09: 00000a49a56c0b48
++  R10: ffffffff88c03da0 R11: 0000000000001b0c R12: ffff9dac25a34d00
++  R13: 0000000000000006 R14: 0000000000000006 R15: ffffffff88d53760
++   cpuidle_enter+0x2e/0x40
++   call_cpuidle+0x23/0x40
++   do_idle+0x201/0x280
++   cpu_startup_entry+0x1d/0x20
++   rest_init+0xaa/0xb0
++   arch_call_rest_init+0xe/0x1b
++   start_kernel+0x51c/0x53b
++   x86_64_start_reservations+0x24/0x26
++   x86_64_start_kernel+0x74/0x77
++   secondary_startup_64+0xa4/0xb0
++  nvme nvme0: Could not set queue count (16385)
++  nvme nvme0: IO queues not created
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -15,10 -15,10 +15,10 @@@ assign them to cpusets and their attach
  amount of system memory that are available to a certain class of tasks.
  
  For more information on the features of cpusets, see
 -Documentation/cgroup-v1/cpusets.txt.
 +Documentation/cgroup-v1/cpusets.rst.
  There are a number of different configurations you can use for your needs.  For
  more information on the numa=fake command line option and its various ways of
- configuring fake nodes, see Documentation/x86/x86_64/boot-options.txt.
+ configuring fake nodes, see Documentation/x86/x86_64/boot-options.rst.
  
  For the purposes of this introduction, we'll assume a very primitive NUMA
  emulation setup of "numa=fake=4*512,".  This will split our system memory into
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc init/Kconfig
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge