|
@@ -480,21 +480,6 @@ static void percpu_modfree(void *freeme)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static unsigned int find_pcpusec(Elf_Ehdr *hdr,
|
|
|
- Elf_Shdr *sechdrs,
|
|
|
- const char *secstrings)
|
|
|
-{
|
|
|
- return find_sec(hdr, sechdrs, secstrings, ".data.percpu");
|
|
|
-}
|
|
|
-
|
|
|
-static void percpu_modcopy(void *pcpudest, const void *from, unsigned long size)
|
|
|
-{
|
|
|
- int cpu;
|
|
|
-
|
|
|
- for_each_possible_cpu(cpu)
|
|
|
- memcpy(pcpudest + per_cpu_offset(cpu), from, size);
|
|
|
-}
|
|
|
-
|
|
|
static int percpu_modinit(void)
|
|
|
{
|
|
|
pcpu_num_used = 2;
|
|
@@ -513,7 +498,24 @@ static int percpu_modinit(void)
|
|
|
return 0;
|
|
|
}
|
|
|
__initcall(percpu_modinit);
|
|
|
+
|
|
|
+static unsigned int find_pcpusec(Elf_Ehdr *hdr,
|
|
|
+ Elf_Shdr *sechdrs,
|
|
|
+ const char *secstrings)
|
|
|
+{
|
|
|
+ return find_sec(hdr, sechdrs, secstrings, ".data.percpu");
|
|
|
+}
|
|
|
+
|
|
|
+static void percpu_modcopy(void *pcpudest, const void *from, unsigned long size)
|
|
|
+{
|
|
|
+ int cpu;
|
|
|
+
|
|
|
+ for_each_possible_cpu(cpu)
|
|
|
+ memcpy(pcpudest + per_cpu_offset(cpu), from, size);
|
|
|
+}
|
|
|
+
|
|
|
#else /* ... !CONFIG_SMP */
|
|
|
+
|
|
|
static inline void *percpu_modalloc(unsigned long size, unsigned long align,
|
|
|
const char *name)
|
|
|
{
|
|
@@ -535,6 +537,7 @@ static inline void percpu_modcopy(void *pcpudst, const void *src,
|
|
|
/* pcpusec should be 0, and size of that section should be 0. */
|
|
|
BUG_ON(size != 0);
|
|
|
}
|
|
|
+
|
|
|
#endif /* CONFIG_SMP */
|
|
|
|
|
|
#define MODINFO_ATTR(field) \
|