Skip to content
Snippets Groups Projects
Commit 283f13d4 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents 13f05fb2 d14e99bf
No related branches found
No related tags found
No related merge requests found
...@@ -18787,7 +18787,7 @@ M: Palmer Dabbelt <palmer@dabbelt.com> ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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 @@ static __always_inline bool arch_static_branch(struct static_key *key, ...@@ -35,8 +35,8 @@ static __always_inline bool arch_static_branch(struct static_key *key,
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) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment