Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64...
[linux-2.6-block.git] / mm / hmm.c
index ea19742a5d60b1a6270629a024d88a13b9c5f3c1..320545b98ff55997029476f32e09dbf5d4f5f009 100644 (file)
--- a/mm/hmm.c
+++ b/mm/hmm.c
@@ -418,7 +418,7 @@ again:
                }
 
                if (!pte_present(pte)) {
-                       swp_entry_t entry;
+                       swp_entry_t entry = pte_to_swp_entry(pte);
 
                        if (!non_swap_entry(entry)) {
                                if (hmm_vma_walk->fault)
@@ -426,8 +426,6 @@ again:
                                continue;
                        }
 
-                       entry = pte_to_swp_entry(pte);
-
                        /*
                         * This is a special swap entry, ignore migration, use
                         * device and report anything else as error.
@@ -838,10 +836,10 @@ static void hmm_devmem_release(struct device *dev, void *data)
 
        mem_hotplug_begin();
        if (resource->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY)
-               __remove_pages(zone, start_pfn, npages);
+               __remove_pages(zone, start_pfn, npages, NULL);
        else
                arch_remove_memory(start_pfn << PAGE_SHIFT,
-                                  npages << PAGE_SHIFT);
+                                  npages << PAGE_SHIFT, NULL);
        mem_hotplug_done();
 
        hmm_devmem_radix_release(resource);
@@ -882,7 +880,7 @@ static int hmm_devmem_pages_create(struct hmm_devmem *devmem)
        else
                devmem->pagemap.type = MEMORY_DEVICE_PRIVATE;
 
-       devmem->pagemap.res = devmem->resource;
+       devmem->pagemap.res = *devmem->resource;
        devmem->pagemap.page_fault = hmm_devmem_fault;
        devmem->pagemap.page_free = hmm_devmem_free;
        devmem->pagemap.dev = devmem->device;
@@ -931,17 +929,18 @@ static int hmm_devmem_pages_create(struct hmm_devmem *devmem)
         * want the linear mapping and thus use arch_add_memory().
         */
        if (devmem->pagemap.type == MEMORY_DEVICE_PUBLIC)
-               ret = arch_add_memory(nid, align_start, align_size, false);
+               ret = arch_add_memory(nid, align_start, align_size, NULL,
+                               false);
        else
                ret = add_pages(nid, align_start >> PAGE_SHIFT,
-                               align_size >> PAGE_SHIFT, false);
+                               align_size >> PAGE_SHIFT, NULL, false);
        if (ret) {
                mem_hotplug_done();
                goto error_add_memory;
        }
        move_pfn_range_to_zone(&NODE_DATA(nid)->node_zones[ZONE_DEVICE],
                                align_start >> PAGE_SHIFT,
-                               align_size >> PAGE_SHIFT);
+                               align_size >> PAGE_SHIFT, NULL);
        mem_hotplug_done();
 
        for (pfn = devmem->pfn_first; pfn < devmem->pfn_last; pfn++) {