Files
android_kernel_xiaomi_sm8450/include/linux
Dan Williams 6100e34b25 mm, memory_failure: Teach memory_failure() about dev_pagemap pages
mce: Uncorrected hardware memory error in user-access at af34214200
    {1}[Hardware Error]: It has been corrected by h/w and requires no further action
    mce: [Hardware Error]: Machine check events logged
    {1}[Hardware Error]: event severity: corrected
    Memory failure: 0xaf34214: reserved kernel page still referenced by 1 users
    [..]
    Memory failure: 0xaf34214: recovery action for reserved kernel page: Failed
    mce: Memory error not recovered

In contrast to typical memory, dev_pagemap pages may be dax mapped. With
dax there is no possibility to map in another page dynamically since dax
establishes 1:1 physical address to file offset associations. Also
dev_pagemap pages associated with NVDIMM / persistent memory devices can
internal remap/repair addresses with poison. While memory_failure()
assumes that it can discard typical poisoned pages and keep them
unmapped indefinitely, dev_pagemap pages may be returned to service
after the error is cleared.

Teach memory_failure() to detect and handle MEMORY_DEVICE_HOST
dev_pagemap pages that have poison consumed by userspace. Mark the
memory as UC instead of unmapping it completely to allow ongoing access
via the device driver (nd_pmem). Later, nd_pmem will grow support for
marking the page back to WB when the error is cleared.

Cc: Jan Kara <jack@suse.cz>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
2018-07-23 10:38:06 -07:00
..
2018-05-25 18:23:56 +02:00
2018-05-23 14:01:03 +02:00
2018-06-05 10:48:09 -04:00
2018-06-07 14:23:08 +01:00
2018-06-07 17:34:35 -07:00
2018-05-26 09:16:44 +02:00
2018-06-15 18:10:01 -03:00
2018-04-20 17:18:35 -07:00
2018-04-30 13:25:14 +01:00
2018-06-14 17:01:45 +02:00
2018-03-16 10:56:13 +01:00
2018-05-28 17:41:02 +02:00
2018-05-09 17:25:13 +02:00
2018-06-15 18:10:01 -03:00
2018-03-16 15:45:51 -07:00
2018-03-16 10:55:47 +01:00
2018-03-26 15:09:38 +02:00
2018-04-27 14:34:51 +02:00
2018-06-01 07:38:16 -06:00
2018-03-26 15:56:44 +02:00
2018-06-15 18:10:01 -03:00
2018-04-26 09:02:01 -06:00
2018-06-07 17:34:37 -07:00
2018-05-22 13:42:16 +02:00
2018-02-22 21:13:03 +01:00
2018-03-26 08:53:43 -06:00
2018-01-17 11:30:16 +00:00
2018-05-09 12:21:46 -05:00
2018-06-21 17:39:18 +02:00
2018-04-11 10:28:38 -07:00
2018-04-12 09:41:19 -07:00
2018-06-05 08:50:16 -04:00
2018-06-15 07:55:25 +09:00
2018-06-07 17:34:35 -07:00
2018-04-11 10:28:32 -07:00
2018-06-07 17:34:37 -07:00
2018-06-07 17:34:39 -07:00
2018-03-26 13:14:43 -04:00
2018-03-26 13:14:43 -04:00
2018-01-28 22:17:24 -05:00
2018-06-01 14:37:35 +02:00
2018-01-17 15:25:50 +01:00
2018-06-07 17:34:36 -07:00
2018-04-11 10:28:39 -07:00
2018-01-31 17:18:37 -08:00
2018-06-06 16:10:45 -05:00
2018-05-15 15:51:38 +01:00
2018-06-07 17:34:35 -07:00
2018-05-31 00:13:56 +08:00
2018-05-11 17:28:45 -07:00
2018-05-11 17:28:45 -07:00
2018-06-04 17:28:20 -04:00
2018-03-01 08:33:05 -07:00
2018-06-29 08:48:06 -06:00
2018-05-04 12:48:54 -07:00
2018-04-30 05:14:55 -07:00
2018-06-07 17:34:35 -07:00
2018-05-03 15:55:23 -07:00
2018-01-15 12:07:46 -08:00
2018-04-16 14:25:08 -06:00
2018-02-06 18:32:47 -08:00
2018-01-09 16:27:43 +01:00
2018-05-18 11:40:27 -04:00
2018-05-19 13:57:31 +02:00
2018-05-19 13:57:31 +02:00
2018-04-26 15:08:04 -04:00
2018-02-06 18:32:44 -08:00
2018-05-14 09:51:34 -04:00