[FSL P50x0] Kernel 6.9-rc1 compiling issue

Michael Ellerman mpe at ellerman.id.au
Mon Apr 8 22:20:05 AEST 2024


Christophe Leroy <christophe.leroy at csgroup.eu> writes:
> Hi Christian, hi Hari,
>
> Le 04/04/2024 à 19:44, Christian Zigotzky a écrit :
>> Shall we use CONFIG_CRASH_DUMP to get int crashing_cpu = -1;?
>> 
>> Further information: 
>> https://lists.ozlabs.org/pipermail/linuxppc-dev/2024-March/269985.html 
>> <https://lists.ozlabs.org/pipermail/linuxppc-dev/2024-March/269985.html>
>
> Looking at problematic commit 5c4233cc0920 ("powerpc/kdump: Split 
> KEXEC_CORE and CRASH_DUMP dependency"), my feeling is that the change 
> should be as follows.
>
> Hari, can you confirm ?
>
> diff --git a/arch/powerpc/platforms/85xx/smp.c 
> b/arch/powerpc/platforms/85xx/smp.c
> index 40aa58206888..3209fc92ac19 100644
> --- a/arch/powerpc/platforms/85xx/smp.c
> +++ b/arch/powerpc/platforms/85xx/smp.c
> @@ -362,7 +362,7 @@ struct smp_ops_t smp_85xx_ops = {
>   #endif
>   };
>
> -#ifdef CONFIG_KEXEC_CORE
> +#ifdef CONFIG_CRASH_DUMP
>   #ifdef CONFIG_PPC32
>   atomic_t kexec_down_cpus = ATOMIC_INIT(0);
>
> @@ -465,7 +465,7 @@ static void mpc85xx_smp_machine_kexec(struct kimage 
> *image)
>
>   	default_machine_kexec(image);
>   }
> -#endif /* CONFIG_KEXEC_CORE */
> +#endif /* CONFIG_CRASH_DUMP */

That doesn't look right to me.

I think it needs something like below.

cheers

diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index 40aa58206888..276060c993a0 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -398,6 +398,7 @@ static void mpc85xx_smp_kexec_cpu_down(int crash_shutdown, int secondary)
 	hard_irq_disable();
 	mpic_teardown_this_cpu(secondary);
 
+#ifdef CONFIG_CRASH_DUMP
 	if (cpu == crashing_cpu && cpu_thread_in_core(cpu) != 0) {
 		/*
 		 * We enter the crash kernel on whatever cpu crashed,
@@ -406,9 +407,11 @@ static void mpc85xx_smp_kexec_cpu_down(int crash_shutdown, int secondary)
 		 */
 		disable_threadbit = 1;
 		disable_cpu = cpu_first_thread_sibling(cpu);
-	} else if (sibling != crashing_cpu &&
-		   cpu_thread_in_core(cpu) == 0 &&
-		   cpu_thread_in_core(sibling) != 0) {
+	} else if (sibling == crashing_cpu)
+		return;
+#endif
+	if (cpu_thread_in_core(cpu) == 0 &&
+	    cpu_thread_in_core(sibling) != 0) {
 		disable_threadbit = 2;
 		disable_cpu = sibling;
 	}


More information about the Linuxppc-dev mailing list