forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'riscv-for-linus-6.6-mw2-2' of git://git.kernel.org/pub/scm…
…/linux/kernel/git/riscv/linux Pull more RISC-V updates from Palmer Dabbelt: - The kernel now dynamically probes for misaligned access speed, as opposed to relying on a table of known implementations. - Support for non-coherent devices on systems using the Andes AX45MP core, including the RZ/Five SoCs. - Support for the V extension in ptrace(), again. - Support for KASLR. - Support for the BPF prog pack allocator in RISC-V. - A handful of bug fixes and cleanups. * tag 'riscv-for-linus-6.6-mw2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (25 commits) soc: renesas: Kconfig: For ARCH_R9A07G043 select the required configs if dependencies are met riscv: Kconfig.errata: Add dependency for RISCV_SBI in ERRATA_ANDES config riscv: Kconfig.errata: Drop dependency for MMU in ERRATA_ANDES_CMO config riscv: Kconfig: Select DMA_DIRECT_REMAP only if MMU is enabled bpf, riscv: use prog pack allocator in the BPF JIT riscv: implement a memset like function for text riscv: extend patch_text_nosync() for multiple pages bpf: make bpf_prog_pack allocator portable riscv: libstub: Implement KASLR by using generic functions libstub: Fix compilation warning for rv32 arm64: libstub: Move KASLR handling functions to kaslr.c riscv: Dump out kernel offset information on panic riscv: Introduce virtual kernel mapping KASLR RISC-V: Add ptrace support for vectors soc: renesas: Kconfig: Select the required configs for RZ/Five SoC cache: Add L2 cache management for Andes AX45MP RISC-V core dt-bindings: cache: andestech,ax45mp-cache: Add DT binding documentation for L2 cache controller riscv: mm: dma-noncoherent: nonstandard cache operations support riscv: errata: Add Andes alternative ports riscv: asm: vendorid_list: Add Andes Technology to the vendors list ...
- Loading branch information
Showing
51 changed files
with
1,440 additions
and
216 deletions.
There are no files selected for viewing
81 changes: 81 additions & 0 deletions
81
Documentation/devicetree/bindings/cache/andestech,ax45mp-cache.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | ||
# Copyright (C) 2023 Renesas Electronics Corp. | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/cache/andestech,ax45mp-cache.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: Andestech AX45MP L2 Cache Controller | ||
|
||
maintainers: | ||
- Lad Prabhakar <[email protected]> | ||
|
||
description: | ||
A level-2 cache (L2C) is used to improve the system performance by providing | ||
a large amount of cache line entries and reasonable access delays. The L2C | ||
is shared between cores, and a non-inclusive non-exclusive policy is used. | ||
|
||
select: | ||
properties: | ||
compatible: | ||
contains: | ||
enum: | ||
- andestech,ax45mp-cache | ||
|
||
required: | ||
- compatible | ||
|
||
properties: | ||
compatible: | ||
items: | ||
- const: andestech,ax45mp-cache | ||
- const: cache | ||
|
||
reg: | ||
maxItems: 1 | ||
|
||
interrupts: | ||
maxItems: 1 | ||
|
||
cache-line-size: | ||
const: 64 | ||
|
||
cache-level: | ||
const: 2 | ||
|
||
cache-sets: | ||
const: 1024 | ||
|
||
cache-size: | ||
enum: [131072, 262144, 524288, 1048576, 2097152] | ||
|
||
cache-unified: true | ||
|
||
next-level-cache: true | ||
|
||
additionalProperties: false | ||
|
||
required: | ||
- compatible | ||
- reg | ||
- interrupts | ||
- cache-line-size | ||
- cache-level | ||
- cache-sets | ||
- cache-size | ||
- cache-unified | ||
|
||
examples: | ||
- | | ||
#include <dt-bindings/interrupt-controller/irq.h> | ||
cache-controller@2010000 { | ||
compatible = "andestech,ax45mp-cache", "cache"; | ||
reg = <0x13400000 0x100000>; | ||
interrupts = <508 IRQ_TYPE_LEVEL_HIGH>; | ||
cache-line-size = <64>; | ||
cache-level = <2>; | ||
cache-sets = <1024>; | ||
cache-size = <262144>; | ||
cache-unified; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20406,6 +20406,13 @@ S: Supported | |
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git | ||
F: drivers/staging/ | ||
|
||
STANDALONE CACHE CONTROLLER DRIVERS | ||
M: Conor Dooley <[email protected]> | ||
L: [email protected] | ||
S: Maintained | ||
T: git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/ | ||
F: drivers/cache | ||
|
||
STARFIRE/DURALAN NETWORK DRIVER | ||
M: Ion Badulescu <[email protected]> | ||
S: Odd Fixes | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
obj-y += errata.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* Erratas to be applied for Andes CPU cores | ||
* | ||
* Copyright (C) 2023 Renesas Electronics Corporation. | ||
* | ||
* Author: Lad Prabhakar <[email protected]> | ||
*/ | ||
|
||
#include <linux/memory.h> | ||
#include <linux/module.h> | ||
|
||
#include <asm/alternative.h> | ||
#include <asm/cacheflush.h> | ||
#include <asm/errata_list.h> | ||
#include <asm/patch.h> | ||
#include <asm/processor.h> | ||
#include <asm/sbi.h> | ||
#include <asm/vendorid_list.h> | ||
|
||
#define ANDESTECH_AX45MP_MARCHID 0x8000000000008a45UL | ||
#define ANDESTECH_AX45MP_MIMPID 0x500UL | ||
#define ANDESTECH_SBI_EXT_ANDES 0x0900031E | ||
|
||
#define ANDES_SBI_EXT_IOCP_SW_WORKAROUND 1 | ||
|
||
static long ax45mp_iocp_sw_workaround(void) | ||
{ | ||
struct sbiret ret; | ||
|
||
/* | ||
* ANDES_SBI_EXT_IOCP_SW_WORKAROUND SBI EXT checks if the IOCP is missing and | ||
* cache is controllable only then CMO will be applied to the platform. | ||
*/ | ||
ret = sbi_ecall(ANDESTECH_SBI_EXT_ANDES, ANDES_SBI_EXT_IOCP_SW_WORKAROUND, | ||
0, 0, 0, 0, 0, 0); | ||
|
||
return ret.error ? 0 : ret.value; | ||
} | ||
|
||
static bool errata_probe_iocp(unsigned int stage, unsigned long arch_id, unsigned long impid) | ||
{ | ||
if (!IS_ENABLED(CONFIG_ERRATA_ANDES_CMO)) | ||
return false; | ||
|
||
if (arch_id != ANDESTECH_AX45MP_MARCHID || impid != ANDESTECH_AX45MP_MIMPID) | ||
return false; | ||
|
||
if (!ax45mp_iocp_sw_workaround()) | ||
return false; | ||
|
||
/* Set this just to make core cbo code happy */ | ||
riscv_cbom_block_size = 1; | ||
riscv_noncoherent_supported(); | ||
|
||
return true; | ||
} | ||
|
||
void __init_or_module andes_errata_patch_func(struct alt_entry *begin, struct alt_entry *end, | ||
unsigned long archid, unsigned long impid, | ||
unsigned int stage) | ||
{ | ||
errata_probe_iocp(stage, archid, impid); | ||
|
||
/* we have nothing to patch here ATM so just return back */ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
/* | ||
* Copyright (C) 2023 Renesas Electronics Corp. | ||
*/ | ||
|
||
#ifndef __ASM_DMA_NONCOHERENT_H | ||
#define __ASM_DMA_NONCOHERENT_H | ||
|
||
#include <linux/dma-direct.h> | ||
|
||
/* | ||
* struct riscv_nonstd_cache_ops - Structure for non-standard CMO function pointers | ||
* | ||
* @wback: Function pointer for cache writeback | ||
* @inv: Function pointer for invalidating cache | ||
* @wback_inv: Function pointer for flushing the cache (writeback + invalidating) | ||
*/ | ||
struct riscv_nonstd_cache_ops { | ||
void (*wback)(phys_addr_t paddr, size_t size); | ||
void (*inv)(phys_addr_t paddr, size_t size); | ||
void (*wback_inv)(phys_addr_t paddr, size_t size); | ||
}; | ||
|
||
extern struct riscv_nonstd_cache_ops noncoherent_cache_ops; | ||
|
||
void riscv_noncoherent_register_cache_ops(const struct riscv_nonstd_cache_ops *ops); | ||
|
||
#endif /* __ASM_DMA_NONCOHERENT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.