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

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

 



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);
> +
> +
>  #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?

>  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.

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

Good work!

Thanks,

-- 

Julian Calaby

Email: julian.calaby@xxxxxxxxx
.Plan: http://sites.google.com/site/juliancalaby/
--
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