scsi: cxgb4i: Fix TLS dependency
[linux-2.6-microblaze.git] / mm / zsmalloc.c
index c36fdff..918c7b0 100644 (file)
@@ -1122,10 +1122,16 @@ static inline int __zs_cpu_up(struct mapping_area *area)
         */
        if (area->vm)
                return 0;
-       area->vm = alloc_vm_area(PAGE_SIZE * 2, NULL);
+       area->vm = get_vm_area(PAGE_SIZE * 2, 0);
        if (!area->vm)
                return -ENOMEM;
-       return 0;
+
+       /*
+        * Populate ptes in advance to avoid pte allocation with GFP_KERNEL
+        * in non-preemtible context of zs_map_object.
+        */
+       return apply_to_page_range(&init_mm, (unsigned long)area->vm->addr,
+                       PAGE_SIZE * 2, NULL, NULL);
 }
 
 static inline void __zs_cpu_down(struct mapping_area *area)