>>> Sounds doable to me, and not complicated. >>> >>>> images. It would apply to >>>> >>>> - arm64 and filter out all hotadded memory (IIRC, only boot memory can >>>> be used). >>> >>> Do you mean hot added memory after boot can't be recognized and added >>> into system RAM on arm64? >> >> See patch #3 of this patch set, which wants to avoid placing kexec >> binaries on hotplugged memory. But I have no idea what the current plan >> regarding arm64 is (this thread exploded :) ). >> >> I would assume that we don't want to place kexec images on any >> hotplugged (or rather: hot(un)pluggable) memory - on any architecture. > > Yes, noticed that and James replied to DaveY. > > Later, when I was considering to make a draft patch to do the picking of > memory from normal zone, and add a notifier, as we discussed at above, I > suddenly realized that kexec_file_load doesn't have this issue. It > traverse system RAM bottom up to get an available region to put > kernel/initrd/boot_param, etc. I can't think of a system where its > low memory could be unavailable. kexec_walk_memblock() has the option for "kbuf->top_down". Only kexec_walk_resources() seems to ignore it. So I think in case of memblocks (e.g., arm64), this still applies? >> >>> >>> >>>> - powerpc to filter out all LMBs that can be removed (assuming not all >>>> memory corresponds to LMBs that can be removed, otherwise we're in >>>> trouble ... :) ) >>>> - virtio-mem to filter out all memory it added. >>>> - hyper-v to filter out partially backed memory blocks (esp. the last >>>> memory block it added and only partially backed it by memory). >>>> >>>> This would make it work for kexec_file_load(), however, I do wonder how >>>> we would want to approach that from userspace kexec-tools when handling >>>> it from kexec_load(). >>> >>> Let's make kexec_file_load work firstly. Since this work is only first >>> step to make kexec-ed kernel not break memory hotplug. After kexec >>> rebooting, the KASLR may locate kernel into hotpluggable area too. >> >> Can you elaborate how that would work? > > Well, boot memory can be hotplugged or not after boot, they are marked > in uefi tables, the current kexec doesn't save and pass them into 2nd > kenrel, when kexec kernel bootup, it need read them and avoid them to > randomize kernel into. What about e.g., memory hotplugged by ACPI? I would assume, that the kexec kernel will not make use of that (IOW detected that) until the ACPI driver comes up and re-detects + adds that memory. Or how would that machinery work in case we have a DIMM hotplugged via ACPI? -- Thanks, David / dhildenb