Skip to contentSkip to conversation

ARM: shmobile: Check r8a7791 MD21 at SMP boot

PATCH New Magnus Damm 3 participants 6 messages Feb 26, 2014 – Mar 13, 2014

Subsystems (4)
lore
Share & tools
lore

Magnus Damm

author maintainer
#0 lore raw

PATCH 1/1 ARM: shmobile: Check r8a7791 MD21 at SMP boot

From: Magnus Damm <[email protected]>

On r8a7791 the hardware boot mode bit MD21 indicates if hardware debug mode is enabled or not. In case hardware debug mode is enabled print a warning and refrain from booting secondary CPU cores.

Without this patch Koelsch with SW8-4 set to OFF will hang at SMP boot.

---

This is a reworked version of the APMU patch previously posted as [PATCH] ARM: shmobile: Check MD21 at SMP boot in case of APMU

Written against renesas-devel-v3.14-rc4-20140226

 arch/arm/mach-shmobile/smp-r8a7791.c |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
arch/arm/mach-shmobile/smp-r8a7791.c +14 -1
@@ -20,6 +20,7 @@
 #include <asm/smp_plat.h>
 #include <mach/common.h>
 #include <mach/r8a7791.h>
+#include <mach/rcar-gen2.h>
 
 #define RST		0xe6160000
 #define CA15BAR		0x0020
@@ -51,9 +52,21 @@ static void __init r8a7791_smp_prepare_c
 	iounmap(p);
 }
 
+static int r8a7791_smp_boot_secondary(unsigned int cpu,
+				      struct task_struct *idle)
+{
+	/* Error out when hardware debug mode is enabled */
+	if (rcar_gen2_read_mode_pins() & BIT(21)) {
+		pr_warn("Unable to boot CPU%u when MD21 is set\n", cpu);
+		return -ENOTSUPP;
+	}
+
+	return shmobile_smp_apmu_boot_secondary(cpu, idle);
+}
+
 struct smp_operations r8a7791_smp_ops __initdata = {
 	.smp_prepare_cpus	= r8a7791_smp_prepare_cpus,
-	.smp_boot_secondary	= shmobile_smp_apmu_boot_secondary,
+	.smp_boot_secondary	= r8a7791_smp_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
 	.cpu_disable		= shmobile_smp_cpu_disable,
 	.cpu_die		= shmobile_smp_apmu_cpu_die,
#1 lore raw

PATCH 1/1 ARM: shmobile: Check r8a7791 MD21 at SMP boot

Hi Magnus,

Quoted 7 lines · Magnus Damm

On r8a7791 the hardware boot mode bit MD21 indicates if hardware debug mode is enabled or not. In case hardware debug mode is enabled print a warning and refrain from booting secondary CPU cores.

Without this patch Koelsch with SW8-4 set to OFF will hang at SMP boot.

On Koelsch:

Quoted 2 lines

This is a reworked version of the APMU patch previously posted as [PATCH] ARM: shmobile: Check MD21 at SMP boot in case of APMU

Your previous version also affected r8a7790/Lager.
Isn't this check no longer needed there? According to the Lager manual, MD21 also enables hardware debug mode, and is also controlled by SW8-4. Of course the CPU may behave differently, as the CPU cores are different.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

author maintainer
#2 lore raw

PATCH 1/1 ARM: shmobile: Check r8a7791 MD21 at SMP boot

Hi Geert,

Quoted 7 lines · Geert Uytterhoeven

Hi Magnus,

Quoted 4 lines · Magnus Damm

On r8a7791 the hardware boot mode bit MD21 indicates if hardware debug mode is enabled or not. In case hardware debug mode is enabled print a warning and refrain from booting secondary CPU cores.

Quoted 7 lines
Quoted 3 lines

Without this patch Koelsch with SW8-4 set to OFF will hang at SMP boot.

On Koelsch:

Thanks.

Quoted 8 lines
Quoted 2 lines

This is a reworked version of the APMU patch previously posted as [PATCH] ARM: shmobile: Check MD21 at SMP boot in case of APMU

Your previous version also affected r8a7790/Lager.
Isn't this check no longer needed there? According to the Lager manual, MD21 also enables hardware debug mode, and is also controlled by SW8-4. Of course the CPU may behave differently, as the CPU cores are different.

Yes, you are correct that the previous version of the patch also affected Lager. And that both r8a7790 and r8a7791 mention the MD21 bit together with JTAG debugging.

I recently used the patch on Lager and I discovered that I apparently had been running with MD21 on my Lager since forever, and surprisingly it worked regardless. Since there is no documentation on r8a7790 or r8a7791 I simply decided to handle them separately and only enable where it is needed.

I've also been told that it is possible to allow SMP operation together with JTAG, apparently some magic with RST is needed. It seems that the power domains are treated differently depending on the MD21 setting. Not sure if this applies to both r8a7790 and r8a7791, but if we end up with similar fixes we can consolidate. Until then I think dealing with them one by one makes sense.

Cheers,

/ magnus

#3 lore raw

PATCH 1/1 ARM: shmobile: Check r8a7791 MD21 at SMP boot

Hi Magnus,

Quoted 13 lines · Magnus Damm
Quoted 8 lines
Quoted 2 lines

This is a reworked version of the APMU patch previously posted as [PATCH] ARM: shmobile: Check MD21 at SMP boot in case of APMU

Your previous version also affected r8a7790/Lager.
Isn't this check no longer needed there? According to the Lager manual, MD21 also enables hardware debug mode, and is also controlled by SW8-4. Of course the CPU may behave differently, as the CPU cores are different.

Yes, you are correct that the previous version of the patch also affected Lager. And that both r8a7790 and r8a7791 mention the MD21 bit together with JTAG debugging.

Quoted 5 lines

I recently used the patch on Lager and I discovered that I apparently had been running with MD21 on my Lager since forever, and surprisingly it worked regardless. Since there is no documentation on r8a7790 or r8a7791 I simply decided to handle them separately and only enable where it is needed.

You could have been lucky?

On Koelsch, I only had failures after Real Cold Boot, i.e. on boot up in the morning. And not always, so there could be a timing issue involved.

Quoted 6 lines

I've also been told that it is possible to allow SMP operation together with JTAG, apparently some magic with RST is needed. It seems that the power domains are treated differently depending on the MD21 setting. Not sure if this applies to both r8a7790 and r8a7791, but if we end up with similar fixes we can consolidate. Until then I think dealing with them one by one makes sense.

Furthermore, I haven't seen any SPI timeouts after I disabled MD21 (holding wood, and rabbit legs ;-). So the SMP memory (in)coherency I saw there could have been caused by a wobbly SMP setup.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#4 lore raw

PATCH 1/1 ARM: shmobile: Check r8a7791 MD21 at SMP boot

Quoted 34 lines · Geert Uytterhoeven

Hi Magnus,

Quoted 13 lines · Magnus Damm
Quoted 8 lines
Quoted 2 lines

This is a reworked version of the APMU patch previously posted as [PATCH] ARM: shmobile: Check MD21 at SMP boot in case of APMU

Your previous version also affected r8a7790/Lager.
Isn't this check no longer needed there? According to the Lager manual, MD21 also enables hardware debug mode, and is also controlled by SW8-4. Of course the CPU may behave differently, as the CPU cores are different.

Yes, you are correct that the previous version of the patch also affected Lager. And that both r8a7790 and r8a7791 mention the MD21 bit together with JTAG debugging.

Quoted 5 lines

I recently used the patch on Lager and I discovered that I apparently had been running with MD21 on my Lager since forever, and surprisingly it worked regardless. Since there is no documentation on r8a7790 or r8a7791 I simply decided to handle them separately and only enable where it is needed.

You could have been lucky?

On Koelsch, I only had failures after Real Cold Boot, i.e. on boot up in the morning. And not always, so there could be a timing issue involved.

Quoted 6 lines

I've also been told that it is possible to allow SMP operation together with JTAG, apparently some magic with RST is needed. It seems that the power domains are treated differently depending on the MD21 setting. Not sure if this applies to both r8a7790 and r8a7791, but if we end up with similar fixes we can consolidate. Until then I think dealing with them one by one makes sense.

Quoted 3 lines

Furthermore, I haven't seen any SPI timeouts after I disabled MD21 (holding wood, and rabbit legs ;-). So the SMP memory (in)coherency I saw there could have been caused by a wobbly SMP setup.

Hi Magnus,

I am a little confused about the status of this patch? Would you like me to queue it up?

author maintainer
#5 lore raw

PATCH 1/1 ARM: shmobile: Check r8a7791 MD21 at SMP boot

Hi Simon,

Quoted 35 lines · Simon Horman
Quoted 34 lines · Geert Uytterhoeven

Hi Magnus,

Quoted 13 lines · Magnus Damm
Quoted 8 lines
Quoted 2 lines

This is a reworked version of the APMU patch previously posted as [PATCH] ARM: shmobile: Check MD21 at SMP boot in case of APMU

Your previous version also affected r8a7790/Lager.
Isn't this check no longer needed there? According to the Lager manual, MD21 also enables hardware debug mode, and is also controlled by SW8-4. Of course the CPU may behave differently, as the CPU cores are different.

Yes, you are correct that the previous version of the patch also affected Lager. And that both r8a7790 and r8a7791 mention the MD21 bit together with JTAG debugging.

Quoted 5 lines

I recently used the patch on Lager and I discovered that I apparently had been running with MD21 on my Lager since forever, and surprisingly it worked regardless. Since there is no documentation on r8a7790 or r8a7791 I simply decided to handle them separately and only enable where it is needed.

You could have been lucky?

On Koelsch, I only had failures after Real Cold Boot, i.e. on boot up in the morning. And not always, so there could be a timing issue involved.

Quoted 6 lines

I've also been told that it is possible to allow SMP operation together with JTAG, apparently some magic with RST is needed. It seems that the power domains are treated differently depending on the MD21 setting. Not sure if this applies to both r8a7790 and r8a7791, but if we end up with similar fixes we can consolidate. Until then I think dealing with them one by one makes sense.

Quoted 8 lines
Quoted 3 lines

Furthermore, I haven't seen any SPI timeouts after I disabled MD21 (holding wood, and rabbit legs ;-). So the SMP memory (in)coherency I saw there could have been caused by a wobbly SMP setup.

Hi Magnus,

I am a little confused about the status of this patch? Would you like me to queue it up?

Yes, please!

/ magnus