From patchwork Fri Apr 1 14:43:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Brodkin X-Patchwork-Id: 604855 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (caladan.dune.hu [78.24.191.180]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3qc3zf4H64z9sDG for ; Sat, 2 Apr 2016 01:43:58 +1100 (AEDT) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 30C3CB809DF; Fri, 1 Apr 2016 16:43:33 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on arrakis.dune.hu X-Spam-Level: ** X-Spam-Status: No, score=2.4 required=5.0 tests=RDNS_NONE autolearn=no autolearn_force=no version=3.4.1 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP; Fri, 1 Apr 2016 16:43:33 +0200 (CEST) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 9ED2EB809DF for ; Fri, 1 Apr 2016 16:43:31 +0200 (CEST) X-policyd-weight: using cached result; rate: -7 Received: from smtprelay.synopsys.com (unknown [198.182.47.9]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Fri, 1 Apr 2016 16:43:31 +0200 (CEST) Received: from dc8secmta1.synopsys.com (dc8secmta1.synopsys.com [10.13.218.200]) by smtprelay.synopsys.com (Postfix) with ESMTP id B8E7324E1214; Fri, 1 Apr 2016 07:43:28 -0700 (PDT) Received: from dc8secmta1.internal.synopsys.com (dc8secmta1.internal.synopsys.com [127.0.0.1]) by dc8secmta1.internal.synopsys.com (Service) with ESMTP id 51F3A27113; Fri, 1 Apr 2016 07:43:28 -0700 (PDT) Received: from mailhost.synopsys.com (unknown [10.13.184.66]) by dc8secmta1.internal.synopsys.com (Service) with ESMTP id 2CD7227102; Fri, 1 Apr 2016 07:43:28 -0700 (PDT) Received: from mailhost.synopsys.com (localhost [127.0.0.1]) by mailhost.synopsys.com (Postfix) with ESMTP id 1D1CE933; Fri, 1 Apr 2016 07:43:28 -0700 (PDT) Received: from ltrimas-z400.internal.synopsys.com (ltrimas-z400.internal.synopsys.com [10.121.8.149]) by mailhost.synopsys.com (Postfix) with ESMTP id 25CE592F; Fri, 1 Apr 2016 07:43:26 -0700 (PDT) From: Alexey Brodkin To: John Crispin Date: Fri, 1 Apr 2016 17:43:25 +0300 Message-Id: <1459521805-16197-1-git-send-email-abrodkin@synopsys.com> X-Mailer: git-send-email 2.5.0 Subject: [OpenWrt-Devel] [PATCH] arc770: enable unaligned access handling simulation in software X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: openwrt-devel@lists.openwrt.org, Alexey Brodkin MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" 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 --- target/linux/arc770/config-4.4 | 5 ++-- ...rc-enable-unaligned-access-in-kernel-mode.patch | 31 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch diff --git a/target/linux/arc770/config-4.4 b/target/linux/arc770/config-4.4 index c8f021d..87fd7e3 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 0000000..76a9ce8 --- /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 +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 +--- + 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 +