diff options
author | Daniel Mack <daniel@caiaq.de> | 2009-06-19 16:56:09 -0400 |
---|---|---|
committer | Eric Miao <eric.y.miao@gmail.com> | 2009-07-03 02:17:51 -0400 |
commit | 4aa78264d14bb0e87897acb90941c368248e20ce (patch) | |
tree | 78986d1c248c3e4d403fec08dca19d2b303087df /arch/arm/plat-pxa | |
parent | 5c68b09900f04c3de55af43155435b9392f03844 (diff) |
[ARM] pxa: use kzalloc() in pxa_init_gpio_chip()
As slab is available early now, use kzalloc() rather than
alloc_bootmem_low() in pxa_init_gpio_chip().
This removes the following boot time warning:
<4>------------[ cut here ]------------
<4>WARNING: at mm/bootmem.c:535 alloc_arch_preferred_bootmem+0x2c/0x54()
<d>Modules linked in:
[<c0029430>] (unwind_backtrace+0x0/0xdc) from [<c0036f64>] (warn_slowpath_common+0x4c/0x80)
[<c0036f64>] (warn_slowpath_common+0x4c/0x80) from [<c000ede0>] (alloc_arch_preferred_bootmem+0x2c/0x54)
[<c000ede0>] (alloc_arch_preferred_bootmem+0x2c/0x54) from [<c000f2e4>] (___alloc_bootmem_nopanic+0x34/0xd0)
[<c000f2e4>] (___alloc_bootmem_nopanic+0x34/0xd0) from [<c000f6e4>] (___alloc_bootmem+0xc/0x34)
[<c000f6e4>] (___alloc_bootmem+0xc/0x34) from [<c000cb20>] (pxa_init_gpio+0x48/0x228)
[<c000cb20>] (pxa_init_gpio+0x48/0x228) from [<c0009794>] (init_IRQ+0x34/0x44)
[<c0009794>] (init_IRQ+0x34/0x44) from [<c00089d4>] (start_kernel+0x144/0x264)
[<c00089d4>] (start_kernel+0x144/0x264) from [<a0008034>] (0xa0008034)
<4>---[ end trace 1b75b31a2719ed1c ]---
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
Diffstat (limited to 'arch/arm/plat-pxa')
-rw-r--r-- | arch/arm/plat-pxa/gpio.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/arch/arm/plat-pxa/gpio.c b/arch/arm/plat-pxa/gpio.c index abc79d44acaa..98548c6903a0 100644 --- a/arch/arm/plat-pxa/gpio.c +++ b/arch/arm/plat-pxa/gpio.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/sysdev.h> | 18 | #include <linux/sysdev.h> |
19 | #include <linux/bootmem.h> | 19 | #include <linux/slab.h> |
20 | 20 | ||
21 | #include <mach/gpio.h> | 21 | #include <mach/gpio.h> |
22 | 22 | ||
@@ -112,17 +112,12 @@ static int __init pxa_init_gpio_chip(int gpio_end) | |||
112 | int i, gpio, nbanks = gpio_to_bank(gpio_end) + 1; | 112 | int i, gpio, nbanks = gpio_to_bank(gpio_end) + 1; |
113 | struct pxa_gpio_chip *chips; | 113 | struct pxa_gpio_chip *chips; |
114 | 114 | ||
115 | /* this is early, we have to use bootmem allocator, and we really | 115 | chips = kzalloc(nbanks * sizeof(struct pxa_gpio_chip), GFP_KERNEL); |
116 | * want this to be allocated dynamically for different 'gpio_end' | ||
117 | */ | ||
118 | chips = alloc_bootmem_low(nbanks * sizeof(struct pxa_gpio_chip)); | ||
119 | if (chips == NULL) { | 116 | if (chips == NULL) { |
120 | pr_err("%s: failed to allocate GPIO chips\n", __func__); | 117 | pr_err("%s: failed to allocate GPIO chips\n", __func__); |
121 | return -ENOMEM; | 118 | return -ENOMEM; |
122 | } | 119 | } |
123 | 120 | ||
124 | memset(chips, 0, nbanks * sizeof(struct pxa_gpio_chip)); | ||
125 | |||
126 | for (i = 0, gpio = 0; i < nbanks; i++, gpio += 32) { | 121 | for (i = 0, gpio = 0; i < nbanks; i++, gpio += 32) { |
127 | struct gpio_chip *c = &chips[i].chip; | 122 | struct gpio_chip *c = &chips[i].chip; |
128 | 123 | ||