diff options
author | Pekka Enberg <penberg@cs.helsinki.fi> | 2009-07-01 04:51:18 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-07-01 05:19:47 -0400 |
commit | a70c352a37671fe1ebcbd317b439aa4760f4ccb7 (patch) | |
tree | 9a66d403f6e4302f8105ecccbb0f42ed072cdb25 /drivers/xen | |
parent | 789d03f584484af85dbdc64935270c8e45f36ef7 (diff) |
xen: Use kcalloc() in xen_init_IRQ()
The init_IRQ() function is now called with slab allocator initialized.
Therefore, we must not use the bootmem allocator in xen_init_IRQ().
Fixes the following boot-time warning:
------------[ cut here ]------------
WARNING: at mm/bootmem.c:535 alloc_arch_preferred_bootmem+0x27/0x45()
Modules linked in:
Pid: 0, comm: swapper Not tainted 2.6.30 #1
Call Trace:
[<ffffffff8102d6e3>] ? warn_slowpath_common+0x73/0xb0
[<ffffffff810210d9>] ? pvclock_clocksource_read+0x49/0x90
[<ffffffff812e522f>] ? alloc_arch_preferred_bootmem+0x27/0x45
[<ffffffff812e5761>] ? ___alloc_bootmem_nopanic+0x39/0xc9
[<ffffffff812e57fa>] ? ___alloc_bootmem+0x9/0x2f
[<ffffffff812e9e21>] ? xen_init_IRQ+0x25/0x61
[<ffffffff812d69ee>] ? start_kernel+0x1b5/0x29e
---[ end trace 4eaa2a86a8e2da22 ]---
Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Reported-by: Christian Kujau <lists@nerdbynature.de>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: lists@nerdbynature.de
Cc: jeremy.fitzhardinge@citrix.com
LKML-Reference: <1246438278.22417.28.camel@penberg-laptop>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/xen')
-rw-r--r-- | drivers/xen/events.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c index 891d2e90753a..abad71b1632b 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c | |||
@@ -927,9 +927,9 @@ static struct irq_chip xen_dynamic_chip __read_mostly = { | |||
927 | void __init xen_init_IRQ(void) | 927 | void __init xen_init_IRQ(void) |
928 | { | 928 | { |
929 | int i; | 929 | int i; |
930 | size_t size = nr_cpu_ids * sizeof(struct cpu_evtchn_s); | ||
931 | 930 | ||
932 | cpu_evtchn_mask_p = alloc_bootmem(size); | 931 | cpu_evtchn_mask_p = kcalloc(nr_cpu_ids, sizeof(struct cpu_evtchn_s), |
932 | GFP_KERNEL); | ||
933 | BUG_ON(cpu_evtchn_mask_p == NULL); | 933 | BUG_ON(cpu_evtchn_mask_p == NULL); |
934 | 934 | ||
935 | init_evtchn_cpu_bindings(); | 935 | init_evtchn_cpu_bindings(); |