mm, madvise_inject_error: Disable MADV_SOFT_OFFLINE for ZONE_DEVICE pages
authorDan Williams <dan.j.williams@intel.com>
Sat, 14 Jul 2018 04:49:56 +0000 (21:49 -0700)
committerDave Jiang <dave.jiang@intel.com>
Fri, 20 Jul 2018 18:21:53 +0000 (11:21 -0700)
Given that dax / device-mapped pages are never subject to page
allocations remove them from consideration by the soft-offline
mechanism.

Reported-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
mm/memory-failure.c

index 9d142b9b86dcd970d46a2b8124f065bd5eb29391..988f977db3d251c3b8891307eba3befa6feee87c 100644 (file)
@@ -1751,6 +1751,14 @@ int soft_offline_page(struct page *page, int flags)
        int ret;
        unsigned long pfn = page_to_pfn(page);
 
+       if (is_zone_device_page(page)) {
+               pr_debug_ratelimited("soft_offline: %#lx page is device page\n",
+                               pfn);
+               if (flags & MF_COUNT_INCREASED)
+                       put_page(page);
+               return -EIO;
+       }
+
        if (PageHWPoison(page)) {
                pr_info("soft offline: %#lx page already poisoned\n", pfn);
                if (flags & MF_COUNT_INCREASED)