linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/13] powerpc: implement machine check safe memcpy
@ 2019-06-21  4:55 Santosh Sivaraj
  2019-06-21  4:55 ` [PATCH 01/13] powerpc/mce: Make machine_check_ue_event() static Santosh Sivaraj
                   ` (12 more replies)
  0 siblings, 13 replies; 21+ messages in thread
From: Santosh Sivaraj @ 2019-06-21  4:55 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Aneesh Kumar K.V, Mahesh Salgaonkar, Nicholas Piggin,
	Chandan Rajendra, Reza Arbab

During a memcpy from a pmem device, if a machine check exception is
generated we end up in a panic. In case of fsdax read, this should
only result in a -EIO. Avoid MCE by implementing memcpy_mcsafe.

Before this patch series:

```
bash-4.4# mount -o dax /dev/pmem0 /mnt/pmem/
[ 7621.714094] Disabling lock debugging due to kernel taint
[ 7621.714099] MCE: CPU0: machine check (Severe) Host UE Load/Store [Not recovered]
[ 7621.714104] MCE: CPU0: NIP: [c000000000088978] memcpy_power7+0x418/0x7e0
[ 7621.714107] MCE: CPU0: Hardware error
[ 7621.714112] opal: Hardware platform error: Unrecoverable Machine Check exception
[ 7621.714118] CPU: 0 PID: 1368 Comm: mount Tainted: G   M              5.2.0-rc5-00239-g241e39004581 #50
[ 7621.714123] NIP:  c000000000088978 LR: c0000000008e16f8 CTR: 00000000000001de
[ 7621.714129] REGS: c0000000fffbfd70 TRAP: 0200   Tainted: G   M               (5.2.0-rc5-00239-g241e39004581)
[ 7621.714131] MSR:  9000000002209033 <SF,HV,VEC,EE,ME,IR,DR,RI,LE>  CR: 24428840  XER: 00040000
[ 7621.714160] CFAR: c0000000000889a8 DAR: deadbeefdeadbeef DSISR: 00008000 IRQMASK: 0
[ 7621.714171] GPR00: 000000000e000000 c0000000f0b8b1e0 c0000000012cf100 c0000000ed8e1100 
[ 7621.714186] GPR04: c000020000001100 0000000000010000 0000000000000200 03fffffff1272000 
[ 7621.714201] GPR08: 0000000080000000 0000000000000010 0000000000000020 0000000000000030 
[ 7621.714216] GPR12: 0000000000000040 00007fffb8c6d390 0000000000000050 0000000000000060 
[ 7621.714232] GPR16: 0000000000000070 0000000000000000 0000000000000001 c0000000f0b8b960 
[ 7621.714247] GPR20: 0000000000000001 c0000000f0b8b940 0000000000000001 0000000000010000 
[ 7621.714262] GPR24: c000000001382560 c00c0000003b6380 c00c0000003b6380 0000000000010000 
[ 7621.714277] GPR28: 0000000000000000 0000000000010000 c000020000000000 0000000000010000 
[ 7621.714294] NIP [c000000000088978] memcpy_power7+0x418/0x7e0
[ 7621.714298] LR [c0000000008e16f8] pmem_do_bvec+0xf8/0x430
... <snip> ...
```

After this patch series:

```
bash-4.4# mount -o dax /dev/pmem0 /mnt/pmem/
[25302.883978] Buffer I/O error on dev pmem0, logical block 0, async page read
[25303.020816] EXT4-fs (pmem0): DAX enabled. Warning: EXPERIMENTAL, use at your own risk
[25303.021236] EXT4-fs (pmem0): Can't read superblock on 2nd try
[25303.152515] EXT4-fs (pmem0): DAX enabled. Warning: EXPERIMENTAL, use at your own risk
[25303.284031] EXT4-fs (pmem0): DAX enabled. Warning: EXPERIMENTAL, use at your own risk
[25304.084100] UDF-fs: bad mount option "dax" or missing value
mount: /mnt/pmem: wrong fs type, bad option, bad superblock on /dev/pmem0, missing codepage or helper program, or other error.
```

MCE is injected on a pmem address using mambo.
---

Balbir Singh (2):
  powerpc/mce: Bug fixes for MCE handling in kernel space
  powerpc/memcpy: Add memcpy_mcsafe for pmem

Reza Arbab (9):
  powerpc/mce: Make machine_check_ue_event() static
  powerpc/mce: Add MCE notification chain
  powerpc/mce: Move machine_check_ue_event() call
  powerpc/mce: Allow notifier callback to handle MCE
  powerpc/mce: Do not process notifier-handled UE events
  powerpc/mce: Add fixup address to UE events
  powerpc/mce: Handle memcpy_mcsafe()
  powerpc/mce: Enable MCE notifiers in external modules
  powerpc/64s: Save r13 in machine_check_common_early

Santosh Sivaraj (2):
  powerpc/memcpy_mcsafe: return remaining bytes
  powerpc: add machine check safe copy_to_user

 arch/powerpc/Kconfig                      |   1 +
 arch/powerpc/include/asm/asm-prototypes.h |   1 +
 arch/powerpc/include/asm/mce.h            |  13 +-
 arch/powerpc/include/asm/string.h         |   2 +
 arch/powerpc/include/asm/uaccess.h        |  12 ++
 arch/powerpc/kernel/exceptions-64s.S      |  14 ++
 arch/powerpc/kernel/mce.c                 | 102 +++++++++-
 arch/powerpc/kernel/mce_power.c           |  26 ++-
 arch/powerpc/lib/Makefile                 |   2 +-
 arch/powerpc/lib/memcpy_mcsafe_64.S       | 226 ++++++++++++++++++++++
 arch/powerpc/platforms/pseries/ras.c      |   6 +-
 11 files changed, 386 insertions(+), 19 deletions(-)
 create mode 100644 arch/powerpc/lib/memcpy_mcsafe_64.S

-- 
2.20.1


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2019-06-29  8:57 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-21  4:55 [PATCH 00/13] powerpc: implement machine check safe memcpy Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 01/13] powerpc/mce: Make machine_check_ue_event() static Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 02/13] powerpc/mce: Bug fixes for MCE handling in kernel space Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 03/13] powerpc/mce: Add MCE notification chain Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 04/13] powerpc/mce: Move machine_check_ue_event() call Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 05/13] powerpc/mce: Allow notifier callback to handle MCE Santosh Sivaraj
2019-06-21  7:05   ` Mahesh Jagannath Salgaonkar
2019-06-23  2:14     ` Reza Arbab
2019-06-24  5:19       ` Mahesh Jagannath Salgaonkar
2019-06-21  4:55 ` [PATCH 06/13] powerpc/mce: Do not process notifier-handled UE events Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 07/13] powerpc/mce: Add fixup address to " Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 08/13] powerpc/memcpy: Add memcpy_mcsafe for pmem Santosh Sivaraj
2019-06-29  8:55   ` christophe leroy
2019-06-21  4:55 ` [PATCH 09/13] powerpc/mce: Handle memcpy_mcsafe() Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 10/13] powerpc/mce: Enable MCE notifiers in external modules Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 11/13] powerpc/64s: Save r13 in machine_check_common_early Santosh Sivaraj
2019-06-21 11:47   ` Mahesh J Salgaonkar
2019-06-21 23:21     ` Nicholas Piggin
2019-06-23  2:33       ` Reza Arbab
2019-06-21  4:55 ` [PATCH 12/13] powerpc/memcpy_mcsafe: return remaining bytes Santosh Sivaraj
2019-06-21  4:55 ` [PATCH 13/13] powerpc: add machine check safe copy_to_user Santosh Sivaraj

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).