brcm63xx: sync mips counters during bringup of cpus
authorjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 5 Apr 2014 18:32:34 +0000 (18:32 +0000)
committerjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 5 Apr 2014 18:32:34 +0000 (18:32 +0000)
Fixes gettimeofday returning different values depending on which cpu
it is called.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@40387 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/brcm63xx/config-3.10
target/linux/brcm63xx/config-3.14
target/linux/brcm63xx/patches-3.10/101-MIPS-BCM63XX-sync-mips-counter-during-cpu-bringup.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-3.14/101-MIPS-BCM63XX-sync-mips-counter-during-cpu-bringup.patch [new file with mode: 0644]

index ab022ae..725a827 100644 (file)
@@ -172,6 +172,7 @@ CONFIG_SSB_PCIHOST_POSSIBLE=y
 CONFIG_SSB_SPROM=y
 CONFIG_SWAP_IO_SPACE=y
 CONFIG_SWCONFIG=y
+CONFIG_SYNC_R4K=y
 CONFIG_SYS_HAS_CPU_BMIPS=y
 CONFIG_SYS_HAS_CPU_BMIPS32_3300=y
 CONFIG_SYS_HAS_CPU_BMIPS4350=y
index 2ab663e..9a044ec 100644 (file)
@@ -181,6 +181,7 @@ CONFIG_SSB_PCIHOST_POSSIBLE=y
 CONFIG_SSB_SPROM=y
 CONFIG_SWAP_IO_SPACE=y
 CONFIG_SWCONFIG=y
+CONFIG_SYNC_R4K=y
 CONFIG_SYS_HAS_CPU_BMIPS=y
 CONFIG_SYS_HAS_CPU_BMIPS32_3300=y
 CONFIG_SYS_HAS_CPU_BMIPS4350=y
diff --git a/target/linux/brcm63xx/patches-3.10/101-MIPS-BCM63XX-sync-mips-counter-during-cpu-bringup.patch b/target/linux/brcm63xx/patches-3.10/101-MIPS-BCM63XX-sync-mips-counter-during-cpu-bringup.patch
new file mode 100644 (file)
index 0000000..21fffb3
--- /dev/null
@@ -0,0 +1,27 @@
+From 23c21090f49a64b532755542a71e9aa3e4fc84d9 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jogo@openwrt.org>
+Date: Sat, 5 Apr 2014 20:07:25 +0200
+Subject: [PATCH] MIPS: BCM63XX: sync mips counter during cpu bringup
+
+We are using the mips counters as the clock source, so we need to ensure
+they are synced, else e.g. gettimeofday will return different values
+depending on which core it was run.
+
+Observed difference was about 8 seconds, causing ~8 seconds ping or time
+running backwards for some programs.
+
+Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+---
+ arch/mips/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/mips/Kconfig
++++ b/arch/mips/Kconfig
+@@ -127,6 +127,7 @@ config BCM63XX
+       select BOOT_RAW
+       select CEVT_R4K
+       select CSRC_R4K
++      select SYNC_R4K
+       select DMA_NONCOHERENT
+       select IRQ_CPU
+       select NR_CPUS_DEFAULT_2
diff --git a/target/linux/brcm63xx/patches-3.14/101-MIPS-BCM63XX-sync-mips-counter-during-cpu-bringup.patch b/target/linux/brcm63xx/patches-3.14/101-MIPS-BCM63XX-sync-mips-counter-during-cpu-bringup.patch
new file mode 100644 (file)
index 0000000..f303c61
--- /dev/null
@@ -0,0 +1,27 @@
+From 23c21090f49a64b532755542a71e9aa3e4fc84d9 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jogo@openwrt.org>
+Date: Sat, 5 Apr 2014 20:07:25 +0200
+Subject: [PATCH] MIPS: BCM63XX: sync mips counter during cpu bringup
+
+We are using the mips counters as the clock source, so we need to ensure
+they are synced, else e.g. gettimeofday will return different values
+depending on which core it was run.
+
+Observed difference was about 8 seconds, causing ~8 seconds ping or time
+running backwards for some programs.
+
+Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+---
+ arch/mips/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/mips/Kconfig
++++ b/arch/mips/Kconfig
+@@ -132,6 +132,7 @@ config BCM63XX
+       select BOOT_RAW
+       select CEVT_R4K
+       select CSRC_R4K
++      select SYNC_R4K
+       select DMA_NONCOHERENT
+       select IRQ_CPU
+       select SYS_SUPPORTS_32BIT_KERNEL