On 08/19/24 at 09:45am, Sourabh Jain wrote:
Hello Michael and BoaquanIs this a little better?
On 01/08/24 12:21, Sourabh Jain wrote:
Hello Michael,Any comments or suggestions on this fix?
On 01/08/24 08:04, Michael Ellerman wrote:
Sourabh Jain <sourabhjain@xxxxxxxxxxxxx> writes:The kexec kernel boots fine.
The following errors are observed when kexec is done with SMT=off onAre they actually errors though? Do they block the actual kexec from
powerpc.
[ 358.458385] Removing IBM Power 842 compression device
[ 374.795734] kexec_core: Starting new kernel
[ 374.795748] kexec: Waking offline cpu 1.
[ 374.875695] crash hp: kexec_trylock() failed, elfcorehdr may
be inaccurate
[ 374.935833] kexec: Waking offline cpu 2.
[ 375.015664] crash hp: kexec_trylock() failed, elfcorehdr may
be inaccurate
snip..
[ 375.515823] kexec: Waking offline cpu 6.
[ 375.635667] crash hp: kexec_trylock() failed, elfcorehdr may
be inaccurate
[ 375.695836] kexec: Waking offline cpu 7.
happening? Or are they just warnings in dmesg?
This warning appears regardless of whether the kdump kernel is loaded.
However, when the kdump kernel is loaded, we will not be able to update
the kdump image (FDT).
I think this should be fine given that kexec is in progress.
Please let me know your opinion.
Because the fix looks like it could be racy.It seems like it is racy, but given that kexec takes the lock first and
then
brings the CPU up, which triggers the kdump image, which always fails to
update the kdump image because it could not take the same lock.
Note: the kexec lock is not released unless kexec boot fails.
diff --git a/kernel/crash_core.c b/kernel/crash_core.c
index 63cf89393c6e..0355ffb712f4 100644
--- a/kernel/crash_core.c
+++ b/kernel/crash_core.c
@@ -504,7 +504,7 @@ int crash_check_hotplug_support(void)
crash_hotplug_lock();
/* Obtain lock while reading crash information */
- if (!kexec_trylock()) {
+ if (!kexec_trylock() && kexec_in_progress) {
pr_info("kexec_trylock() failed, elfcorehdr may be inaccurate\n");
crash_hotplug_unlock();
return 0;
@@ -539,7 +539,7 @@ static void crash_handle_hotplug_event(unsigned int hp_action, unsigned int cpu,
crash_hotplug_lock();
/* Obtain lock while changing crash information */
- if (!kexec_trylock()) {
+ if (!kexec_trylock() && kexec_in_progress) {
pr_info("kexec_trylock() failed, elfcorehdr may be inaccurate\n");
crash_hotplug_unlock();
return;