Skip to content

Commit 93397d3

Browse files
committed
Merge tag 'loongarch-fixes-6.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
Pull LoongArch fixes from Huacai Chen: "Fix lockdep, fix a boot failure, fix some build warnings, fix document links, and some cleanups" * tag 'loongarch-fixes-6.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson: docs/zh_CN/LoongArch: Update the links of ABI docs/LoongArch: Update the links of ABI LoongArch: Don't inline kasan_mem_to_shadow()/kasan_shadow_to_mem() kasan: Cleanup the __HAVE_ARCH_SHADOW_MAP usage LoongArch: Set all reserved memblocks on Node#0 at initialization LoongArch: Remove dead code in relocate_new_kernel LoongArch: Use _UL() and _ULL() LoongArch: Fix some build warnings with W=1 LoongArch: Fix lockdep static memory detection
2 parents 2e3d391 + e74a6b7 commit 93397d3

File tree

26 files changed

+177
-134
lines changed

26 files changed

+177
-134
lines changed

Documentation/arch/loongarch/introduction.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,9 +381,9 @@ Documentation of LoongArch ISA:
381381

382382
Documentation of LoongArch ELF psABI:
383383

384-
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-CN.pdf (in Chinese)
384+
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-CN.pdf (in Chinese)
385385

386-
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-EN.pdf (in English)
386+
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-EN.pdf (in English)
387387

388388
Linux kernel repository of Loongson and LoongArch:
389389

Documentation/translations/zh_CN/arch/loongarch/introduction.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,9 @@ LoongArch指令集架构的文档:
344344

345345
LoongArch的ELF psABI文档:
346346

347-
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-CN.pdf (中文版)
347+
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-CN.pdf (中文版)
348348

349-
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-EN.pdf (英文版)
349+
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-EN.pdf (英文版)
350350

351351
Loongson与LoongArch的Linux内核源码仓库:
352352

arch/loongarch/include/asm/addrspace.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*/
2020
#ifndef __ASSEMBLY__
2121
#ifndef PHYS_OFFSET
22-
#define PHYS_OFFSET _AC(0, UL)
22+
#define PHYS_OFFSET _UL(0)
2323
#endif
2424
extern unsigned long vm_map_base;
2525
#endif /* __ASSEMBLY__ */
@@ -43,7 +43,7 @@ extern unsigned long vm_map_base;
4343
* Memory above this physical address will be considered highmem.
4444
*/
4545
#ifndef HIGHMEM_START
46-
#define HIGHMEM_START (_AC(1, UL) << _AC(DMW_PABITS, UL))
46+
#define HIGHMEM_START (_UL(1) << _UL(DMW_PABITS))
4747
#endif
4848

4949
#define TO_PHYS(x) ( ((x) & TO_PHYS_MASK))
@@ -65,16 +65,16 @@ extern unsigned long vm_map_base;
6565
#define _ATYPE_
6666
#define _ATYPE32_
6767
#define _ATYPE64_
68-
#define _CONST64_(x) x
6968
#else
7069
#define _ATYPE_ __PTRDIFF_TYPE__
7170
#define _ATYPE32_ int
7271
#define _ATYPE64_ __s64
72+
#endif
73+
7374
#ifdef CONFIG_64BIT
74-
#define _CONST64_(x) x ## UL
75+
#define _CONST64_(x) _UL(x)
7576
#else
76-
#define _CONST64_(x) x ## ULL
77-
#endif
77+
#define _CONST64_(x) _ULL(x)
7878
#endif
7979

8080
/*
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/* SPDX-License-Identifier: GPL-2.0-only */
2+
3+
#ifndef __ASM_EXCEPTION_H
4+
#define __ASM_EXCEPTION_H
5+
6+
#include <asm/ptrace.h>
7+
#include <linux/kprobes.h>
8+
9+
void show_registers(struct pt_regs *regs);
10+
11+
asmlinkage void cache_parity_error(void);
12+
asmlinkage void noinstr do_ade(struct pt_regs *regs);
13+
asmlinkage void noinstr do_ale(struct pt_regs *regs);
14+
asmlinkage void noinstr do_bce(struct pt_regs *regs);
15+
asmlinkage void noinstr do_bp(struct pt_regs *regs);
16+
asmlinkage void noinstr do_ri(struct pt_regs *regs);
17+
asmlinkage void noinstr do_fpu(struct pt_regs *regs);
18+
asmlinkage void noinstr do_fpe(struct pt_regs *regs, unsigned long fcsr);
19+
asmlinkage void noinstr do_lsx(struct pt_regs *regs);
20+
asmlinkage void noinstr do_lasx(struct pt_regs *regs);
21+
asmlinkage void noinstr do_lbt(struct pt_regs *regs);
22+
asmlinkage void noinstr do_watch(struct pt_regs *regs);
23+
asmlinkage void noinstr do_syscall(struct pt_regs *regs);
24+
asmlinkage void noinstr do_reserved(struct pt_regs *regs);
25+
asmlinkage void noinstr do_vint(struct pt_regs *regs, unsigned long sp);
26+
asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
27+
unsigned long write, unsigned long address);
28+
29+
asmlinkage void handle_ade(void);
30+
asmlinkage void handle_ale(void);
31+
asmlinkage void handle_bce(void);
32+
asmlinkage void handle_sys(void);
33+
asmlinkage void handle_bp(void);
34+
asmlinkage void handle_ri(void);
35+
asmlinkage void handle_fpu(void);
36+
asmlinkage void handle_fpe(void);
37+
asmlinkage void handle_lsx(void);
38+
asmlinkage void handle_lasx(void);
39+
asmlinkage void handle_lbt(void);
40+
asmlinkage void handle_watch(void);
41+
asmlinkage void handle_reserved(void);
42+
asmlinkage void handle_vint(void);
43+
asmlinkage void noinstr handle_loongarch_irq(struct pt_regs *regs);
44+
45+
#endif /* __ASM_EXCEPTION_H */

arch/loongarch/include/asm/kasan.h

Lines changed: 9 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
#include <asm/io.h>
1111
#include <asm/pgtable.h>
1212

13-
#define __HAVE_ARCH_SHADOW_MAP
14-
1513
#define KASAN_SHADOW_SCALE_SHIFT 3
1614
#define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
1715

@@ -62,61 +60,22 @@
6260
extern bool kasan_early_stage;
6361
extern unsigned char kasan_early_shadow_page[PAGE_SIZE];
6462

63+
#define kasan_mem_to_shadow kasan_mem_to_shadow
64+
void *kasan_mem_to_shadow(const void *addr);
65+
66+
#define kasan_shadow_to_mem kasan_shadow_to_mem
67+
const void *kasan_shadow_to_mem(const void *shadow_addr);
68+
6569
#define kasan_arch_is_ready kasan_arch_is_ready
6670
static __always_inline bool kasan_arch_is_ready(void)
6771
{
6872
return !kasan_early_stage;
6973
}
7074

71-
static inline void *kasan_mem_to_shadow(const void *addr)
72-
{
73-
if (!kasan_arch_is_ready()) {
74-
return (void *)(kasan_early_shadow_page);
75-
} else {
76-
unsigned long maddr = (unsigned long)addr;
77-
unsigned long xrange = (maddr >> XRANGE_SHIFT) & 0xffff;
78-
unsigned long offset = 0;
79-
80-
maddr &= XRANGE_SHADOW_MASK;
81-
switch (xrange) {
82-
case XKPRANGE_CC_SEG:
83-
offset = XKPRANGE_CC_SHADOW_OFFSET;
84-
break;
85-
case XKPRANGE_UC_SEG:
86-
offset = XKPRANGE_UC_SHADOW_OFFSET;
87-
break;
88-
case XKVRANGE_VC_SEG:
89-
offset = XKVRANGE_VC_SHADOW_OFFSET;
90-
break;
91-
default:
92-
WARN_ON(1);
93-
return NULL;
94-
}
95-
96-
return (void *)((maddr >> KASAN_SHADOW_SCALE_SHIFT) + offset);
97-
}
98-
}
99-
100-
static inline const void *kasan_shadow_to_mem(const void *shadow_addr)
75+
#define addr_has_metadata addr_has_metadata
76+
static __always_inline bool addr_has_metadata(const void *addr)
10177
{
102-
unsigned long addr = (unsigned long)shadow_addr;
103-
104-
if (unlikely(addr > KASAN_SHADOW_END) ||
105-
unlikely(addr < KASAN_SHADOW_START)) {
106-
WARN_ON(1);
107-
return NULL;
108-
}
109-
110-
if (addr >= XKVRANGE_VC_SHADOW_OFFSET)
111-
return (void *)(((addr - XKVRANGE_VC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKVRANGE_VC_START);
112-
else if (addr >= XKPRANGE_UC_SHADOW_OFFSET)
113-
return (void *)(((addr - XKPRANGE_UC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKPRANGE_UC_START);
114-
else if (addr >= XKPRANGE_CC_SHADOW_OFFSET)
115-
return (void *)(((addr - XKPRANGE_CC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKPRANGE_CC_START);
116-
else {
117-
WARN_ON(1);
118-
return NULL;
119-
}
78+
return (kasan_mem_to_shadow((void *)addr) != NULL);
12079
}
12180

12281
void kasan_init(void);

arch/loongarch/include/asm/smp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct secondary_data {
7070
extern struct secondary_data cpuboot_data;
7171

7272
extern asmlinkage void smpboot_entry(void);
73+
extern asmlinkage void start_secondary(void);
7374

7475
extern void calculate_cpu_foreign_map(void);
7576

arch/loongarch/kernel/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ obj-$(CONFIG_CPU_HAS_LBT) += lbt.o
1919

2020
obj-$(CONFIG_ARCH_STRICT_ALIGN) += unaligned.o
2121

22+
CFLAGS_module.o += $(call cc-option,-Wno-override-init,)
23+
CFLAGS_syscall.o += $(call cc-option,-Wno-override-init,)
24+
CFLAGS_perf_event.o += $(call cc-option,-Wno-override-init,)
25+
2226
ifdef CONFIG_FUNCTION_TRACER
2327
ifndef CONFIG_DYNAMIC_FTRACE
2428
obj-y += mcount.o ftrace.o

arch/loongarch/kernel/acpi.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,6 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
281281
pr_info("SRAT: PXM %u -> CPU 0x%02x -> Node %u\n", pxm, pa->apic_id, node);
282282
}
283283

284-
void __init acpi_numa_arch_fixup(void) {}
285284
#endif
286285

287286
void __init arch_reserve_mem_area(acpi_physical_address addr, size_t size)

arch/loongarch/kernel/mem.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ void __init memblock_init(void)
5050
}
5151

5252
memblock_set_current_limit(PFN_PHYS(max_low_pfn));
53-
memblock_set_node(0, PHYS_ADDR_MAX, &memblock.memory, 0);
5453

5554
/* Reserve the first 2MB */
5655
memblock_reserve(PHYS_OFFSET, 0x200000);
5756

5857
/* Reserve the kernel text/data/bss */
5958
memblock_reserve(__pa_symbol(&_text),
6059
__pa_symbol(&_end) - __pa_symbol(&_text));
60+
61+
memblock_set_node(0, PHYS_ADDR_MAX, &memblock.memory, 0);
62+
memblock_set_node(0, PHYS_ADDR_MAX, &memblock.reserved, 0);
6163
}

arch/loongarch/kernel/module-sections.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <linux/elf.h>
77
#include <linux/kernel.h>
88
#include <linux/module.h>
9+
#include <linux/moduleloader.h>
910
#include <linux/ftrace.h>
1011

1112
Elf_Addr module_emit_got_entry(struct module *mod, Elf_Shdr *sechdrs, Elf_Addr val)

0 commit comments

Comments
 (0)