brcm63xx: sync mips counters during bringup of cpus
authorJonas Gorski <jogo@openwrt.org>
Sat, 5 Apr 2014 18:32:34 +0000 (18:32 +0000)
committerJonas Gorski <jogo@openwrt.org>
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>
SVN-Revision: 40387

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 ab022aec77d8c9cef71fd5cd603b06cac9aa3624..725a827a105a9b6717074245e0b3af3e9abbb67f 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 2ab663ef15c0ccb0231572db5581f47aa68e946b..9a044ec743c806a873007aecef43010e4a0626fd 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