]> Git Repo - linux.git/blobdiff - mm/memory-failure.c
mm: sort out the DEVICE_PRIVATE Kconfig mess
[linux.git] / mm / memory-failure.c
index 8da0334b9ca011f69e0369267ba62952383f9bd1..31e7c7b424a151cf34d14e71ecb644ef4df76f5d 100644 (file)
@@ -1177,16 +1177,12 @@ static int memory_failure_dev_pagemap(unsigned long pfn, int flags,
                goto unlock;
        }
 
-       switch (pgmap->type) {
-       case MEMORY_DEVICE_PRIVATE:
-       case MEMORY_DEVICE_PUBLIC:
+       if (pgmap->type == MEMORY_DEVICE_PRIVATE) {
                /*
                 * TODO: Handle HMM pages which may need coordination
                 * with device-side memory.
                 */
                goto unlock;
-       default:
-               break;
        }
 
        /*
@@ -1730,6 +1726,8 @@ static int soft_offline_huge_page(struct page *page, int flags)
                if (!ret) {
                        if (set_hwpoison_free_buddy_page(page))
                                num_poisoned_pages_inc();
+                       else
+                               ret = -EBUSY;
                }
        }
        return ret;
@@ -1854,11 +1852,8 @@ static int soft_offline_in_use_page(struct page *page, int flags)
 
 static int soft_offline_free_page(struct page *page)
 {
-       int rc = 0;
-       struct page *head = compound_head(page);
+       int rc = dissolve_free_huge_page(page);
 
-       if (PageHuge(head))
-               rc = dissolve_free_huge_page(page);
        if (!rc) {
                if (set_hwpoison_free_buddy_page(page))
                        num_poisoned_pages_inc();
This page took 0.028276 seconds and 4 git commands to generate.