diff options
| author | David Woodhouse <dwmw2@shinybook.infradead.org> | 2005-08-09 11:51:35 -0400 |
|---|---|---|
| committer | David Woodhouse <dwmw2@shinybook.infradead.org> | 2005-08-09 11:51:35 -0400 |
| commit | c973b112c76c9d8fd042991128f218a738cc8d0a (patch) | |
| tree | e813b0da5d0a0e19e06de6462d145a29ad683026 /kernel/module.c | |
| parent | c5fbc3966f48279dbebfde10248c977014aa9988 (diff) | |
| parent | 00dd1e433967872f3997a45d5adf35056fdf2f56 (diff) | |
Merge with /shiny/git/linux-2.6/.git
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/kernel/module.c b/kernel/module.c index 068e271ab3a5..c32995fbd8fd 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
| @@ -250,13 +250,18 @@ static inline unsigned int block_size(int val) | |||
| 250 | /* Created by linker magic */ | 250 | /* Created by linker magic */ |
| 251 | extern char __per_cpu_start[], __per_cpu_end[]; | 251 | extern char __per_cpu_start[], __per_cpu_end[]; |
| 252 | 252 | ||
| 253 | static void *percpu_modalloc(unsigned long size, unsigned long align) | 253 | static void *percpu_modalloc(unsigned long size, unsigned long align, |
| 254 | const char *name) | ||
| 254 | { | 255 | { |
| 255 | unsigned long extra; | 256 | unsigned long extra; |
| 256 | unsigned int i; | 257 | unsigned int i; |
| 257 | void *ptr; | 258 | void *ptr; |
| 258 | 259 | ||
| 259 | BUG_ON(align > SMP_CACHE_BYTES); | 260 | if (align > SMP_CACHE_BYTES) { |
| 261 | printk(KERN_WARNING "%s: per-cpu alignment %li > %i\n", | ||
| 262 | name, align, SMP_CACHE_BYTES); | ||
| 263 | align = SMP_CACHE_BYTES; | ||
| 264 | } | ||
| 260 | 265 | ||
| 261 | ptr = __per_cpu_start; | 266 | ptr = __per_cpu_start; |
| 262 | for (i = 0; i < pcpu_num_used; ptr += block_size(pcpu_size[i]), i++) { | 267 | for (i = 0; i < pcpu_num_used; ptr += block_size(pcpu_size[i]), i++) { |
| @@ -348,7 +353,8 @@ static int percpu_modinit(void) | |||
| 348 | } | 353 | } |
| 349 | __initcall(percpu_modinit); | 354 | __initcall(percpu_modinit); |
| 350 | #else /* ... !CONFIG_SMP */ | 355 | #else /* ... !CONFIG_SMP */ |
| 351 | static inline void *percpu_modalloc(unsigned long size, unsigned long align) | 356 | static inline void *percpu_modalloc(unsigned long size, unsigned long align, |
| 357 | const char *name) | ||
| 352 | { | 358 | { |
| 353 | return NULL; | 359 | return NULL; |
| 354 | } | 360 | } |
| @@ -1644,7 +1650,8 @@ static struct module *load_module(void __user *umod, | |||
| 1644 | if (pcpuindex) { | 1650 | if (pcpuindex) { |
| 1645 | /* We have a special allocation for this section. */ | 1651 | /* We have a special allocation for this section. */ |
| 1646 | percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size, | 1652 | percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size, |
| 1647 | sechdrs[pcpuindex].sh_addralign); | 1653 | sechdrs[pcpuindex].sh_addralign, |
| 1654 | mod->name); | ||
| 1648 | if (!percpu) { | 1655 | if (!percpu) { |
| 1649 | err = -ENOMEM; | 1656 | err = -ENOMEM; |
| 1650 | goto free_mod; | 1657 | goto free_mod; |
