aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2016-04-09 10:25:16 +0000
committerJohn Crispin <blogic@openwrt.org>2016-04-09 10:25:16 +0000
commita9a032b4095fe30fb31131e23a9a7e2660b3db36 (patch)
tree090c1a94fda29eeb601708e9d588435fe28bb10e
parent258b9d03fd442e67b036ebcde287a76e1afdb7f0 (diff)
downloadmaster-187ad058-a9a032b4095fe30fb31131e23a9a7e2660b3db36.tar.gz
master-187ad058-a9a032b4095fe30fb31131e23a9a7e2660b3db36.tar.bz2
master-187ad058-a9a032b4095fe30fb31131e23a9a7e2660b3db36.zip
arc770: enable unaligned access handling simulation in software
This enables misaligned access handling by software in Linux kernel. With some wireless drivers (ath9k-htc and mt7601u for example) we see misaligned accesses here and there and to cope with that without fixing stuff in the drivers we're just gracefully handling it on ARC. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@49134 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--target/linux/arc770/config-4.45
-rw-r--r--target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch31
2 files changed, 34 insertions, 2 deletions
diff --git a/target/linux/arc770/config-4.4 b/target/linux/arc770/config-4.4
index c8f021dce2..87fd7e342f 100644
--- a/target/linux/arc770/config-4.4
+++ b/target/linux/arc770/config-4.4
@@ -19,7 +19,7 @@ CONFIG_ARC_DBG=y
# CONFIG_ARC_DBG_TLB_MISS_COUNT is not set
# CONFIG_ARC_DBG_TLB_PARANOIA is not set
CONFIG_ARC_DW2_UNWIND=y
-# CONFIG_ARC_EMUL_UNALIGNED is not set
+CONFIG_ARC_EMUL_UNALIGNED=y
# CONFIG_ARC_FPU_SAVE_RESTORE is not set
CONFIG_ARC_HAS_DCACHE=y
# CONFIG_ARC_HAS_DCCM is not set
@@ -162,7 +162,8 @@ CONFIG_SRCU=y
CONFIG_STACKTRACE=y
CONFIG_STMMAC_ETH=y
CONFIG_STMMAC_PLATFORM=y
-# CONFIG_SUNXI_SRAM is not set
+CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW=y
+CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN=y
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_USB_SUPPORT=y
diff --git a/target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch b/target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch
new file mode 100644
index 0000000000..76a9ce8968
--- /dev/null
+++ b/target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch
@@ -0,0 +1,31 @@
+From af737b55fc7c61f17da9ae89fba536e0a9338e98 Mon Sep 17 00:00:00 2001
+From: Alexey Brodkin <abrodkin@synopsys.com>
+Date: Mon, 14 Mar 2016 17:26:34 +0300
+Subject: [PATCH] arc: enable unaligned access in kernel mode
+
+This enables misaligned access handling even in kernel mode.
+Some wireless drivers (ath9k-htc and mt7601u) use misaligned accesses
+here and there and to cope with that without fixing stuff in the drivers
+we're just gracefully handling it on ARC.
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+---
+ arch/arc/kernel/unaligned.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arc/kernel/unaligned.c b/arch/arc/kernel/unaligned.c
+index abd961f..0b0cc97 100644
+--- a/arch/arc/kernel/unaligned.c
++++ b/arch/arc/kernel/unaligned.c
+@@ -206,7 +206,7 @@ int misaligned_fixup(unsigned long address, struct pt_regs *regs,
+ char buf[TASK_COMM_LEN];
+
+ /* handle user mode only and only if enabled by sysadmin */
+- if (!user_mode(regs) || !unaligned_enabled)
++ if (!unaligned_enabled)
+ return 1;
+
+ if (no_unaligned_warning) {
+--
+2.5.0
+