Re: [PATCH 1/1] sparc,leon: Sparc-Leon SMP support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Julian Calaby wrote:
Konrad,

A couple of things that stood out from a quick read over the code.

On Mon, Aug 31, 2009 at 23:47, <konrad@xxxxxxxxxxx> wrote:
From: Konrad Eisele <konrad@xxxxxxxxxxx>

Support SMP for a Sparc-Leon multiprocessor system.
Add Leon specific SMP code to arch/sparc/kernel/leon_smp.c.

Signed-off-by: Konrad Eisele <konrad@xxxxxxxxxxx>
---
 arch/sparc/include/asm/leon.h      |   28 +++
 arch/sparc/include/asm/leon_amba.h |    3 +
 arch/sparc/include/asm/smp_32.h    |    9 +
 arch/sparc/kernel/Makefile         |    2 +-
 arch/sparc/kernel/entry.S          |   33 +++
 arch/sparc/kernel/head_32.S        |   22 ++
 arch/sparc/kernel/ioport.c         |    5 +
 arch/sparc/kernel/leon_kernel.c    |   94 +++++++
 arch/sparc/kernel/leon_smp.c       |  468 ++++++++++++++++++++++++++++++++++++
 arch/sparc/kernel/smp_32.c         |   10 +
 arch/sparc/kernel/trampoline_32.S  |   69 ++++++-
 arch/sparc/mm/srmmu.c              |    5 +-
 12 files changed, 745 insertions(+), 3 deletions(-)
 create mode 100644 arch/sparc/kernel/leon_smp.c

diff --git a/arch/sparc/include/asm/leon_amba.h b/arch/sparc/include/asm/leon_amba.h
index 618e888..57d2eae 100644
--- a/arch/sparc/include/asm/leon_amba.h
+++ b/arch/sparc/include/asm/leon_amba.h
@@ -188,6 +188,9 @@ extern int leon_debug_irqout;
 extern unsigned long leon3_gptimer_irq;
 extern unsigned int sparc_leon_eirq;

+int amba_get_free_apbslv_devices(int vendor, int device, struct amba_apb_device *dev, int nr);
+
+

I'll remove it. It is not used by the patch. It was related to a
cleanup the I did in conjunction with the CONFIG_LEONSMP_USETIMER2 define
below.

 #endif /* __ASSEMBLY__ */

 #define LEON3_IO_AREA 0xfff00000

Should this be in a different patch? it doesn't seem to be related to
the SMP changes.

diff --git a/arch/sparc/kernel/leon_kernel.c b/arch/sparc/kernel/leon_kernel.c
index 54d8a5b..ab449b4 100644
--- a/arch/sparc/kernel/leon_kernel.c
+++ b/arch/sparc/kernel/leon_kernel.c
@@ -12,15 +12,20 @@
 #include <linux/of_platform.h>
 #include <linux/interrupt.h>
 #include <linux/of_device.h>
+
 #include <asm/oplib.h>
 #include <asm/timer.h>
 #include <asm/prom.h>
 #include <asm/leon.h>
 #include <asm/leon_amba.h>
+#include <asm/traps.h>
+#include <asm/cacheflush.h>

 #include "prom.h"
 #include "irq.h"

+#define CONFIG_LEONSMP_USETIMER2
+

Should this be a KConfig symbol?

Yes, but I tool it out of Kconfig to make the patch smaller. I'll remove this and the
dependent part.


 struct leon3_irqctrl_regs_map *leon3_irqctrl_regs; /* interrupt controller base address, initialized by amba_init() */
 struct leon3_gptimer_regs_map *leon3_gptimer_regs; /* timer controller base address, initialized by amba_init() */
 struct amba_apb_device leon_percpu_timer_dev[16];
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index 509b1ff..d55c255 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -2301,7 +2301,8 @@ void __init ld_mmu_srmmu(void)
       BTFIXUPSET_CALL(flush_cache_mm, smp_flush_cache_mm, BTFIXUPCALL_NORM);
       BTFIXUPSET_CALL(flush_cache_range, smp_flush_cache_range, BTFIXUPCALL_NORM);
       BTFIXUPSET_CALL(flush_cache_page, smp_flush_cache_page, BTFIXUPCALL_NORM);
-       if (sparc_cpu_model != sun4d) {
+       if (sparc_cpu_model != sun4d &&
+           sparc_cpu_model != sparc_leon) {
               BTFIXUPSET_CALL(flush_tlb_all, smp_flush_tlb_all, BTFIXUPCALL_NORM);
               BTFIXUPSET_CALL(flush_tlb_mm, smp_flush_tlb_mm, BTFIXUPCALL_NORM);
               BTFIXUPSET_CALL(flush_tlb_range, smp_flush_tlb_range, BTFIXUPCALL_NORM);

Again, doesn't seem SMP related.

This is in srmmu.c inside a CONFIG_SMP section:
#ifdef CONFIG_SMP
	/* El switcheroo... */
  ...
>> +       if (sparc_cpu_model != sun4d &&
>> +           sparc_cpu_model != sparc_leon) {
  ...
#endif


Other than those small issues, on a first read-through, this seems
like a good patch.

Good work!

Thanks,


--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux