drm/bridge: analogix: fix edid not works
[firefly-linux-kernel-4.4.55.git] / mm / percpu-km.c
index 89633fefc6a2b39d8d32d0204846f4ab8b303930..10e3d0b8a86d1bbbd9749bccb9666d4251155450 100644 (file)
 
 #include <linux/log2.h>
 
-static int pcpu_populate_chunk(struct pcpu_chunk *chunk, int off, int size)
+static int pcpu_populate_chunk(struct pcpu_chunk *chunk,
+                              int page_start, int page_end)
 {
-       unsigned int cpu;
-
-       for_each_possible_cpu(cpu)
-               memset((void *)pcpu_chunk_addr(chunk, cpu, 0) + off, 0, size);
-
        return 0;
 }
 
-static void pcpu_depopulate_chunk(struct pcpu_chunk *chunk, int off, int size)
+static void pcpu_depopulate_chunk(struct pcpu_chunk *chunk,
+                                 int page_start, int page_end)
 {
        /* nada */
 }
@@ -70,6 +67,11 @@ static struct pcpu_chunk *pcpu_create_chunk(void)
 
        chunk->data = pages;
        chunk->base_addr = page_address(pages) - pcpu_group_offsets[0];
+
+       spin_lock_irq(&pcpu_lock);
+       pcpu_chunk_populated(chunk, 0, nr_pages);
+       spin_unlock_irq(&pcpu_lock);
+
        return chunk;
 }