Re: kdump: Getting "warn_alloc" warning during boot of kdump kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

On Fri, May 15, 2020 at 4:28 PM Prabhakar Kushwaha
<prabhakar.pkin@xxxxxxxxx> wrote:
>
> Hi All,
>
> We are getting "warn_alloc" warning during boot of kdump kernel. This
> warning is observed with latest upstream tag (v5.7-rc5).
>
> Primary/1st Kernel
> ----------------------------
> # dmesg | grep crash
> [    0.000000] crashkernel reserved: 0x00000000d6000000 -
> 0x00000000f6000000 (512 MB)
> [    0.000000] Kernel command line:
> BOOT_IMAGE=(hd8,gpt2)/vmlinuz-5.7.0-rc5
> root=UUID=c4050f17-526f-48a8-9804-c6b35cbb584c ro crashkernel=512M
> earlycon console=ttyAMA0
>
> # cat /proc/iomem | grep -i crash
>   d6000000 - f6000000 : Crash kernel
>
> Logs from Kdump/crash kernel with warnings & dump_stack
> ------------------------------------------------------------------------
>
> [    0.239360] swapper/0: page allocation failure: order:2,
> mode:0x1(GFP_DMA), nodemask=(null),cpuset=/,mems_allowed=0
> [    0.249917] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-rc5 #44
> [    0.256246] Hardware name: To be filled by O.E.M. Saber/Saber, BIOS
> 0ACKL027 07/01/2019
> [    0.264333] Call trace:
> [    0.266797]  dump_backtrace+0x0/0x1f8
> [    0.270490]  show_stack+0x20/0x30
> [    0.273833]  dump_stack+0xc0/0x10c
> [    0.277263]  warn_alloc+0x10c/0x178
> [    0.280781]  __alloc_pages_slowpath.constprop.112+0xaec/0xb28
> [    0.286584]  __alloc_pages_nodemask+0x2b4/0x300
> [    0.291156]  alloc_page_interleave+0x24/0xa0
> [    0.295464]  alloc_pages_current+0xe4/0x108
> [    0.299686]  dma_atomic_pool_init+0x44/0x1a4
> [    0.303995]  do_one_initcall+0x54/0x228
> [    0.307864]  kernel_init_freeable+0x228/0x2cc
> [    0.312263]  kernel_init+0x1c/0x110
> [    0.315781]  ret_from_fork+0x10/0x18
>
> We did some debugging.
> As per commit 1a8e1cef7603 ("arm64: use both ZONE_DMA and ZONE_DMA32")
> . DMA zone has been re-defined.
> here, ZONE_DMA has a fixed range of 0x802f0000 - 0xbfffffff and
> ZONE_DMA32 has range from 0xc0000000-0xfffffffff.
>
> When bootargs is defined with "crashkernel= X" for 1st/primary kernel.
> Than X amount of memory is reserved in First kernel. This reserved
> memory is used to boot kdump/crash kernel and represented as "Crash
> kernel" in cat /prom/iomem.
>
> If some region of reserved memory(Crash kernel) **does not** fall in
> ZONE_DMA region i.e. 0x802f0000 - 0xbfffffff, this warning is
> observed.
> Other drivers like scsi_register_driver [1] also fail. We also see
> other kinds of error [2].
>
> Considering DMA_ZONE has requirement of 0x802f0000 - 0xbfffffff.
> Can we enforce "Crash kernel" to always reserved between 0x0000_0000
> to 0xc000_0000 in reserve_crashkernel() -->memblock_find_in_range()
> or
> what could be best possible solution.
>

I saw similar error https://lkml.org/lkml/2020/2/24/746 with no
solution mentioned or Luckily next time reserve fell in address range
of DMA_ZONE,
This error  was mentioned in context of patch series "support
reserving crashkernel above 4G on arm64 kdump. Link
https://lkml.org/lkml/2019/12/23/411";
But this error is observable without the mentioned patch series.

As mentioned in previous mail, can we consider enforcing "Crash
kernel" to be always reserved between 0x0000_0000 - 0xc000_0000.
or any other best possible solution.

Please suggest..

--pk



>
> [1]
> ------------------------------------------------------------
> [   21.509239]  dump_backtrace+0x0/0x1f8
> [   21.516592]  show_stack+0x20/0x30
> [   21.523248]  dump_stack+0xc0/0x10c
> [   21.530087]  warn_alloc+0x10c/0x178
> [   21.537090]  __alloc_pages_slowpath.constprop.112+0xaec/0xb28
> [   21.548644]  __alloc_pages_nodemask+0x2b4/0x300
> [   21.557750]  alloc_pages_current+0x90/0x108
> [   21.566155]  alloc_slab_page+0x184/0x340
> [   21.574030]  new_slab+0x420/0x4c8
> [   21.580681]  ___slab_alloc+0x354/0x4e8
> [   21.588207]  __slab_alloc+0x28/0x58
> [   21.595210]  kmem_cache_alloc_trace+0x230/0x250
> [   21.604316]  sr_probe+0x250/0x618 [sr_mod]
> [   21.612555]  really_probe+0xe4/0x448
> [   21.619733]  driver_probe_device+0xe8/0x140
> [   21.628136]  device_driver_attach+0x7c/0x88
> [   21.636536]  __driver_attach+0xac/0x178
> [   21.644239]  bus_for_each_dev+0x7c/0xd0
> [   21.651943]  driver_attach+0x2c/0x38
> [   21.659119]  bus_add_driver+0x1a8/0x240
> [   21.666823]  driver_register+0x6c/0x128
> [   21.674533]  scsi_register_driver+0x28/0x38
> [   21.682939]  init_sr+0x40/0x10000 [sr_mod]
>
> [2]
> -------------------------------------------------------------------
> [   21.450571] systemd-udevd: page allocation failure: order:0,
> mode:0xcc1(GFP_KERNEL|GFP_DMA),
> nodemask=(null),cpuset=/,mems_allowed=0^M
> [   21.450571] systemd-udevd: page allocation failure: order:0,
> mode:0xcc1(GFP_KERNEL|GFP_DMA),
> nodemask=(null),cpuset=/,mems_allowed=0^M

_______________________________________________
kexec mailing list
kexec@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/kexec



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux