diff mbox

[v3,4/4] ARM: BCM: Add SMP support for Broadcom 4708

Message ID 1446844273-6460-5-git-send-email-kapilh@broadcom.com (mailing list archive)
State New, archived
Headers show

Commit Message

Kapil Hali Nov. 6, 2015, 9:11 p.m. UTC
From: Jon Mason <jonmason@broadcom.com>

Add SMP support for Broadcom's 4708 SoCs.

Signed-off-by: Jon Mason <jonmason@broadcom.com>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Kapil Hali <kapilh@broadcom.com>
---
 arch/arm/boot/dts/bcm4708.dtsi | 2 ++
 arch/arm/mach-bcm/Kconfig      | 1 +
 arch/arm/mach-bcm/Makefile     | 3 +++
 3 files changed, 6 insertions(+)

Comments

Hauke Mehrtens Nov. 6, 2015, 9:42 p.m. UTC | #1
On 11/06/2015 10:11 PM, Kapil Hali wrote:
> From: Jon Mason <jonmason@broadcom.com>
> 
> Add SMP support for Broadcom's 4708 SoCs.
> 
> Signed-off-by: Jon Mason <jonmason@broadcom.com>
> Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
> Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
> Signed-off-by: Kapil Hali <kapilh@broadcom.com>

I tested this on a Netgear R6250 V1 (BCM4708) and SMP worked.

> ---
>  arch/arm/boot/dts/bcm4708.dtsi | 2 ++
>  arch/arm/mach-bcm/Kconfig      | 1 +
>  arch/arm/mach-bcm/Makefile     | 3 +++
>  3 files changed, 6 insertions(+)
> 

...

> --- a/arch/arm/mach-bcm/Kconfig
> +++ b/arch/arm/mach-bcm/Kconfig
> @@ -54,6 +54,7 @@ config ARCH_BCM_NSP
>  config ARCH_BCM_5301X
>  	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
>  	select ARCH_BCM_IPROC

You activated ARM_ERRATA_764369 for NSP is this not needed for NS?


> +	select HAVE_SMP
>  	help
>  	  Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
>  

...
Jon Mason Nov. 6, 2015, 10:54 p.m. UTC | #2
On Fri, Nov 06, 2015 at 10:42:41PM +0100, Hauke Mehrtens wrote:
> On 11/06/2015 10:11 PM, Kapil Hali wrote:
> > From: Jon Mason <jonmason@broadcom.com>
> > 
> > Add SMP support for Broadcom's 4708 SoCs.
> > 
> > Signed-off-by: Jon Mason <jonmason@broadcom.com>
> > Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
> > Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
> > Signed-off-by: Kapil Hali <kapilh@broadcom.com>
> 
> I tested this on a Netgear R6250 V1 (BCM4708) and SMP worked.
> 
> > ---
> >  arch/arm/boot/dts/bcm4708.dtsi | 2 ++
> >  arch/arm/mach-bcm/Kconfig      | 1 +
> >  arch/arm/mach-bcm/Makefile     | 3 +++
> >  3 files changed, 6 insertions(+)
> > 
> 
> ...
> 
> > --- a/arch/arm/mach-bcm/Kconfig
> > +++ b/arch/arm/mach-bcm/Kconfig
> > @@ -54,6 +54,7 @@ config ARCH_BCM_NSP
> >  config ARCH_BCM_5301X
> >  	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
> >  	select ARCH_BCM_IPROC
> 
> You activated ARM_ERRATA_764369 for NSP is this not needed for NS?

I'm not certain the CPU version, and without that it is difficult to
know what errata's are present in the underlying hardware.  My guess
is that all present in NSP are present in NS (for UP and SMP).  This
would put it as:
        select ARM_ERRATA_754322
        select ARM_ERRATA_775420
        select ARM_ERRATA_764369 if SMP

Would you like me to have them added?

Thanks,
Jon

> 
> 
> > +	select HAVE_SMP
> >  	help
> >  	  Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
> >  
> 
> ...
Scott Branden Nov. 6, 2015, 11:16 p.m. UTC | #3
Hi Hauke,

On 15-11-06 01:42 PM, Hauke Mehrtens wrote:
> On 11/06/2015 10:11 PM, Kapil Hali wrote:
>> From: Jon Mason <jonmason@broadcom.com>
>>
>> Add SMP support for Broadcom's 4708 SoCs.
>>
>> Signed-off-by: Jon Mason <jonmason@broadcom.com>
>> Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
>> Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
>> Signed-off-by: Kapil Hali <kapilh@broadcom.com>
>
> I tested this on a Netgear R6250 V1 (BCM4708) and SMP worked.
>
>> ---
>>   arch/arm/boot/dts/bcm4708.dtsi | 2 ++
>>   arch/arm/mach-bcm/Kconfig      | 1 +
>>   arch/arm/mach-bcm/Makefile     | 3 +++
>>   3 files changed, 6 insertions(+)
>>
>
> ...
>
>> --- a/arch/arm/mach-bcm/Kconfig
>> +++ b/arch/arm/mach-bcm/Kconfig
>> @@ -54,6 +54,7 @@ config ARCH_BCM_NSP
>>   config ARCH_BCM_5301X
>>   	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
>>   	select ARCH_BCM_IPROC
>
> You activated ARM_ERRATA_764369 for NSP is this not needed for NS?
>
You would have to read the ARM CPU register and then compare to ARM 
Errata to see whether the Errata affects NS or not.
>
>> +	select HAVE_SMP
>>   	help
>>   	  Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
>>
>
> ...
>

Regards,
Scott
Hauke Mehrtens Nov. 6, 2015, 11:27 p.m. UTC | #4
On 11/06/2015 11:54 PM, Jon Mason wrote:
> On Fri, Nov 06, 2015 at 10:42:41PM +0100, Hauke Mehrtens wrote:
>> On 11/06/2015 10:11 PM, Kapil Hali wrote:
>>> From: Jon Mason <jonmason@broadcom.com>
>>>
>>> Add SMP support for Broadcom's 4708 SoCs.
>>>
>>> Signed-off-by: Jon Mason <jonmason@broadcom.com>
>>> Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
>>> Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
>>> Signed-off-by: Kapil Hali <kapilh@broadcom.com>
>>
>> I tested this on a Netgear R6250 V1 (BCM4708) and SMP worked.
>>
>>> ---
>>>  arch/arm/boot/dts/bcm4708.dtsi | 2 ++
>>>  arch/arm/mach-bcm/Kconfig      | 1 +
>>>  arch/arm/mach-bcm/Makefile     | 3 +++
>>>  3 files changed, 6 insertions(+)
>>>
>>
>> ...
>>
>>> --- a/arch/arm/mach-bcm/Kconfig
>>> +++ b/arch/arm/mach-bcm/Kconfig
>>> @@ -54,6 +54,7 @@ config ARCH_BCM_NSP
>>>  config ARCH_BCM_5301X
>>>  	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
>>>  	select ARCH_BCM_IPROC
>>
>> You activated ARM_ERRATA_764369 for NSP is this not needed for NS?
> 
> I'm not certain the CPU version, and without that it is difficult to
> know what errata's are present in the underlying hardware.  My guess
> is that all present in NSP are present in NS (for UP and SMP).  This
> would put it as:
>         select ARM_ERRATA_754322
>         select ARM_ERRATA_775420
>         select ARM_ERRATA_764369 if SMP
> 
> Would you like me to have them added?
> 

I will send a separate patch adding all the workarounds for erratas in
the CPU core and the cache controller.

Hauke
Hauke Mehrtens Nov. 6, 2015, 11:41 p.m. UTC | #5
On 11/07/2015 12:27 AM, Hauke Mehrtens wrote:
> On 11/06/2015 11:54 PM, Jon Mason wrote:
>> On Fri, Nov 06, 2015 at 10:42:41PM +0100, Hauke Mehrtens wrote:
>>> On 11/06/2015 10:11 PM, Kapil Hali wrote:
>>>> From: Jon Mason <jonmason@broadcom.com>
>>>>
>>>> Add SMP support for Broadcom's 4708 SoCs.
>>>>
>>>> Signed-off-by: Jon Mason <jonmason@broadcom.com>
>>>> Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
>>>> Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
>>>> Signed-off-by: Kapil Hali <kapilh@broadcom.com>
>>>
>>> I tested this on a Netgear R6250 V1 (BCM4708) and SMP worked.
>>>
>>>> ---
>>>>  arch/arm/boot/dts/bcm4708.dtsi | 2 ++
>>>>  arch/arm/mach-bcm/Kconfig      | 1 +
>>>>  arch/arm/mach-bcm/Makefile     | 3 +++
>>>>  3 files changed, 6 insertions(+)
>>>>
>>>
>>> ...
>>>
>>>> --- a/arch/arm/mach-bcm/Kconfig
>>>> +++ b/arch/arm/mach-bcm/Kconfig
>>>> @@ -54,6 +54,7 @@ config ARCH_BCM_NSP
>>>>  config ARCH_BCM_5301X
>>>>  	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
>>>>  	select ARCH_BCM_IPROC
>>>
>>> You activated ARM_ERRATA_764369 for NSP is this not needed for NS?
>>
>> I'm not certain the CPU version, and without that it is difficult to
>> know what errata's are present in the underlying hardware.  My guess
>> is that all present in NSP are present in NS (for UP and SMP).  This
>> would put it as:
>>         select ARM_ERRATA_754322
>>         select ARM_ERRATA_775420
>>         select ARM_ERRATA_764369 if SMP
>>
>> Would you like me to have them added?
>>
> 
> I will send a separate patch adding all the workarounds for erratas in
> the CPU core and the cache controller.
> 
> Hauke
> 
> 
Hi,

BCM4708 uses a Cortex-A9 rev r3p0 and a L2C-310 rev r3p2. For this CPU
and cache controller the same workaround are needed as for NSP, if you
will resend this patch, please add all of them.

Hauke
Jon Mason Nov. 9, 2015, 3:29 p.m. UTC | #6
On Sat, Nov 07, 2015 at 12:41:21AM +0100, Hauke Mehrtens wrote:
> On 11/07/2015 12:27 AM, Hauke Mehrtens wrote:
> > On 11/06/2015 11:54 PM, Jon Mason wrote:
> >> On Fri, Nov 06, 2015 at 10:42:41PM +0100, Hauke Mehrtens wrote:
> >>> On 11/06/2015 10:11 PM, Kapil Hali wrote:
> >>>> From: Jon Mason <jonmason@broadcom.com>
> >>>>
> >>>> Add SMP support for Broadcom's 4708 SoCs.
> >>>>
> >>>> Signed-off-by: Jon Mason <jonmason@broadcom.com>
> >>>> Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
> >>>> Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
> >>>> Signed-off-by: Kapil Hali <kapilh@broadcom.com>
> >>>
> >>> I tested this on a Netgear R6250 V1 (BCM4708) and SMP worked.
> >>>
> >>>> ---
> >>>>  arch/arm/boot/dts/bcm4708.dtsi | 2 ++
> >>>>  arch/arm/mach-bcm/Kconfig      | 1 +
> >>>>  arch/arm/mach-bcm/Makefile     | 3 +++
> >>>>  3 files changed, 6 insertions(+)
> >>>>
> >>>
> >>> ...
> >>>
> >>>> --- a/arch/arm/mach-bcm/Kconfig
> >>>> +++ b/arch/arm/mach-bcm/Kconfig
> >>>> @@ -54,6 +54,7 @@ config ARCH_BCM_NSP
> >>>>  config ARCH_BCM_5301X
> >>>>  	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
> >>>>  	select ARCH_BCM_IPROC
> >>>
> >>> You activated ARM_ERRATA_764369 for NSP is this not needed for NS?
> >>
> >> I'm not certain the CPU version, and without that it is difficult to
> >> know what errata's are present in the underlying hardware.  My guess
> >> is that all present in NSP are present in NS (for UP and SMP).  This
> >> would put it as:
> >>         select ARM_ERRATA_754322
> >>         select ARM_ERRATA_775420
> >>         select ARM_ERRATA_764369 if SMP
> >>
> >> Would you like me to have them added?
> >>
> > 
> > I will send a separate patch adding all the workarounds for erratas in
> > the CPU core and the cache controller.
> > 
> > Hauke
> > 
> > 
> Hi,
> 
> BCM4708 uses a Cortex-A9 rev r3p0 and a L2C-310 rev r3p2. For this CPU
> and cache controller the same workaround are needed as for NSP, if you
> will resend this patch, please add all of them.

Agreed.  Kapil or I will mod the patch.

Thanks,
Jon

> 
> Hauke
diff mbox

Patch

diff --git a/arch/arm/boot/dts/bcm4708.dtsi b/arch/arm/boot/dts/bcm4708.dtsi
index 31141e8..22a41df 100644
--- a/arch/arm/boot/dts/bcm4708.dtsi
+++ b/arch/arm/boot/dts/bcm4708.dtsi
@@ -15,6 +15,8 @@ 
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
+		secondary-boot-reg = <0xffff0400>;
 
 		cpu@0 {
 			device_type = "cpu";
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index 2e9dbb5..4fc8fa3 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -54,6 +54,7 @@  config ARCH_BCM_NSP
 config ARCH_BCM_5301X
 	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
 	select ARCH_BCM_IPROC
+	select HAVE_SMP
 	help
 	  Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
 
diff --git a/arch/arm/mach-bcm/Makefile b/arch/arm/mach-bcm/Makefile
index 5193a25..7d66515 100644
--- a/arch/arm/mach-bcm/Makefile
+++ b/arch/arm/mach-bcm/Makefile
@@ -43,6 +43,9 @@  obj-$(CONFIG_ARCH_BCM2835)	+= board_bcm2835.o
 
 # BCM5301X
 obj-$(CONFIG_ARCH_BCM_5301X)	+= bcm_5301x.o
+ifeq ($(CONFIG_ARCH_BCM_5301X),y)
+obj-$(CONFIG_SMP)		+= platsmp.o
+endif
 
 # BCM63XXx
 ifeq ($(CONFIG_ARCH_BCM_63XX),y)