From: Noam Camus <noamca@mellanox.com>
To: linux-snps-arc@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, Noam Camus <noamca@mellanox.com>,
Elad Kanfi <eladkan@mellanox.com>
Subject: [PATCH v2 01/12] ARC: [plat-eznps] Handle memory error as an exception
Date: Tue, 13 Jun 2017 17:03:45 +0300 [thread overview]
Message-ID: <1497362636-30353-2-git-send-email-noamca@mellanox.com> (raw)
In-Reply-To: <1497362636-30353-1-git-send-email-noamca@mellanox.com>
From: Noam Camus <noamca@mellanox.com>
On ARC700, user mode memory error is treated as L2 interrupt, but NPS
hardware treats it as Machine Check exception.
Address this by defining an NPS specific bus error handler.
Signed-off-by: Noam Camus <noamca@mellanox.com>
Signed-off-by: Elad Kanfi <eladkan@mellanox.com>
---
arch/arc/kernel/traps.c | 2 +-
arch/arc/plat-eznps/Kconfig | 12 ++++++++++++
arch/arc/plat-eznps/mtm.c | 11 +++++++++++
3 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/arch/arc/kernel/traps.c b/arch/arc/kernel/traps.c
index ff83e78..62675b9 100644
--- a/arch/arc/kernel/traps.c
+++ b/arch/arc/kernel/traps.c
@@ -80,7 +80,7 @@ int name(unsigned long address, struct pt_regs *regs) \
DO_ERROR_INFO(SIGILL, "Priv Op/Disabled Extn", do_privilege_fault, ILL_PRVOPC)
DO_ERROR_INFO(SIGILL, "Invalid Extn Insn", do_extension_fault, ILL_ILLOPC)
DO_ERROR_INFO(SIGILL, "Illegal Insn (or Seq)", insterror_is_error, ILL_ILLOPC)
-DO_ERROR_INFO(SIGBUS, "Invalid Mem Access", do_memory_error, BUS_ADRERR)
+DO_ERROR_INFO(SIGBUS, "Invalid Mem Access", __weak do_memory_error, BUS_ADRERR)
DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT)
DO_ERROR_INFO(SIGBUS, "Misaligned Access", do_misaligned_error, BUS_ADRALN)
diff --git a/arch/arc/plat-eznps/Kconfig b/arch/arc/plat-eznps/Kconfig
index feaa471..fa25136 100644
--- a/arch/arc/plat-eznps/Kconfig
+++ b/arch/arc/plat-eznps/Kconfig
@@ -32,3 +32,15 @@ config EZNPS_MTM_EXT
any of them seem like CPU from Linux point of view.
All threads within same core share the execution unit of the
core and HW scheduler round robin between them.
+
+config EZNPS_MEM_ERROR
+ bool "ARC-EZchip Memory error as an exception"
+ depends on EZNPS_MTM_EXT
+ default n
+ help
+ On the real chip of the NPS, user memory errors are handled
+ as a machine check exception, whereas on simulator platform
+ for NPS, is handled as an interrupt level 2 (like legacy arc
+ real chip architecture).This configuration will cause the kernel
+ to handle memory error similar to a machine check exception.
+ It means NOT sending a SIGBUS, but panic the system.
diff --git a/arch/arc/plat-eznps/mtm.c b/arch/arc/plat-eznps/mtm.c
index e0cb36b..59a0162 100644
--- a/arch/arc/plat-eznps/mtm.c
+++ b/arch/arc/plat-eznps/mtm.c
@@ -25,6 +25,17 @@
#define MT_CTRL_ST_CNT 0xF
#define NPS_NUM_HW_THREADS 0x10
+#ifdef CONFIG_EZNPS_MEM_ERROR
+int do_memory_error(unsigned long address, struct pt_regs *regs)
+{
+ char *str = "Invalid Mem Access";
+
+ die(str, regs, address);
+
+ return 1;
+}
+#endif
+
static void mtm_init_nat(int cpu)
{
struct nps_host_reg_mtm_cfg mtm_cfg;
--
1.7.1
next prev parent reply other threads:[~2017-06-13 14:04 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-13 14:03 [PATCH v2 00/12] plat-eznps upstream cont. set 2 Noam Camus
2017-06-13 14:03 ` Noam Camus [this message]
2017-06-14 22:39 ` [PATCH v2 01/12] ARC: [plat-eznps] Handle memory error as an exception Vineet Gupta
2017-06-13 14:03 ` [PATCH v2 02/12] ARC: set level of log per CPU during boot to be debug level Noam Camus
2017-06-14 22:45 ` Vineet Gupta
2017-06-13 14:03 ` [PATCH v2 03/12] ARC: send ipi to all cpus sharing task mm in case of page fault Noam Camus
2017-06-13 14:03 ` [PATCH v2 04/12] ARC: Allow irq threading Noam Camus
2017-06-13 14:03 ` [PATCH v2 05/12] ARC: Add CPU topology Noam Camus
2017-06-13 14:03 ` [PATCH v2 06/12] ARC: Support more than one PGDIR for KVADDR Noam Camus
2017-06-13 14:03 ` [PATCH v2 07/12] ARC: [NUMA] added CONFIG_NUMA for plat-eznps Noam Camus
2017-06-13 14:03 ` [PATCH v2 08/12] ARC: [plat-eznps] new command line argument for HW scheduler at MTM Noam Camus
2017-06-14 22:49 ` Vineet Gupta
2017-06-13 14:03 ` [PATCH v2 09/12] ARC: [plat-eznps] Update the init sequence of aux regs per cpu Noam Camus
2017-06-13 14:03 ` [PATCH v2 10/12] ARC: [plat-eznps] Save/Restore extra auxiliary registers Noam Camus
2017-06-13 14:03 ` [PATCH v2 11/12] ARC: [plat-eznps] handle dedicated AUX registers Noam Camus
2017-06-13 14:03 ` [PATCH v2 12/12] ARC: [plat-eznps] avoid toggling of DPC register Noam Camus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1497362636-30353-2-git-send-email-noamca@mellanox.com \
--to=noamca@mellanox.com \
--cc=eladkan@mellanox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-snps-arc@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®