Yes, but as I said, unfortunately memset(1) with CONFIG_VM_DEBUG does not
catch this case. So, when CONFIG_VM_DEBUG is enabled kexec reboots without
issues.
Can we make the init pattern to catch this?
This is why we must initialize the computed buddy page beforehand.
Ble, this is really ugly. I will think about it more.
Another approach that I considered is to split loop inside
deferred_init_range() into two loops: one where we initialize pages by
calling __init_single_page(), another where we free them to buddy allocator
by calling deferred_free_range().
Yes, that would make much more sense to me.
Ok, so should I submit a new patch with two loops? (The logic within loops
is going to be the same:
Could you post it please?
if (!pfn_valid_within(pfn)) {
} else if (!(pfn & nr_pgmask) && !pfn_valid(pfn)) {
} else if (!meminit_pfn_in_nid(pfn, nid, &nid_init_state)) {
} else if (page && (pfn & nr_pgmask)) {
This fix was already added into mm-tree as
mm-deferred_init_memmap-improvements-fix-2.patch
I think Andrew can drop it and replace by a different patch.