mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-05 13:51:52 +00:00
RISC-V Fixes for 6.1-rc3
* A fix for a build warning in the jump_label code. * One of the git://github -> https://github cleanups, for the SiFive drivers. * A fix for the kasan initialization code, this still likely warrants some cleanups but that's a bigger problem and at least this fixes the crashes in the short term. * A pair of fixes for extension support detection on mixed LLVM/GNU toolchains. * A fix for a runtime warning in the /proc/cpuinfo code. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEKzw3R0RoQ7JKlDp6LhMZ81+7GIkFAmNcIeETHHBhbG1lckBk YWJiZWx0LmNvbQAKCRAuExnzX7sYiQooEAC23Pgmdp5A74VgmCxt1pLPuLwapHL+ piAvzBx96GMajdWhzfBxwR8PTAAdiffpyFD+mal9MmmDAy+fduYQD76ge28Kx33y yJIIya+9vSHcCkMUfj8Kag93qAsXTwJIvuyrHJ8JGdnxgs4jywKPge6S4GYOiFD2 8UALXgr/4Xi1WJnHvGPElLbVUqAcha2F4Wbl8P0dEUnuCFbiHQfDqWAx7OgC9zrZ CJhM3vQNADXO+7Yj8MDyeRQW2JVeBi1xNJ00fGgArUNHQqRMnEgZ4Hbfymf6j+yq 1RP6sCjha3qIGofqD7B0pfcgThjRi8kpHL+RjiFrb4UigfxErdZDhBsOxTVB5slG oe4V7mrm3gdHPgW3ZytjmkXhHNzRRFfmuUwfqR/h9iumkpnNntuphPQVCtCBKDNx dZ6JGdVw7ljgp51t66vvJLy3lpYYcnhh64sCFYdWSY1+n0sJB6QfwnDPp8AFznCn 9PafHYzEOM/e5PBlRqoORuRfkRmk54pJu+uKHh/FtcG3Z7q6htyF8QHDMaYizPna MDqcCl1DdKBh24D0E2KRNzhNTGNSFNKcSnXB6dF9wH4jLlglyIaNe0vqmfFxVWkV ufMcfXjxgl5zHJUf0IBuw57pVZddriRhVU+2YECnMgquuC9drjHa1sG71oYm/loY 9XYPR12ckU7lqg== =In1r -----END PGP SIGNATURE----- Merge tag 'riscv-for-linus-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux Pull RISC-V fixes from Palmer Dabbelt: - A fix for a build warning in the jump_label code - One of the git://github -> https://github cleanups, for the SiFive drivers - A fix for the kasan initialization code, this still likely warrants some cleanups but that's a bigger problem and at least this fixes the crashes in the short term - A pair of fixes for extension support detection on mixed LLVM/GNU toolchains - A fix for a runtime warning in the /proc/cpuinfo code * tag 'riscv-for-linus-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: RISC-V: Fix /proc/cpuinfo cpumask warning riscv: fix detection of toolchain Zihintpause support riscv: fix detection of toolchain Zicbom support riscv: mm: add missing memcpy in kasan_init MAINTAINERS: git://github.com -> https://github.com for sifive riscv: jump_label: mark arguments as const to satisfy asm constraints
This commit is contained in:
commit
283f13d43b
7 changed files with 30 additions and 15 deletions
|
@ -18787,7 +18787,7 @@ M: Palmer Dabbelt <palmer@dabbelt.com>
|
||||||
M: Paul Walmsley <paul.walmsley@sifive.com>
|
M: Paul Walmsley <paul.walmsley@sifive.com>
|
||||||
L: linux-riscv@lists.infradead.org
|
L: linux-riscv@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
T: git git://github.com/sifive/riscv-linux.git
|
T: git https://github.com/sifive/riscv-linux.git
|
||||||
N: sifive
|
N: sifive
|
||||||
K: [^@]sifive
|
K: [^@]sifive
|
||||||
|
|
||||||
|
|
|
@ -411,14 +411,16 @@ config RISCV_ISA_SVPBMT
|
||||||
|
|
||||||
If you don't know what to do here, say Y.
|
If you don't know what to do here, say Y.
|
||||||
|
|
||||||
config CC_HAS_ZICBOM
|
config TOOLCHAIN_HAS_ZICBOM
|
||||||
bool
|
bool
|
||||||
default y if 64BIT && $(cc-option,-mabi=lp64 -march=rv64ima_zicbom)
|
default y
|
||||||
default y if 32BIT && $(cc-option,-mabi=ilp32 -march=rv32ima_zicbom)
|
depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zicbom)
|
||||||
|
depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zicbom)
|
||||||
|
depends on LLD_VERSION >= 150000 || LD_VERSION >= 23800
|
||||||
|
|
||||||
config RISCV_ISA_ZICBOM
|
config RISCV_ISA_ZICBOM
|
||||||
bool "Zicbom extension support for non-coherent DMA operation"
|
bool "Zicbom extension support for non-coherent DMA operation"
|
||||||
depends on CC_HAS_ZICBOM
|
depends on TOOLCHAIN_HAS_ZICBOM
|
||||||
depends on !XIP_KERNEL && MMU
|
depends on !XIP_KERNEL && MMU
|
||||||
select RISCV_DMA_NONCOHERENT
|
select RISCV_DMA_NONCOHERENT
|
||||||
select RISCV_ALTERNATIVE
|
select RISCV_ALTERNATIVE
|
||||||
|
@ -433,6 +435,13 @@ config RISCV_ISA_ZICBOM
|
||||||
|
|
||||||
If you don't know what to do here, say Y.
|
If you don't know what to do here, say Y.
|
||||||
|
|
||||||
|
config TOOLCHAIN_HAS_ZIHINTPAUSE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zihintpause)
|
||||||
|
depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zihintpause)
|
||||||
|
depends on LLD_VERSION >= 150000 || LD_VERSION >= 23600
|
||||||
|
|
||||||
config FPU
|
config FPU
|
||||||
bool "FPU support"
|
bool "FPU support"
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -59,12 +59,10 @@ toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(riscv-march-y)_zi
|
||||||
riscv-march-$(toolchain-need-zicsr-zifencei) := $(riscv-march-y)_zicsr_zifencei
|
riscv-march-$(toolchain-need-zicsr-zifencei) := $(riscv-march-y)_zicsr_zifencei
|
||||||
|
|
||||||
# Check if the toolchain supports Zicbom extension
|
# Check if the toolchain supports Zicbom extension
|
||||||
toolchain-supports-zicbom := $(call cc-option-yn, -march=$(riscv-march-y)_zicbom)
|
riscv-march-$(CONFIG_TOOLCHAIN_HAS_ZICBOM) := $(riscv-march-y)_zicbom
|
||||||
riscv-march-$(toolchain-supports-zicbom) := $(riscv-march-y)_zicbom
|
|
||||||
|
|
||||||
# Check if the toolchain supports Zihintpause extension
|
# Check if the toolchain supports Zihintpause extension
|
||||||
toolchain-supports-zihintpause := $(call cc-option-yn, -march=$(riscv-march-y)_zihintpause)
|
riscv-march-$(CONFIG_TOOLCHAIN_HAS_ZIHINTPAUSE) := $(riscv-march-y)_zihintpause
|
||||||
riscv-march-$(toolchain-supports-zihintpause) := $(riscv-march-y)_zihintpause
|
|
||||||
|
|
||||||
KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
|
KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
|
||||||
KBUILD_AFLAGS += -march=$(riscv-march-y)
|
KBUILD_AFLAGS += -march=$(riscv-march-y)
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
|
|
||||||
#define JUMP_LABEL_NOP_SIZE 4
|
#define JUMP_LABEL_NOP_SIZE 4
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key,
|
static __always_inline bool arch_static_branch(struct static_key * const key,
|
||||||
bool branch)
|
const bool branch)
|
||||||
{
|
{
|
||||||
asm_volatile_goto(
|
asm_volatile_goto(
|
||||||
" .option push \n\t"
|
" .option push \n\t"
|
||||||
|
@ -35,8 +35,8 @@ label:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch_jump(struct static_key *key,
|
static __always_inline bool arch_static_branch_jump(struct static_key * const key,
|
||||||
bool branch)
|
const bool branch)
|
||||||
{
|
{
|
||||||
asm_volatile_goto(
|
asm_volatile_goto(
|
||||||
" .option push \n\t"
|
" .option push \n\t"
|
||||||
|
|
|
@ -21,7 +21,7 @@ static inline void cpu_relax(void)
|
||||||
* Reduce instruction retirement.
|
* Reduce instruction retirement.
|
||||||
* This assumes the PC changes.
|
* This assumes the PC changes.
|
||||||
*/
|
*/
|
||||||
#ifdef __riscv_zihintpause
|
#ifdef CONFIG_TOOLCHAIN_HAS_ZIHINTPAUSE
|
||||||
__asm__ __volatile__ ("pause");
|
__asm__ __volatile__ ("pause");
|
||||||
#else
|
#else
|
||||||
/* Encoding of the pause instruction */
|
/* Encoding of the pause instruction */
|
||||||
|
|
|
@ -213,6 +213,9 @@ static void print_mmu(struct seq_file *f)
|
||||||
|
|
||||||
static void *c_start(struct seq_file *m, loff_t *pos)
|
static void *c_start(struct seq_file *m, loff_t *pos)
|
||||||
{
|
{
|
||||||
|
if (*pos == nr_cpu_ids)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
*pos = cpumask_next(*pos - 1, cpu_online_mask);
|
*pos = cpumask_next(*pos - 1, cpu_online_mask);
|
||||||
if ((*pos) < nr_cpu_ids)
|
if ((*pos) < nr_cpu_ids)
|
||||||
return (void *)(uintptr_t)(1 + *pos);
|
return (void *)(uintptr_t)(1 + *pos);
|
||||||
|
|
|
@ -113,6 +113,8 @@ static void __init kasan_populate_pud(pgd_t *pgd,
|
||||||
base_pud = pt_ops.get_pud_virt(pfn_to_phys(_pgd_pfn(*pgd)));
|
base_pud = pt_ops.get_pud_virt(pfn_to_phys(_pgd_pfn(*pgd)));
|
||||||
} else if (pgd_none(*pgd)) {
|
} else if (pgd_none(*pgd)) {
|
||||||
base_pud = memblock_alloc(PTRS_PER_PUD * sizeof(pud_t), PAGE_SIZE);
|
base_pud = memblock_alloc(PTRS_PER_PUD * sizeof(pud_t), PAGE_SIZE);
|
||||||
|
memcpy(base_pud, (void *)kasan_early_shadow_pud,
|
||||||
|
sizeof(pud_t) * PTRS_PER_PUD);
|
||||||
} else {
|
} else {
|
||||||
base_pud = (pud_t *)pgd_page_vaddr(*pgd);
|
base_pud = (pud_t *)pgd_page_vaddr(*pgd);
|
||||||
if (base_pud == lm_alias(kasan_early_shadow_pud)) {
|
if (base_pud == lm_alias(kasan_early_shadow_pud)) {
|
||||||
|
@ -173,8 +175,11 @@ static void __init kasan_populate_p4d(pgd_t *pgd,
|
||||||
base_p4d = pt_ops.get_p4d_virt(pfn_to_phys(_pgd_pfn(*pgd)));
|
base_p4d = pt_ops.get_p4d_virt(pfn_to_phys(_pgd_pfn(*pgd)));
|
||||||
} else {
|
} else {
|
||||||
base_p4d = (p4d_t *)pgd_page_vaddr(*pgd);
|
base_p4d = (p4d_t *)pgd_page_vaddr(*pgd);
|
||||||
if (base_p4d == lm_alias(kasan_early_shadow_p4d))
|
if (base_p4d == lm_alias(kasan_early_shadow_p4d)) {
|
||||||
base_p4d = memblock_alloc(PTRS_PER_PUD * sizeof(p4d_t), PAGE_SIZE);
|
base_p4d = memblock_alloc(PTRS_PER_PUD * sizeof(p4d_t), PAGE_SIZE);
|
||||||
|
memcpy(base_p4d, (void *)kasan_early_shadow_p4d,
|
||||||
|
sizeof(p4d_t) * PTRS_PER_P4D);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p4dp = base_p4d + p4d_index(vaddr);
|
p4dp = base_p4d + p4d_index(vaddr);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue