From: Gregory CLEMENT <gregory.clement@bootlin.com>
To: Paul Burton <paulburton@kernel.org>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
linux-mips@vger.kernel.org, Jiaxun Yang <jiaxun.yang@flygoat.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: "Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>,
"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
"Théo Lebrun" <theo.lebrun@bootlin.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
Subject: [PATCH v2 09/21] MIPS: traps: Handle CPU with non standard vint offset
Date: Thu, 23 Nov 2023 16:26:26 +0100 [thread overview]
Message-ID: <20231123152639.561231-10-gregory.clement@bootlin.com> (raw)
In-Reply-To: <20231123152639.561231-1-gregory.clement@bootlin.com>
From: Jiaxun Yang <jiaxun.yang@flygoat.com>
Some BMIPS cpus has none standard start offset for vector interrupts.
Handle those CPUs in vector size calculation and handler setup process.
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
arch/mips/kernel/traps.c | 32 +++++++++++++++++++++++---------
1 file changed, 23 insertions(+), 9 deletions(-)
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index ea59d321f713e..651c9ec6265a9 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -74,7 +74,6 @@
#include "access-helper.h"
-#define MAX(a, b) ((a) >= (b) ? (a) : (b))
extern void check_wait(void);
extern asmlinkage void rollback_handle_int(void);
@@ -2005,6 +2004,7 @@ void __noreturn nmi_exception_handler(struct pt_regs *regs)
unsigned long ebase;
EXPORT_SYMBOL_GPL(ebase);
unsigned long exception_handlers[32];
+static unsigned long vi_vecbase;
unsigned long vi_handlers[64];
void reserve_exception_space(phys_addr_t addr, unsigned long size)
@@ -2074,7 +2074,7 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)
handler = (unsigned long) addr;
vi_handlers[n] = handler;
- b = (unsigned char *)(ebase + 0x200 + n*VECTORSPACING);
+ b = (unsigned char *)(vi_vecbase + n*VECTORSPACING);
if (srs >= srssets)
panic("Shadow register set %d not supported", srs);
@@ -2370,20 +2370,33 @@ void __init trap_init(void)
extern char except_vec3_generic;
extern char except_vec4;
extern char except_vec3_r4000;
- unsigned long i, vec_size;
+ unsigned long i, vec_size, vi_vec_offset;
phys_addr_t ebase_pa;
check_wait();
+ if (cpu_has_veic || cpu_has_vint) {
+ switch (current_cpu_type()) {
+ case CPU_BMIPS3300:
+ case CPU_BMIPS4380:
+ vi_vec_offset = 0x400;
+ break;
+ case CPU_BMIPS5000:
+ vi_vec_offset = 0x1000;
+ break;
+ default:
+ vi_vec_offset = 0x200;
+ break;
+ }
+ vec_size = vi_vec_offset + VECTORSPACING*64;
+ } else {
+ vec_size = 0x400;
+ }
+
if (!cpu_has_mips_r2_r6) {
ebase = CAC_BASE;
- vec_size = 0x400;
} else {
- if (cpu_has_veic || cpu_has_vint)
- vec_size = 0x200 + VECTORSPACING*64;
- else
- vec_size = PAGE_SIZE;
-
+ vec_size = max(vec_size, PAGE_SIZE);
ebase_pa = memblock_phys_alloc(vec_size, 1 << fls(vec_size));
if (!ebase_pa)
panic("%s: Failed to allocate %lu bytes align=0x%x\n",
@@ -2450,6 +2463,7 @@ void __init trap_init(void)
* Initialise interrupt handlers
*/
if (cpu_has_veic || cpu_has_vint) {
+ vi_vecbase = ebase + vi_vec_offset;
int nvec = cpu_has_veic ? 64 : 8;
for (i = 0; i < nvec; i++)
set_vi_handler(i, NULL);
--
2.42.0
next prev parent reply other threads:[~2023-11-23 15:27 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-23 15:26 [PATCH v2 00/21] Add support for the Mobileye EyeQ5 SoC Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 01/21] MIPS: compressed: Use correct instruction for 64 bit code Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 02/21] MIPS: Export higher/highest relocation functions in uasm Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 03/21] MIPS: spaces: Define a couple of handy macros Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 04/21] MIPS: genex: Fix except_vec_vi for kernel in XKPHYS Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 05/21] MIPS: Fix set_uncached_handler for ebase " Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 06/21] MIPS: Refactor mips_cps_core_entry implementation Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 07/21] MIPS: Fix cache issue with mips_cps_core_entry Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 08/21] MIPS: Allow kernel base to be set from Kconfig for all platforms Gregory CLEMENT
2023-11-23 15:26 ` Gregory CLEMENT [this message]
2023-11-23 15:26 ` [PATCH v2 10/21] MIPS: Avoid unnecessary reservation of exception space Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 11/21] MIPS: traps: Enhance memblock ebase allocation process Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 12/21] MIPS: Get rid of CONFIG_NO_EXCEPT_FILL Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 13/21] MIPS: traps: Give more explanations if ebase doesn't belong to KSEG0 Gregory CLEMENT
2023-11-26 11:31 ` kernel test robot
2023-11-23 15:26 ` [PATCH v2 14/21] dt-bindings: Add vendor prefix for Mobileye Vision Technologies Ltd Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 15/21] dt-bindings: mips: cpu: Add I-Class I6500 Multiprocessor Core Gregory CLEMENT
2023-11-24 8:25 ` Krzysztof Kozlowski
2023-11-30 10:51 ` Gregory CLEMENT
2023-11-30 12:00 ` Krzysztof Kozlowski
2023-11-24 11:37 ` Serge Semin
2023-11-23 15:26 ` [PATCH v2 16/21] dt-bindings: mips: Add bindings for Mobileye SoCs Gregory CLEMENT
2023-11-23 16:57 ` Rob Herring
2023-11-26 18:57 ` Rob Herring
2023-11-23 15:26 ` [PATCH v2 17/21] dt-bindings: mfd: syscon: Document EyeQ5 OLB Gregory CLEMENT
2023-11-24 8:25 ` Krzysztof Kozlowski
2023-11-23 15:26 ` [PATCH v2 18/21] MIPS: mobileye: Add EyeQ5 dtsi Gregory CLEMENT
2023-11-24 8:27 ` Krzysztof Kozlowski
2023-12-01 10:56 ` Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 19/21] MIPS: mobileye: Add EPM5 device tree Gregory CLEMENT
2023-11-23 15:26 ` [PATCH v2 20/21] MIPS: generic: Add support for Mobileye EyeQ5 Gregory CLEMENT
2023-11-23 17:46 ` Jiaxun Yang
2023-12-01 10:34 ` Gregory CLEMENT
2023-12-01 10:49 ` Jiaxun Yang
2023-11-23 15:26 ` [PATCH v2 21/21] MAINTAINERS: Add entry for Mobileye MIPS SoCs Gregory CLEMENT
2023-11-23 17:31 ` [PATCH v2 00/21] Add support for the Mobileye EyeQ5 SoC Jiaxun Yang
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=20231123152639.561231-10-gregory.clement@bootlin.com \
--to=gregory.clement@bootlin.com \
--cc=alexandre.belloni@bootlin.com \
--cc=devicetree@vger.kernel.org \
--cc=jiaxun.yang@flygoat.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=paulburton@kernel.org \
--cc=robh+dt@kernel.org \
--cc=tawfik.bayouk@mobileye.com \
--cc=theo.lebrun@bootlin.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=tsbogend@alpha.franken.de \
--cc=vladimir.kondratiev@mobileye.com \
/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