Skip to contentSkip to conversation

SMP support for Broadcom NSP

PATCH Applied Kapil Hali 6 participants 20 messages Dec 1, 2015 – Dec 6, 2015

Subsystems (5)

v4 of 6 Applied Latest is v6 →

lore
Share & tools
lore

Kapil Hali

author
#0 lore raw

v4 cover SMP support for Broadcom NSP

Change in v4:
* Cleaned up kona_smp.c and associated DT file.
* Corrected documentation for DT bindings.
* Corrected secondary-boot-reg entry for bcm4708 DT file.

Change in v3:
* Fixed patch subject from RESEND PATCH to PATCH
* Deleted arch/arm/mach-bcm/bcm_nsp.h file
* Removed inclusion of header file bcm_nsp.h in platsmp.c
* Removed unused variable 'timeout' in nsp_boot_secondary()

Changes in v2:
Removed the pen_holding method of SMP bringup for NSP SoC and replaced it with simple wakeup of secondary core using ARM IPI.

This series adds SMP support for Broadcom's Northstar Plus SoC.

There are similar SMP enablement methods for many ARMv7 bsed SoCs. BCM NSP SoC, has a typical such mechanism - after power-on, the secondary core is held in a standby state, primary core provides a startup address for the secondary core and wakes it up. Booting of the secondary core is serialized using pen_release global variable.

The startup address is programmed at a special register location which is defined in the device tree using a "secondary-boot-reg" property in a node whose "enable-method" property matches.

The first patch adds cpu-enable-method in the device tree bindings documentation. It also updates ARM CPU device tree documentation with Broadcom Northstar Plus CPU details.

The second patch adds SMP support to the BCM NSP device tree file.

The third patch, enables SMP on BCM NSP. It also consolidates common SMP handling between BCM NSP and BCM Kona.

The final patch, enables SMP on BCM 4708 and this patch is pulled in from Jon Mason's patch from the mailing list.

This patch series is constructed based on Linux v4.4-rc1.

The source code is available at GITHUB:
https://github.com/Broadcom/cygnus-linux/tree/nsp-smp-v2

Jon Mason (1):
ARM: BCM: Add SMP support for Broadcom 4708

Kapil Hali (4):
dt-bindings: add SMP enable-method for Broadcom NSP
ARM: BCM: Clean up SMP support for Broadcom Kona
ARM: dts: Add SMP support for Broadcom NSP
ARM: BCM: Add SMP support for Broadcom NSP

 .../bindings/arm/bcm/brcm,nsp-cpu-method.txt       |  39 ++++++
 Documentation/devicetree/bindings/arm/cpus.txt     |   1 +
 arch/arm/boot/dts/bcm-nsp.dtsi                     |  33 +++--
 arch/arm/boot/dts/bcm11351.dtsi                    |   2 +-
 arch/arm/boot/dts/bcm21664.dtsi                    |   2 +-
 arch/arm/boot/dts/bcm4708.dtsi                     |   2 +
 arch/arm/mach-bcm/Kconfig                          |   3 +
 arch/arm/mach-bcm/Makefile                         |  11 +-
 arch/arm/mach-bcm/{kona_smp.c => platsmp.c}        | 144 +++++++++++++++++----
 9 files changed, 193 insertions(+), 44 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt
 rename arch/arm/mach-bcm/{kona_smp.c => platsmp.c} (63%)
Signature · 1 line
2.1.0
author
#1 lore raw

PATCH v4 1/5 dt-bindings: add SMP enable-method for Broadcom NSP

Add a compatible string "brcm,bcm-nsp-smp" for Broadcom's Northstar Plus CPU to the 32-bit ARM CPU device tree binding documentation file and create a new binding documentation for Northstar Plus CPU.

---
 .../bindings/arm/bcm/brcm,nsp-cpu-method.txt       | 39 ++++++++++++++++++++++
 Documentation/devicetree/bindings/arm/cpus.txt     |  1 +
 2 files changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +39 -0
new file mode 100644
index 0000000..bf08872
@@ -0,0 +1,39 @@
+Broadcom Northstar Plus SoC CPU Enable Method
+---------------------------------------------
+This binding defines the enable method used for starting secondary
+CPUs in the following Broadcom SoCs:
+  BCM58522, BCM58525, BCM58535, BCM58622, BCM58623, BCM58625, BCM88312
+
+The enable method is specified by defining the following required
+properties in the "cpus" device tree node:
+  - enable-method = "brcm,bcm-nsp-smp";
+  - secondary-boot-reg = <...>;
+
+The secondary-boot-reg property is a u32 value that specifies the
+physical address of the register which should hold the common
+entry point for a secondary CPU. This entry is cpu node specific
+and should be added per cpu. E.g., in case of NSP (BCM58625) which
+is a dual core CPU SoC, this entry should be added to cpu1 node.
+
+
+Example:
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
+
+		cpu0: cpu at 0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			reg = <0>;
+		};
+
+		cpu1: cpu at 1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			reg = <1>;
+			secondary-boot-reg = <0xffff042c>;
+		};
+	};
Documentation/devicetree/bindings/arm/cpus.txt +1 -0
index 3a07a87..d191554 100644
@@ -190,6 +190,7 @@ nodes to be present and contain the properties described below.
 			    "allwinner,sun6i-a31"
 			    "allwinner,sun8i-a23"
 			    "arm,psci"
+			    "brcm,bcm-nsp-smp"
 			    "brcm,brahma-b15"
 			    "marvell,armada-375-smp"
 			    "marvell,armada-380-smp"
Signature · 1 line
2.1.0
#2 lore raw

Re: [PATCH v4 1/5] dt-bindings: add SMP enable-method for Broadcom NSP

Quoted 6 lines · Kapil Hali

Add a compatible string "brcm,bcm-nsp-smp" for Broadcom's Northstar Plus CPU to the 32-bit ARM CPU device tree binding documentation file and create a new binding documentation for Northstar Plus CPU.

Applied to devicetree/next, thanks!

Signature · 1 line
Florian
maintainer
#3 lore raw

Re: [PATCH v4 1/5] dt-bindings: add SMP enable-method for Broadcom NSP

In reply to Kapil Hali
Quoted 18 lines · Kapil Hali

Add a compatible string "brcm,bcm-nsp-smp" for Broadcom's Northstar Plus CPU to the 32-bit ARM CPU device tree binding documentation file and create a new binding documentation for Northstar Plus CPU.

---
 .../bindings/arm/bcm/brcm,nsp-cpu-method.txt       | 39 ++++++++++++++++++++++
 Documentation/devicetree/bindings/arm/cpus.txt     |  1 +
 2 files changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +0 -0
new file mode 100644
index 0000000..bf08872

Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt line 10

Quoted 10 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +10 -0
@@ -0,0 +1,39 @@
+Broadcom Northstar Plus SoC CPU Enable Method
+---------------------------------------------
+This binding defines the enable method used for starting secondary
+CPUs in the following Broadcom SoCs:
+  BCM58522, BCM58525, BCM58535, BCM58622, BCM58623, BCM58625, BCM88312
+
+The enable method is specified by defining the following required
+properties in the "cpus" device tree node:
+  - enable-method = "brcm,bcm-nsp-smp";
+  - secondary-boot-reg = <...>;

Both of these are supposed to be per cpu core.

Rob

Quoted 44 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +29 -0
+
+The secondary-boot-reg property is a u32 value that specifies the
+physical address of the register which should hold the common
+entry point for a secondary CPU. This entry is cpu node specific
+and should be added per cpu. E.g., in case of NSP (BCM58625) which
+is a dual core CPU SoC, this entry should be added to cpu1 node.
+
+
+Example:
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
+
+		cpu0: cpu at 0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			reg = <0>;
+		};
+
+		cpu1: cpu at 1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			reg = <1>;
+			secondary-boot-reg = <0xffff042c>;
+		};
+	};
Documentation/devicetree/bindings/arm/cpus.txt +1 -0
index 3a07a87..d191554 100644
@@ -190,6 +190,7 @@ nodes to be present and contain the properties described below.
 			    "allwinner,sun6i-a31"
 			    "allwinner,sun8i-a23"
 			    "arm,psci"
+			    "brcm,bcm-nsp-smp"
 			    "brcm,brahma-b15"
 			    "marvell,armada-375-smp"
 			    "marvell,armada-380-smp"
Signature · 1 line
2.1.0
author
#4 lore raw

Re: [PATCH v4 1/5] dt-bindings: add SMP enable-method for Broadcom NSP

Hi Rob,

Quoted 23 lines · Rob Herring
Quoted 22 lines · Kapil Hali

Add a compatible string "brcm,bcm-nsp-smp" for Broadcom's Northstar Plus CPU to the 32-bit ARM CPU device tree binding documentation file and create a new binding documentation for Northstar Plus CPU.

---
 .../bindings/arm/bcm/brcm,nsp-cpu-method.txt       | 39 ++++++++++++++++++++++
 Documentation/devicetree/bindings/arm/cpus.txt     |  1 +
 2 files changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +4 -0
new file mode 100644
index 0000000..bf08872
@@ -0,0 +1,39 @@
+Broadcom Northstar Plus SoC CPU Enable Method
+---------------------------------------------
+This binding defines the enable method used for starting secondary
+CPUs in the following Broadcom SoCs:
Quoted 8 lines

Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt line 10

Quoted 6 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +6 -0
+  BCM58522, BCM58525, BCM58535, BCM58622, BCM58623, BCM58625, BCM88312
+
+The enable method is specified by defining the following required
+properties in the "cpus" device tree node:
+  - enable-method = "brcm,bcm-nsp-smp";
+  - secondary-boot-reg = <...>;

Both of these are supposed to be per cpu core.

'enable-method' if not found in 'cpu' node is looked at in the 'cpus' node. Except for two-three SoC families, 'enable-method' is within 'cpus' node. Is my interpretation incorrect? Did I miss anything here?

Quoted 39 lines

Rob

Quoted 36 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +29 -0
+
+The secondary-boot-reg property is a u32 value that specifies the
+physical address of the register which should hold the common
+entry point for a secondary CPU. This entry is cpu node specific
+and should be added per cpu. E.g., in case of NSP (BCM58625) which
+is a dual core CPU SoC, this entry should be added to cpu1 node.
+
+
+Example:
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
+
+		cpu0: cpu at 0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			reg = <0>;
+		};
+
+		cpu1: cpu at 1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			reg = <1>;
+			secondary-boot-reg = <0xffff042c>;
+		};
+	};
Documentation/devicetree/bindings/arm/cpus.txt +0 -0
index 3a07a87..d191554 100644
@@ -190,6 +190,7 @@ nodes to be present and contain the properties described below.
 			    "allwinner,sun6i-a31"
 			    "allwinner,sun8i-a23"
Quoted 9 lines
Quoted 8 lines
Documentation/devicetree/bindings/arm/cpus.txt +1 -0
 			    "arm,psci"
+			    "brcm,bcm-nsp-smp"
 			    "brcm,brahma-b15"
 			    "marvell,armada-375-smp"
 			    "marvell,armada-380-smp"
Signature · 1 line
2.1.0

Thanks,
Kapil

#5 lore raw

Re: [PATCH v4 1/5] dt-bindings: add SMP enable-method for Broadcom NSP

Quoted 16 lines · Kapil Hali
Quoted 7 lines
Quoted 7 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +4 -0
@@ -0,0 +1,39 @@
+Broadcom Northstar Plus SoC CPU Enable Method
+---------------------------------------------
+This binding defines the enable method used for starting secondary
+CPUs in the following Broadcom SoCs:
Quoted 8 lines

Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt line 10

Quoted 6 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +6 -0
+  BCM58522, BCM58525, BCM58535, BCM58622, BCM58623, BCM58625, BCM88312
+
+The enable method is specified by defining the following required
+properties in the "cpus" device tree node:
+  - enable-method = "brcm,bcm-nsp-smp";
+  - secondary-boot-reg = <...>;

Both of these are supposed to be per cpu core.

Quoted 3 lines

'enable-method' if not found in 'cpu' node is looked at in the 'cpus' node. Except for two-three SoC families, 'enable-method' is within 'cpus' node. Is my interpretation incorrect? Did I miss anything here?

So, what do we do from here? I would appreciate a timely answer from the DT maintainers here so we can decide on the fate of this patch series for 4.5.

Thank you

Signature · 1 line
Florian
maintainer
#6 lore raw

Re: [PATCH v4 1/5] dt-bindings: add SMP enable-method for Broadcom NSP

In reply to Kapil Hali
Quoted 35 lines · Kapil Hali

Hi Rob,

Quoted 23 lines · Rob Herring
Quoted 22 lines · Kapil Hali

Add a compatible string "brcm,bcm-nsp-smp" for Broadcom's Northstar Plus CPU to the 32-bit ARM CPU device tree binding documentation file and create a new binding documentation for Northstar Plus CPU.

---
 .../bindings/arm/bcm/brcm,nsp-cpu-method.txt       | 39 ++++++++++++++++++++++
 Documentation/devicetree/bindings/arm/cpus.txt     |  1 +
 2 files changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +4 -0
new file mode 100644
index 0000000..bf08872
@@ -0,0 +1,39 @@
+Broadcom Northstar Plus SoC CPU Enable Method
+---------------------------------------------
+This binding defines the enable method used for starting secondary
+CPUs in the following Broadcom SoCs:
Quoted 8 lines

Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt line 10

Quoted 6 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +6 -0
+  BCM58522, BCM58525, BCM58535, BCM58622, BCM58623, BCM58625, BCM88312
+
+The enable method is specified by defining the following required
+properties in the "cpus" device tree node:
+  - enable-method = "brcm,bcm-nsp-smp";
+  - secondary-boot-reg = <...>;

Both of these are supposed to be per cpu core.

Quoted 3 lines

'enable-method' if not found in 'cpu' node is looked at in the 'cpus' node. Except for two-three SoC families, 'enable-method' is within 'cpus' node. Is my interpretation incorrect? Did I miss anything here?

I'm not sure how you counted, but it is much more than 2-3 that are correct (including all of PPC). It is quite mixed in dts files, but it is documented to be per cpu node, so lets follow the documentation please.

Rob

author
#7 lore raw

Re: [PATCH v4 1/5] dt-bindings: add SMP enable-method for Broadcom NSP

Hi Rob,

Quoted 40 lines · Rob Herring
Quoted 35 lines · Kapil Hali

Hi Rob,

Quoted 23 lines · Rob Herring
Quoted 22 lines · Kapil Hali

Add a compatible string "brcm,bcm-nsp-smp" for Broadcom's Northstar Plus CPU to the 32-bit ARM CPU device tree binding documentation file and create a new binding documentation for Northstar Plus CPU.

---
 .../bindings/arm/bcm/brcm,nsp-cpu-method.txt       | 39 ++++++++++++++++++++++
 Documentation/devicetree/bindings/arm/cpus.txt     |  1 +
 2 files changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +4 -0
new file mode 100644
index 0000000..bf08872
@@ -0,0 +1,39 @@
+Broadcom Northstar Plus SoC CPU Enable Method
+---------------------------------------------
+This binding defines the enable method used for starting secondary
+CPUs in the following Broadcom SoCs:
Quoted 8 lines

Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt line 10

Quoted 6 lines
Documentation/devicetree/bindings/arm/bcm/brcm,nsp-cpu-method.txt new file +6 -0
+  BCM58522, BCM58525, BCM58535, BCM58622, BCM58623, BCM58625, BCM88312
+
+The enable method is specified by defining the following required
+properties in the "cpus" device tree node:
+  - enable-method = "brcm,bcm-nsp-smp";
+  - secondary-boot-reg = <...>;

Both of these are supposed to be per cpu core.

Quoted 3 lines

'enable-method' if not found in 'cpu' node is looked at in the 'cpus' node. Except for two-three SoC families, 'enable-method' is within 'cpus' node. Is my interpretation incorrect? Did I miss anything here?

Quoted 7 lines

I'm not sure how you counted, but it is much more than 2-3 that are correct (including all of PPC). It is quite mixed in dts files, but it is documented to be per cpu node, so lets follow the documentation please.

Rob

I looked at arch/arm/* and not other arch types. But, as you said, let us keep it how it is in documentation and I have already updated latest patch set reflecting this change.

Thanks,
Kapil

author
#8 lore raw

PATCH v4 2/5 ARM: BCM: Clean up SMP support for Broadcom Kona

In reply to Kapil Hali

These changes cleans up SMP implementaion for Broadcom's Kona SoC which are required for handling SMP for iProc family of SoCs at a single place for BCM NSP and BCM Kona.

---
 arch/arm/boot/dts/bcm11351.dtsi |  2 +-
 arch/arm/boot/dts/bcm21664.dtsi |  2 +-
 arch/arm/mach-bcm/kona_smp.c    | 82 +++++++++++++++++++++++++++--------------
 3 files changed, 56 insertions(+), 30 deletions(-)
arch/arm/boot/dts/bcm11351.dtsi +1 -1
index 2ddaa51..3dc7a8c 100644
@@ -31,7 +31,6 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 		enable-method = "brcm,bcm11351-cpu-method";
-		secondary-boot-reg = <0x3500417c>;
 
 		cpu0: cpu at 0 {
 			device_type = "cpu";
@@ -42,6 +41,7 @@
 		cpu1: cpu at 1 {
 			device_type = "cpu";
 			compatible = "arm,cortex-a9";
+			secondary-boot-reg = <0x3500417c>;
 			reg = <1>;
 		};
 	};
arch/arm/boot/dts/bcm21664.dtsi +1 -1
index 2016b72..3f525be 100644
@@ -31,7 +31,6 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 		enable-method = "brcm,bcm11351-cpu-method";
-		secondary-boot-reg = <0x35004178>;
 
 		cpu0: cpu at 0 {
 			device_type = "cpu";
@@ -42,6 +41,7 @@
 		cpu1: cpu at 1 {
 			device_type = "cpu";
 			compatible = "arm,cortex-a9";
+			secondary-boot-reg = <0x35004178>;
 			reg = <1>;
 		};
 	};
arch/arm/mach-bcm/kona_smp.c +54 -28

146 lines not on this page · raw message

Signature · 1 line
2.1.0
#9 lore raw

Re: [PATCH v4 2/5] ARM: BCM: Clean up SMP support for Broadcom Kona

Quoted 5 lines · Kapil Hali

These changes cleans up SMP implementaion for Broadcom's Kona SoC which are required for handling SMP for iProc family of SoCs at a single place for BCM NSP and BCM Kona.

Applied to soc/next, thanks!

Signature · 1 line
Florian
#10 lore raw

Re: [PATCH v4 2/5] ARM: BCM: Clean up SMP support for Broadcom Kona

In reply to Kapil Hali
Quoted 3 lines · Kapil Hali

These changes cleans up SMP implementaion for Broadcom's Kona SoC which are required for handling SMP for iProc family of SoCs at a single place for BCM NSP and BCM Kona.

FWIW, I gave this patch a try on a Capri board, and this still brings-up the two CPUs successfully:

MMC read: dev # 0, block # 114688, count 32768 ...

100% (32768/32768 blocks)

32768 blocks read: OK

## Starting application at 0x80008000 ...

Uncompressing Linux... done, booting the kernel.

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.4.0-rc1-00005-ge49c96ed573e

(fainelli at fainelli-desktop) (gcc version 4.
8.5 (Broadcom stbgcc-4.8-1.4) ) #605 SMP Tue Dec 1 17:53:02 PST 2015

[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7),
cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing
instruction cache
[    0.000000] Machine model: BCM28155 AP board
[    0.000000] cma: Reserved 16 MiB at 0xbf000000
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 12 pages/cpu @ef7d3000 s18752 r8192
d22208 u49152
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.
Total pages: 260608
[    0.000000] Kernel command line: console=ttyS0,115200n8
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288
bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144
bytes)
[    0.000000] Memory: 1009696K/1048576K available (6384K kernel code,

279K rwdata, 2268K rodata, 4152
K init, 218K bss, 22496K reserved, 16384K cma-reserved, 245760K highmem)

[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc087b694   (8654 kB)
[    0.000000]       .init : 0xc087c000 - 0xc0c8a000   (4152 kB)
[    0.000000]       .data : 0xc0c8a000 - 0xc0ccfdf8   ( 280 kB)
[    0.000000]        .bss : 0xc0cd2000 - 0xc0d08bac   ( 219 kB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  Build-time adjustment of leaf fanout to 32.
[    0.000000]  RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32,
nr_cpu_ids=2
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] __ccu_wait_bit: slave_ccu/0x0484 bit 18 was never set
[    0.000000] __peri_clk_init: error initializing gate for bsc3
[    0.000000] Broadcom slave_ccu initialization had errors
[    0.000000] sched_clock: 32 bits at 1kHz, resolution 1000000ns, wraps
every 2147483647500000ns
[    0.000000] Console: colour dummy device 80x30
[    0.006000] Calibrating delay loop... 2383.87 BogoMIPS (lpj=1191936)
[    0.006000] pid_max: default: 32768 minimum: 301
[    0.006000] Mount-cache hash table entries: 2048 (order: 1, 8192
bytes)
[    0.006000] Mountpoint-cache hash table entries: 2048 (order: 1, 8192
bytes)
[    0.006000] CPU: Testing write buffer coherency: ok
[    0.006000] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.006000] Setting up static identity map for 0x800082c0 -
0x80008318
[    0.015000] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.015000] Brought up 2 CPUs
[    0.015000] SMP: Total of 2 processors activated (7200.76 BogoMIPS).
[    0.015000] CPU: All CPU(s) started in SVC mode.
[    0.015000] devtmpfs: initialized
[    0.016000] VFP support v0.3: implementor 41 architecture 3 part 30
variant 9 rev 4
[    0.016000] clocksource: jiffies: mask: 0xffffffff max_cycles:

0xffffffff, max_idle_ns: 19112604462
75000 ns

[    0.016000] pinctrl core: initialized pinctrl subsystem
[    0.017000] NET: Registered protocol family 16
[    0.017000] DMA: preallocated 256 KiB pool for atomic coherent
allocations
[    0.023000] cpuidle: using governor ladder
[    0.025000] cpuidle: using governor menu
[    0.026000] Kona Secure API initialized
[    0.026000] BCM-L2C-310 cache controller enabled, 16 ways, 512 kB
[    0.026000] BCM-L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x1e050000
[    0.026000] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1
watchpoint registers.
[    0.026000] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.033000] SCSI subsystem initialized
[    0.033000] usbcore: registered new interface driver usbfs
[    0.033000] usbcore: registered new interface driver hub
[    0.033000] usbcore: registered new device driver usb
[    0.033000] Linux video capture interface: v2.00
[    0.033000] pps_core: LinuxPPS API ver. 1 registered
[    0.033000] pps_core: Software ver. 5.3.6 - Copyright 2005-2007

Rodolfo Giometti <[email protected]

Quoted 1 line
[    0.033000] PTP clock support registered
[    0.034000] Advanced Linux Sound Architecture Driver Initialized.
[    0.037000] NET: Registered protocol family 2
[    0.037000] TCP established hash table entries: 8192 (order: 3, 32768
bytes)
[    0.038000] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.038000] TCP: Hash tables configured (established 8192 bind 8192)
[    0.038000] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.038000] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.038000] NET: Registered protocol family 1
[    0.038000] RPC: Registered named UNIX socket transport module.
[    0.038000] RPC: Registered udp transport module.
[    0.038000] RPC: Registered tcp transport module.
[    0.038000] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.114000] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.114000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.114000] NFS: Registering the id_resolver key type
[    0.114000] Key type id_resolver registered
[    0.114000] Key type id_legacy registered
[    0.114000] nfs4filelayout_init: NFSv4 File Layout Driver
Registering...
[    0.114000] jffs2: version 2.2. (NAND) ? 2001-2006 Red Hat, Inc.
[    0.114000] fuse init (API version 7.23)
[    0.115000] bounce: pool size: 64 pages
[    0.115000] Block layer SCSI generic (bsg) driver version 0.4 loaded
(major 252)
[    0.115000] io scheduler noop registered
[    0.115000] io scheduler deadline registered
[    0.115000] io scheduler cfq registered (default)
[    0.115000] bcm-kona-gpio 35003000.gpio: Setting up Kona GPIO
[    0.138000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.139000] console [ttyS0] disabled
[    0.139000] 3e000000.uart: ttyS0 at MMIO 0x3e000000 (irq = 17,
base_baud = 808290) is a 16550A
[    0.415000] console [ttyS0] enabled
[    0.421000] brd: module loaded
[    0.423000] loop: module loaded
[    0.424000] libphy: Fixed MDIO Bus: probed
[    0.425000] cnic: QLogic cnicDriver v2.5.22 (July 20, 2015)
[    0.426000] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[    0.427000] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.428000] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB
Ethernet driver
[    0.429000] usbcore: registered new interface driver pegasus
[    0.430000] usbcore: registered new interface driver asix
[    0.431000] usbcore: registered new interface driver ax88179_178a
[    0.432000] usbcore: registered new interface driver cdc_ether
[    0.433000] usbcore: registered new interface driver cdc_ncm
[    0.434000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI)
Driver
[    0.435000] ehci-pci: EHCI PCI platform driver
[    0.436000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.437000] ohci-pci: OHCI PCI platform driver
[    0.438000] usbcore: registered new interface driver usb-storage
[    0.439000] mousedev: PS/2 mouse device common for all mice
[    0.440000] i2c /dev entries driver
[    0.441000] bcm-kona-i2c 3e016000.i2c: device registered successfully
[    0.442000] bcm-kona-i2c 3e017000.i2c: device registered successfully
[    0.443000] bcm-kona-i2c 3e018000.i2c: device registered successfully
[    0.444000] bcm-kona-i2c 3500d000.i2c: device registered successfully
[    0.445000] gspca_main: v2.14.0 registered
[    0.446000] sdhci: Secure Digital Host Controller Interface driver
[    0.447000] sdhci: Copyright(c) Pierre Ossman
[    0.448000] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.452000] sdhci-kona 3f190000.sdio: No vmmc regulator found
[    0.453000] sdhci-kona 3f190000.sdio: No vqmmc regulator found
[    0.483000] mmc0: SDHCI controller on 3f190000.sdio [3f190000.sdio]
using ADMA
[    0.485000] sdhci-kona 3f1b0000.sdio: Got CD GPIO
[    0.489000] sdhci-kona 3f1b0000.sdio: No vmmc regulator found
[    0.490000] sdhci-kona 3f1b0000.sdio: No vqmmc regulator found
[    0.519000] mmc1: SDHCI controller on 3f1b0000.sdio [3f1b0000.sdio]
using ADMA
[    0.520000] usbcore: registered new interface driver usbhid
[    0.521000] usbhid: USB HID core driver
[    0.522000] NET: Registered protocol family 17
[    0.523000] bridge: automatic filtering via arp/ip/ip6tables has been

deprecated. Update your scrip
ts to load br_netfilter if you need this.

[    0.524000] 8021q: 802.1Q VLAN Support v1.8
[    0.525000] Key type dns_resolver registered
[    0.526000] Registering SWP/SWPB emulation handler
[    0.527000] ALSA device list:
[    0.528000]   No soundcards found.
[    0.529000] ttyS0 - failed to request DMA
[    0.531000] Freeing unused kernel memory: 4152K (c087c000 - c0c8a000)

starting pid 1114, tty '': '/etc/init.d/rcS'

Mounting virtual filesystems

[    0.548000] mmc0: MAN_BKOPS_EN bit is not set
[    0.554000] mmc0: new high speed MMC card at address 0001
[    0.557000] mmcblk0: mmc0:0001 016G4A 14.8 GiB
[    0.560000] mmcblk0boot0: mmc0:0001 016G4A partition 1 2.00 MiB

* WARNING: THIS STB CONTAINS GPLv3 SOFTWARE[ 0.564000] mmcblk0boot1:
mmc0:0001 016G4A partition 2 2
.00 MiB

* GPLv3 programs must be removed in order to enable security.

* See: http://www.gnu.org/licenses/gpl-faq.html#Tivoization

[    0.570000] mmcblk0rpmb: mmc0:0001 016G4A partition 3 256 KiB

Configuring lo interface

[    0.577000] Alternate GPT is invalid, using primary GPT.
[    0.580000]  mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14

p15
Starting network services

starting pid 1211, tty '': '/bin/cttyhack /bin/sh -l'

#

# ps awwux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 22.0 0.1 1928 1244 ? Ss 00:00 0:00 init

root 2 0.0 0.0 0 0 ? S 00:00 0:00
[kthreadd]
root 3 0.0 0.0 0 0 ? S 00:00 0:00
[ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 00:00 0:00
[kworker/0:0]
root 5 0.0 0.0 0 0 ? S< 00:00 0:00
[kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 00:00 0:00
[kworker/u4:0]
root 7 0.0 0.0 0 0 ? S 00:00 0:00
[rcu_sched]
root 8 0.0 0.0 0 0 ? S 00:00 0:00
[rcu_bh]
root 9 0.0 0.0 0 0 ? S 00:00 0:00
[migration/0]
root 10 0.0 0.0 0 0 ? S 00:00 0:00
[watchdog/0]
root 11 0.0 0.0 0 0 ? S 00:00 0:00
[watchdog/1]
root 12 0.0 0.0 0 0 ? S 00:00 0:00
[migration/1]
root 13 0.0 0.0 0 0 ? S 00:00 0:00
[ksoftirqd/1]
root 14 0.0 0.0 0 0 ? S 00:00 0:00
[kworker/1:0]
root 15 0.0 0.0 0 0 ? S< 00:00 0:00
[kworker/1:0H]
root 16 0.0 0.0 0 0 ? S 00:00 0:00
[kdevtmpfs]
root 17 2.0 0.0 0 0 ? S 00:00 0:00
[kworker/u4:1]
root 18 0.0 0.0 0 0 ? S< 00:00 0:00 [perf]

root 24 0.0 0.0 0 0 ? S 00:00 0:00
[kworker/u4:2]
root 248 0.0 0.0 0 0 ? S 00:00 0:00
[khungtaskd]
root 249 0.0 0.0 0 0 ? S< 00:00 0:00
[writeback]
root 250 0.0 0.0 0 0 ? S< 00:00 0:00
[crypto]
root 252 0.0 0.0 0 0 ? S< 00:00 0:00
[bioset]
root 253 0.0 0.0 0 0 ? S 00:00 0:00
[kworker/0:1]
root 254 0.0 0.0 0 0 ? S< 00:00 0:00
[kblockd]
root 256 0.0 0.0 0 0 ? S< 00:00 0:00
[ata_sff]
root 376 0.0 0.0 0 0 ? S< 00:00 0:00
[rpciod]

root       389  0.0  0.0      0     0 ?        S    00:00   0:00 [kswapd0]
root       390  0.0  0.0      0     0 ?        S    00:00   0:00
[fsnotify_mark]
root       391  0.0  0.0      0     0 ?        S<   00:00   0:00 [nfsiod]
root       943  0.0  0.0      0     0 ?        S    00:00   0:00
[kworker/1:1]
root       947  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       950  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       951  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       952  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       953  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       954  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       955  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       956  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       957  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       958  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       959  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       960  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       961  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       962  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       963  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       964  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root       998  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1001  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1004  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1007  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1010  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1013  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1016  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1019  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1051  0.0  0.0      0     0 ?        S<   00:00   0:00 [cnic_wq]
root      1074  0.0  0.0      0     0 ?        S<   00:00   0:00 [kpsmoused]
root      1092  0.0  0.0      0     0 ?        S    00:00   0:00

[irq/24-mmc0]
root 1094 0.0 0.0 0 0 ? S 00:00 0:00
[irq/25-mmc1]
root 1096 0.0 0.0 0 0 ? S 00:00 0:00
[irq/31-3f1b0000]

root      1111  0.0  0.0      0     0 ?        S<   00:00   0:00 [deferwq]
root      1127  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1130  0.0  0.0      0     0 ?        S    00:00   0:00 [mmcqd/0]
root      1131  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1133  0.0  0.0      0     0 ?        S    00:00   0:00
[mmcqd/0boot0]
root      1134  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1137  0.0  0.0      0     0 ?        S    00:00   0:00
[mmcqd/0boot1]
root      1138  0.0  0.0      0     0 ?        S<   00:00   0:00 [bioset]
root      1140  0.0  0.0      0     0 ?        S    00:00   0:00
[mmcqd/0rpmb]
bin       1174  0.0  0.1   1452  1072 ?        Ss   00:00   0:00 portmap
root      1210  0.0  0.0   1928    56 ?        Ss   00:00   0:00 telnetd
root      1211  0.0  0.1   1968  1632 ttyS0    Ss   00:00   0:00 /bin/sh -l
root      1219  0.0  0.1   1948  1124 ttyS0    R+   00:00   0:00 ps awwux

c# cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 2383.87
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

processor : 1
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 4816.89
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

Hardware : BCM281xx Broadcom Application Processor
Revision : 0000
Serial : 0000000000000000
#

Signature · 1 line
Florian
author
#11 lore raw

PATCH v4 3/5 ARM: dts: Add SMP support for Broadcom NSP

In reply to Kapil Hali

Add device tree changes required for providing SMP support for Broadcom Northstar Plus SoC.

---
 arch/arm/boot/dts/bcm-nsp.dtsi | 33 +++++++++++++++++++++------------
 1 file changed, 21 insertions(+), 12 deletions(-)
arch/arm/boot/dts/bcm-nsp.dtsi +21 -12
index 58aca27..4c52417 100644
@@ -40,24 +40,33 @@
 	model = "Broadcom Northstar Plus SoC";
 	interrupt-parent = <&gic>;
 
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
+
+		cpu at 0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			reg = <0x0>;
+		};
+
+		cpu at 1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a9";
+			next-level-cache = <&L2>;
+			secondary-boot-reg = <0xffff042c>;
+			reg = <0x1>;
+		};
+	};
+
 	mpcore {
 		compatible = "simple-bus";
 		ranges = <0x00000000 0x19020000 0x00003000>;
 		#address-cells = <1>;
 		#size-cells = <1>;
 
-		cpus {
-			#address-cells = <1>;
-			#size-cells = <0>;
-
-			cpu at 0 {
-				device_type = "cpu";
-				compatible = "arm,cortex-a9";
-				next-level-cache = <&L2>;
-				reg = <0x0>;
-			};
-		};
-
 		L2: l2-cache {
 			compatible = "arm,pl310-cache";
 			reg = <0x2000 0x1000>;
Signature · 1 line
2.1.0
#12 lore raw

Re: [PATCH v4 3/5] ARM: dts: Add SMP support for Broadcom NSP

Quoted 4 lines · Kapil Hali

Add device tree changes required for providing SMP support for Broadcom Northstar Plus SoC.

Applied to devicetree/next, thanks!

Signature · 1 line
Florian
author
#13 lore raw

PATCH v4 4/5 ARM: BCM: Add SMP support for Broadcom NSP

In reply to Kapil Hali

Add SMP support for Broadcom's Northstar Plus SoC cpu enable method. This changes also consolidates iProc family's - BCM NSP and BCM Kona, platform SMP handling in a common file.

Northstar Plus SoC is based on ARM Cortex-A9 revision r3p0 which requires configuration for ARM Errata 764369 for SMP. This change adds the needed configuration option.

---
 arch/arm/mach-bcm/Kconfig                   |  2 +
 arch/arm/mach-bcm/Makefile                  |  8 +++-
 arch/arm/mach-bcm/{kona_smp.c => platsmp.c} | 64 ++++++++++++++++++++++++++++-
 3 files changed, 71 insertions(+), 3 deletions(-)
 rename arch/arm/mach-bcm/{kona_smp.c => platsmp.c} (81%)
arch/arm/mach-bcm/Kconfig +2 -0
index 8c53c55..83765a0 100644
@@ -40,6 +40,8 @@ config ARCH_BCM_NSP
 	select ARCH_BCM_IPROC
 	select ARM_ERRATA_754322
 	select ARM_ERRATA_775420
+	select ARM_ERRATA_764369 if SMP
+	select HAVE_SMP
 	help
 	  Support for Broadcom Northstar Plus SoC.
 	  Broadcom Northstar Plus family of SoCs are used for switching control
arch/arm/mach-bcm/Makefile +6 -2
index 892261f..5193a25 100644
@@ -14,7 +14,11 @@
 obj-$(CONFIG_ARCH_BCM_CYGNUS) +=  bcm_cygnus.o
 
 # Northstar Plus
-obj-$(CONFIG_ARCH_BCM_NSP) += bcm_nsp.o
+obj-$(CONFIG_ARCH_BCM_NSP)	+= bcm_nsp.o
+
+ifeq ($(CONFIG_ARCH_BCM_NSP),y)
+obj-$(CONFIG_SMP)		+= platsmp.o
+endif
 
 # BCM281XX
 obj-$(CONFIG_ARCH_BCM_281XX)	+= board_bcm281xx.o
@@ -23,7 +27,7 @@ obj-$(CONFIG_ARCH_BCM_281XX)	+= board_bcm281xx.o
 obj-$(CONFIG_ARCH_BCM_21664)	+= board_bcm21664.o
 
 # BCM281XX and BCM21664 SMP support
-obj-$(CONFIG_ARCH_BCM_MOBILE_SMP) += kona_smp.o
+obj-$(CONFIG_ARCH_BCM_MOBILE_SMP) += platsmp.o
 
 # BCM281XX and BCM21664 L2 cache control
 obj-$(CONFIG_ARCH_BCM_MOBILE_L2_CACHE) += kona_l2_cache.o
arch/arm/mach-bcm/platsmp.c renamed from arch/arm/mach-bcm/kona_smp.c +63 -1

90 lines not on this page · raw message

Signature · 1 line
2.1.0
#14 lore raw

Re: [PATCH v4 4/5] ARM: BCM: Add SMP support for Broadcom NSP

Quoted 11 lines · Kapil Hali

Add SMP support for Broadcom's Northstar Plus SoC cpu enable method. This changes also consolidates iProc family's - BCM NSP and BCM Kona, platform SMP handling in a common file.

Northstar Plus SoC is based on ARM Cortex-A9 revision r3p0 which requires configuration for ARM Errata 764369 for SMP. This change adds the needed configuration option.

Applied to soc/next, thanks!

Signature · 1 line
Florian
author
#15 lore raw

PATCH v4 5/5 ARM: BCM: Add SMP support for Broadcom 4708

In reply to Kapil Hali

From: Jon Mason <[email protected]>

Add SMP support for Broadcom's 4708 SoCs.

---
 arch/arm/boot/dts/bcm4708.dtsi | 2 ++
 arch/arm/mach-bcm/Kconfig      | 1 +
 arch/arm/mach-bcm/Makefile     | 3 +++
 3 files changed, 6 insertions(+)
arch/arm/boot/dts/bcm4708.dtsi +2 -0
index 31141e8..eed4dd1 100644
@@ -15,6 +15,7 @@
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
 
 		cpu at 0 {
 			device_type = "cpu";
@@ -27,6 +28,7 @@
 			device_type = "cpu";
 			compatible = "arm,cortex-a9";
 			next-level-cache = <&L2>;
+			secondary-boot-reg = <0xffff0400>;
 			reg = <0x1>;
 		};
 	};
arch/arm/mach-bcm/Kconfig +1 -0
index 83765a0..e85246f 100644
@@ -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.
 
arch/arm/mach-bcm/Makefile +3 -0
index 5193a25..7d66515 100644
@@ -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)
Signature · 1 line
2.1.0
#17 lore raw

Re: [PATCH v4 5/5] ARM: BCM: Add SMP support for Broadcom 4708

In reply to Kapil Hali
Quoted 39 lines · Kapil Hali

From: Jon Mason <[email protected]>

Add SMP support for Broadcom's 4708 SoCs.

---
 arch/arm/boot/dts/bcm4708.dtsi | 2 ++
 arch/arm/mach-bcm/Kconfig      | 1 +
 arch/arm/mach-bcm/Makefile     | 3 +++
 3 files changed, 6 insertions(+)
arch/arm/boot/dts/bcm4708.dtsi +2 -0
index 31141e8..eed4dd1 100644
@@ -15,6 +15,7 @@
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
 
 		cpu at 0 {
 			device_type = "cpu";
@@ -27,6 +28,7 @@
 			device_type = "cpu";
 			compatible = "arm,cortex-a9";
 			next-level-cache = <&L2>;
+			secondary-boot-reg = <0xffff0400>;
 			reg = <0x1>;
 		};
 	};
arch/arm/mach-bcm/Kconfig +0 -0
index 83765a0..e85246f 100644

arch/arm/mach-bcm/Kconfig config ARCH_BCM_NSP · line 60

Quoted 7 lines
arch/arm/mach-bcm/Kconfig +1 -0
@@ -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.
 

When applying this patch please make sure it is correctly applied this patch causes some problems here:

http://www.spinics.net/lists/arm-kernel/msg462137.html

Quoted 6 lines
arch/arm/mach-bcm/Makefile +0 -0
index 5193a25..7d66515 100644

arch/arm/mach-bcm/Makefile obj-$(CONFIG_ARCH_BCM2835) += board_bcm2835.o · line 51

Quoted 9 lines
arch/arm/mach-bcm/Makefile +3 -0
@@ -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)

I am getting this on a Northstar 1 / BCM4708:

[ 0.137634] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.143643] Setting up static identity map for 0x82a0 - 0x82d4
[ 0.189772] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.189861] Brought up 2 CPUs
[ 0.198845] SMP: Total of 2 processors activated (3188.32 BogoMIPS).
[ 0.205446] CPU: WARNING: CPU(s) started in wrong/inconsistent modes
(primary CPU mode 0x13)
[ 0.214167] CPU: This may indicate a broken bootloader or firmware.

I assume that this is correct and the bootloader is just broken, it uses this bootloader: "CFE for Foxconn Router version: v1.0.14", I haven't noticed any problems, so it is ok for me.

Hauke

#18 lore raw

Re: [PATCH v4 5/5] ARM: BCM: Add SMP support for Broadcom 4708

Quoted 80 lines · Hauke Mehrtens
Quoted 39 lines · Kapil Hali

From: Jon Mason <[email protected]>

Add SMP support for Broadcom's 4708 SoCs.

---
 arch/arm/boot/dts/bcm4708.dtsi | 2 ++
 arch/arm/mach-bcm/Kconfig      | 1 +
 arch/arm/mach-bcm/Makefile     | 3 +++
 3 files changed, 6 insertions(+)
arch/arm/boot/dts/bcm4708.dtsi +2 -0
index 31141e8..eed4dd1 100644
@@ -15,6 +15,7 @@
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
 
 		cpu at 0 {
 			device_type = "cpu";
@@ -27,6 +28,7 @@
 			device_type = "cpu";
 			compatible = "arm,cortex-a9";
 			next-level-cache = <&L2>;
+			secondary-boot-reg = <0xffff0400>;
 			reg = <0x1>;
 		};
 	};
arch/arm/mach-bcm/Kconfig +0 -0
index 83765a0..e85246f 100644

arch/arm/mach-bcm/Kconfig config ARCH_BCM_NSP · line 60

Quoted 7 lines
arch/arm/mach-bcm/Kconfig +1 -0
@@ -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.
 

When applying this patch please make sure it is correctly applied this patch causes some problems here:

http://www.spinics.net/lists/arm-kernel/msg462137.html

Quoted 6 lines
arch/arm/mach-bcm/Makefile +0 -0
index 5193a25..7d66515 100644

arch/arm/mach-bcm/Makefile obj-$(CONFIG_ARCH_BCM2835) += board_bcm2835.o · line 51

Quoted 9 lines
arch/arm/mach-bcm/Makefile +3 -0
@@ -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)

I am getting this on a Northstar 1 / BCM4708:

[ 0.137634] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.143643] Setting up static identity map for 0x82a0 - 0x82d4
[ 0.189772] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.189861] Brought up 2 CPUs
[ 0.198845] SMP: Total of 2 processors activated (3188.32 BogoMIPS).
[ 0.205446] CPU: WARNING: CPU(s) started in wrong/inconsistent modes
(primary CPU mode 0x13)
[ 0.214167] CPU: This may indicate a broken bootloader or firmware.
Quoted 3 lines

I assume that this is correct and the bootloader is just broken, it uses this bootloader: "CFE for Foxconn Router version: v1.0.14", I haven't noticed any problems, so it is ok for me.

On my 4708 SVK, I see the same issue

[    0.090877] CPU: Testing write buffer coherency: ok
[    0.091231] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.091377] Setting up static identity map for 0x82a0 - 0x82f8
[    0.130146] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.130251] Brought up 2 CPUs
[    0.130323] SMP: Total of 2 processors activated (3188.32 BogoMIPS).
[    0.130345] CPU: WARNING: CPU(s) started in wrong/inconsistent modes (primary CPU mode 0x13)
[    0.130374] CPU: This may indicate a broken bootloader or firmware.

I'll investigate it more and see if I can bottom out on the cause.

Thanks,
Jon

Quoted 2 lines

Hauke

#19 lore raw

Re: [PATCH v4 5/5] ARM: BCM: Add SMP support for Broadcom 4708

Quoted 96 lines · Jon Mason
Quoted 80 lines · Hauke Mehrtens
Quoted 39 lines · Kapil Hali

From: Jon Mason <[email protected]>

Add SMP support for Broadcom's 4708 SoCs.

---
 arch/arm/boot/dts/bcm4708.dtsi | 2 ++
 arch/arm/mach-bcm/Kconfig      | 1 +
 arch/arm/mach-bcm/Makefile     | 3 +++
 3 files changed, 6 insertions(+)
arch/arm/boot/dts/bcm4708.dtsi +2 -0
index 31141e8..eed4dd1 100644
@@ -15,6 +15,7 @@
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
+		enable-method = "brcm,bcm-nsp-smp";
 
 		cpu at 0 {
 			device_type = "cpu";
@@ -27,6 +28,7 @@
 			device_type = "cpu";
 			compatible = "arm,cortex-a9";
 			next-level-cache = <&L2>;
+			secondary-boot-reg = <0xffff0400>;
 			reg = <0x1>;
 		};
 	};
arch/arm/mach-bcm/Kconfig +0 -0
index 83765a0..e85246f 100644

arch/arm/mach-bcm/Kconfig config ARCH_BCM_NSP · line 60

Quoted 7 lines
arch/arm/mach-bcm/Kconfig +1 -0
@@ -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.
 

When applying this patch please make sure it is correctly applied this patch causes some problems here:

http://www.spinics.net/lists/arm-kernel/msg462137.html

Quoted 6 lines
arch/arm/mach-bcm/Makefile +0 -0
index 5193a25..7d66515 100644

arch/arm/mach-bcm/Makefile obj-$(CONFIG_ARCH_BCM2835) += board_bcm2835.o · line 51

Quoted 9 lines
arch/arm/mach-bcm/Makefile +3 -0
@@ -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)

I am getting this on a Northstar 1 / BCM4708:

[ 0.137634] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.143643] Setting up static identity map for 0x82a0 - 0x82d4
[ 0.189772] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.189861] Brought up 2 CPUs
[ 0.198845] SMP: Total of 2 processors activated (3188.32 BogoMIPS).
[ 0.205446] CPU: WARNING: CPU(s) started in wrong/inconsistent modes
(primary CPU mode 0x13)
[ 0.214167] CPU: This may indicate a broken bootloader or firmware.
Quoted 3 lines

I assume that this is correct and the bootloader is just broken, it uses this bootloader: "CFE for Foxconn Router version: v1.0.14", I haven't noticed any problems, so it is ok for me.

On my 4708 SVK, I see the same issue

[    0.090877] CPU: Testing write buffer coherency: ok
[    0.091231] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.091377] Setting up static identity map for 0x82a0 - 0x82f8
[    0.130146] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.130251] Brought up 2 CPUs
[    0.130323] SMP: Total of 2 processors activated (3188.32 BogoMIPS).
[    0.130345] CPU: WARNING: CPU(s) started in wrong/inconsistent modes (primary CPU mode 0x13)
[    0.130374] CPU: This may indicate a broken bootloader or firmware.
Quoted 1 line

I'll investigate it more and see if I can bottom out on the cause.

I looked at previous versions of this patch, and the issue appears to be present there as well. I'm not sure why I didn't notice it before.

I don't think "fixing" CFE is an option. Should we investigate the possibility of setting the CPU mode of CPU1 in the early_boot of Linux?

Thanks,
Jon

Quoted 7 lines

Thanks,
Jon

Quoted 2 lines

Hauke