Skip to content

Commit 58c3f14

Browse files
committed
Merge tag 'riscv-for-linus-4.19-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux
Pull RISC-V fixes from Palmer Dabbelt: "RISC-V Fixes and Cleanups for 4.19-rc2 This contains a handful of patches that filtered their way in during the merge window but just didn't make the deadline. It includes: - Additional documentation in the riscv,cpu-intc device tree binding that resulted from some feedback I missed in the original patch set. - A build fix that provides the definition of tlb_flush() before including tlb.h, which fixes a RISC-V build regression introduced during this merge window. - A cosmetic cleanup to sys_riscv_flush_icache()" * tag 'riscv-for-linus-4.19-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux: RISC-V: Use a less ugly workaround for unused variable warnings riscv: tlb: Provide definition of tlb_flush() before including tlb.h dt-bindings: riscv,cpu-intc: Cleanups from a missed review
2 parents ff69279 + 47d80a6 commit 58c3f14

File tree

3 files changed

+16
-17
lines changed

3 files changed

+16
-17
lines changed

Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ The RISC-V supervisor ISA manual specifies three interrupt sources that are
1111
attached to every HLIC: software interrupts, the timer interrupt, and external
1212
interrupts. Software interrupts are used to send IPIs between cores. The
1313
timer interrupt comes from an architecturally mandated real-time timer that is
14-
controller via Supervisor Binary Interface (SBI) calls and CSR reads. External
14+
controlled via Supervisor Binary Interface (SBI) calls and CSR reads. External
1515
interrupts connect all other device interrupts to the HLIC, which are routed
1616
via the platform-level interrupt controller (PLIC).
1717

@@ -25,7 +25,15 @@ in the system.
2525

2626
Required properties:
2727
- compatible : "riscv,cpu-intc"
28-
- #interrupt-cells : should be <1>
28+
- #interrupt-cells : should be <1>. The interrupt sources are defined by the
29+
RISC-V supervisor ISA manual, with only the following three interrupts being
30+
defined for supervisor mode:
31+
- Source 1 is the supervisor software interrupt, which can be sent by an SBI
32+
call and is reserved for use by software.
33+
- Source 5 is the supervisor timer interrupt, which can be configured by
34+
SBI calls and implements a one-shot timer.
35+
- Source 9 is the supervisor external interrupt, which chains to all other
36+
device interrupts.
2937
- interrupt-controller : Identifies the node as an interrupt controller
3038

3139
Furthermore, this interrupt-controller MUST be embedded inside the cpu
@@ -38,7 +46,7 @@ An example device tree entry for a HLIC is show below.
3846
...
3947
cpu1-intc: interrupt-controller {
4048
#interrupt-cells = <1>;
41-
compatible = "riscv,cpu-intc", "sifive,fu540-c000-cpu-intc";
49+
compatible = "sifive,fu540-c000-cpu-intc", "riscv,cpu-intc";
4250
interrupt-controller;
4351
};
4452
};

arch/riscv/include/asm/tlb.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
#ifndef _ASM_RISCV_TLB_H
1515
#define _ASM_RISCV_TLB_H
1616

17+
struct mmu_gather;
18+
19+
static void tlb_flush(struct mmu_gather *tlb);
20+
1721
#include <asm-generic/tlb.h>
1822

1923
static inline void tlb_flush(struct mmu_gather *tlb)

arch/riscv/kernel/sys_riscv.c

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,24 +65,11 @@ SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len,
6565
SYSCALL_DEFINE3(riscv_flush_icache, uintptr_t, start, uintptr_t, end,
6666
uintptr_t, flags)
6767
{
68-
#ifdef CONFIG_SMP
69-
struct mm_struct *mm = current->mm;
70-
bool local = (flags & SYS_RISCV_FLUSH_ICACHE_LOCAL) != 0;
71-
#endif
72-
7368
/* Check the reserved flags. */
7469
if (unlikely(flags & ~SYS_RISCV_FLUSH_ICACHE_ALL))
7570
return -EINVAL;
7671

77-
/*
78-
* Without CONFIG_SMP flush_icache_mm is a just a flush_icache_all(),
79-
* which generates unused variable warnings all over this function.
80-
*/
81-
#ifdef CONFIG_SMP
82-
flush_icache_mm(mm, local);
83-
#else
84-
flush_icache_all();
85-
#endif
72+
flush_icache_mm(current->mm, flags & SYS_RISCV_FLUSH_ICACHE_LOCAL);
8673

8774
return 0;
8875
}

0 commit comments

Comments
 (0)