Re: WARNING: at mm/bootmem.c:535 alloc_arch_preferred_bootmem

Pekka Enberg
2009-06-30T08:40:51Z

Hi Christian,

On Mon, 2009-06-29 at 20:01 -0700, Christian Kujau wrote:
> Hi there,
>
> this topic has been discussed [0] already and a bug for powerpc[1] has
> been opened, I'm still seeing this with the latest -git in a x86_64 Xen
> DomU. The domain continues to boot however, no oopses or crashes so far,
> it's just this warning during bootup. The thread about the "early boot
> SLAB" came to a halt, but the warning is still there - is a fix for this
> still in the works?
>
> Full dmesg/.config: http://nerdbynature.de/bits/2.6.31-rc1/
>
> Thanks,
> Christian.
>
> [0] http://bugzilla.kernel.org/show_bug.cgi?id=13650 / Badness on the Warp
> [1] http://lkml.org/lkml/2009/6/10/396 / Early boot SLAB for 2.6.31

I think you're the first one to report this. The warning is harmless but
the following patch should fix things up. Thanks!

Pekka

>From dc231c59194a973b80e6932bb4c162f2076635cb Mon Sep 17 00:00:00 2001
From: Pekka Enberg <penberg@cs.helsinki.fi>
Date: Tue, 30 Jun 2009 11:35:19 +0300
Subject: [PATCH] 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:

[ 0.000000] Linux version 2.6.30 (dummy@sid) (gcc version 4.4.0 (Debian 4.4.0-8) ) #1 Tue Jun 23 02:13:42 CEST 2009
[ 0.000000] Command line: root=/dev/xvda1 console=hvc0 init=/sbin/init
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Centaur CentaurHauls
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] Xen: 0000000000000000 - 00000000000a0000 (usable)
[ 0.000000] Xen: 00000000000a0000 - 0000000000100000 (reserved)
[ 0.000000] Xen: 0000000000100000 - 0000000008000000 (usable)
[ 0.000000] DMI not present or invalid.
[ 0.000000] last_pfn = 0x8000 max_arch_pfn = 0x400000000
[ 0.000000] initial memory mapped : 0 - 20000000

Reported-by: Christian Kujau <lists@nerdbynature.de>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
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 891d2e9..abad71b 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -927,9 +927,9 @@ static struct irq_chip xen_dynamic_chip __read_mostly = {
void __init xen_init_IRQ(void)
{
int i;
- size_t size = nr_cpu_ids * sizeof(struct cpu_evtchn_s);

- cpu_evtchn_mask_p = alloc_bootmem(size);
+ cpu_evtchn_mask_p = kcalloc(nr_cpu_ids, sizeof(struct cpu_evtchn_s),
+ GFP_KERNEL);
BUG_ON(cpu_evtchn_mask_p == NULL);

init_evtchn_cpu_bindings();
--
1.5.6.3