Le Fri, Apr 09, 2021 at 04:53:13PM +0200, Corentin Labbe a écrit : > Le Wed, Apr 07, 2021 at 07:59:27AM -0700, Bruce Mitchell a écrit : > > On 4/7/2021 07:48, Corentin Labbe wrote: > > > Le Wed, Apr 07, 2021 at 07:28:26AM -0700, Bruce Mitchell a écrit : > > >> On 4/7/2021 07:23, Corentin Labbe wrote: > > >>> Le Wed, Apr 07, 2021 at 07:13:04AM -0700, Bruce Mitchell a écrit : > > >>>> On 4/7/2021 05:54, Corentin Labbe wrote: > > >>>>> Hello > > >>>>> > > >>>>> I try to do kexec on a cortina/gemini SoC. > > >>>>> On a "normal" boot, kexec fail to find memory so I added crashkernel=8M to cmdline. (kernel size is ~6M). > > >>>>> But now, kernel fail to reserve memory: > > >>>>> Load Kern image from 0x30020000 to 0x800000 size 7340032 > > >>>>> Booting Linux on physical CPU 0x0 > > >>>>> Linux version 5.12.0-rc5-next-20210401+ (compile@Red) (armv7a-unknown-linux-gnueabihf-gcc (Gentoo 9.3.0-r2 p4) 9.3.0, GNU ld (Gentoo 2.34 p6) 2.34.0) #98 PREEMPT Wed Apr 7 14:14:08 CEST 2021 > > >>>>> CPU: FA526 [66015261] revision 1 (ARMv4), cr=0000397f > > >>>>> CPU: VIVT data cache, VIVT instruction cache > > >>>>> OF: fdt: Machine model: Edimax NS-2502 > > >>>>> Memory policy: Data cache writeback > > >>>>> Zone ranges: > > >>>>> Normal [mem 0x0000000000000000-0x0000000007ffffff] > > >>>>> HighMem empty > > >>>>> Movable zone start for each node > > >>>>> Early memory node ranges > > >>>>> node 0: [mem 0x0000000000000000-0x0000000007ffffff] > > >>>>> Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff] > > >>>>> crashkernel reservation failed - No suitable area found. > > >>>>> Built 1 zonelists, mobility grouping on. Total pages: 32512 > > >>>>> Kernel command line: console=ttyS0,19200n8 ip=dhcp crashkernel=8M > > >>>>> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear) > > >>>>> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear) > > >>>>> mem auto-init: stack:off, heap alloc:off, heap free:off > > >>>>> Memory: 119476K/131072K available (5034K kernel code, 579K rwdata, 1372K rodata, 3020K init, 210K bss, 11596K reserved, 0K cma-reserved, 0K highmem) > > >>>>> SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > > >>>>> > > >>>>> What can I do ? > > >>>>> > > >>>>> Thanks > > >>>>> Regards > > >>>>> > > >>>>> _______________________________________________ > > >>>>> kexec mailing list > > >>>>> kexec@xxxxxxxxxxxxxxxxxxx > > >>>>> http://lists.infradead.org/mailman/listinfo/kexec > > >>>>> > > >>>> > > >>>> Hello Corentin, > > >>>> > > >>>> I see much larger crashkernel=xxM being shown here > > >>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/kdump/kdump.rst > > >>>> and from many of my other searches. > > >>>> > > >>>> Here is an interesting article on kdump for ARM-32 > > >>>> https://kaiwantech.wordpress.com/2017/07/13/setting-up-kdump-and-crash-for-arm-32-an-ongoing-saga/ > > >>>> > > >>>> > > >>>> Here is the kernel command line reference > > >>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/kernel-parameters.txt?h=v5.11#n732 > > >>>> > > >>>> I feel your frustrations too. > > >>> > > >>> Hello > > >>> > > >>> Thanks but I have already read those documentation. > > >>> I search to know why the kernel cannot find 8M of memory ouf of 128. > > >>> > > >>> Regards > > >>> > > >> > > >> How much more memory does the kernel and initrd above and beyond just > > >> their physical size? (heaps, stacks, buffers, virtual filesystems) > > > > > > The kernel size include a rootfs.cpio.lzma of 3MB and dtb is appended. > > > The total kernel size is 7MB. > > > The uncompressed size of the kernel is 13M (size of vmlinux) > > > The uncompressed size of rootfs is 11M. > > > > > > cat /proc/meminfo > > > MemTotal: 122496 kB > > > MemFree: 103700 kB > > > MemAvailable: 101936 kB > > > Buffers: 0 kB > > > Cached: 10904 kB > > > SwapCached: 0 kB > > > Active: 4304 kB > > > Inactive: 8012 kB > > > Active(anon): 4304 kB > > > Inactive(anon): 8012 kB > > > Active(file): 0 kB > > > Inactive(file): 0 kB > > > Unevictable: 0 kB > > > Mlocked: 0 kB > > > HighTotal: 0 kB > > > HighFree: 0 kB > > > LowTotal: 122496 kB > > > LowFree: 103700 kB > > > SwapTotal: 0 kB > > > SwapFree: 0 kB > > > Dirty: 0 kB > > > Writeback: 0 kB > > > AnonPages: 1428 kB > > > Mapped: 3552 kB > > > Shmem: 10904 kB > > > KReclaimable: 608 kB > > > Slab: 2960 kB > > > SReclaimable: 608 kB > > > SUnreclaim: 2352 kB > > > KernelStack: 312 kB > > > PageTables: 136 kB > > > NFS_Unstable: 0 kB > > > Bounce: 0 kB > > > WritebackTmp: 0 kB > > > CommitLimit: 61248 kB > > > Committed_AS: 14336 kB > > > VmallocTotal: 901120 kB > > > VmallocUsed: 64 kB > > > VmallocChunk: 0 kB > > > Percpu: 32 kB > > > CmaTotal: 0 kB > > > CmaFree: 0 kB > > > > > > > I believe you need space for all of that, > > the smallest that would work for me was 20MB. > > I tried without any change. > > Anyway when trying to kexec I got: > kexec --no-ifdown --command-line="console=ttyS0,19200n8" /tmp/kernel | > Could not find a free area of memory of 0x668a8a bytes... > Cannot load /tmp/kernel > > So reserving 8M is enough according to what kexec said. > > So anyone know why the kernel cannot reserve 8M ? > Thanks It seems to be related to: arch/arm/kernel/setup.c:977 "The crash region must be aligned to 128MB to avoid" Hacking CRASH_ALIGN to 64 permit Linux to reserve 8M at boot. But kexec still fail after with the same reason. (Could not find a free area of memory of 0x668a8a bytes) _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec