[GIT PULL] LoongArch changes for v6.4

From: Huacai Chen
Date: Thu May 04 2023 - 08:54:56 EST


The following changes since commit 457391b0380335d5e9a5babdec90ac53928b23b4:

Linux 6.3 (2023-04-23 12:02:52 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git tags/loongarch-6.4

for you to fetch changes up to 2fa5ebe3bc4e31e07a99196455498472417842f2:

tools/perf: Add basic support for LoongArch (2023-05-01 17:19:59 +0800)

----------------------------------------------------------------
LoongArch changes for v6.4

1, Better backtraces for humanization;
2, Relay BCE exceptions to userland as SIGSEGV;
3, Provide kernel fpu functions;
4, Optimize memory ops (memset/memcpy/memmove);
5, Optimize checksum and crc32(c) calculation;
6, Add ARCH_HAS_FORTIFY_SOURCE selection;
7, Add function error injection support;
8, Add ftrace with direct call support;
9, Add basic perf tools support.

Note: There are merge conflicts in these files but can be simply fixed
by adjusting context around "static struct ftrace_ops direct":

samples/ftrace/ftrace-direct-modify.c
samples/ftrace/ftrace-direct-too.c
samples/ftrace/ftrace-direct.c

----------------------------------------------------------------
Bibo Mao (1):
LoongArch: Add checksum optimization for 64-bit system

Huacai Chen (3):
Merge 'irq/loongarch-fixes-6.4' into loongarch-next
LoongArch: Provide kernel fpu functions
tools/perf: Add basic support for LoongArch

Jianmin Lv (5):
irqchip/loongson-eiointc: Fix returned value on parsing MADT
irqchip/loongson-eiointc: Fix incorrect use of acpi_get_vec_parent
irqchip/loongson-eiointc: Fix registration of syscore_ops
irqchip/loongson-pch-pic: Fix registration of syscore_ops
irqchip/loongson-pch-pic: Fix pch_pic_acpi_init calling

Min Zhou (1):
LoongArch: crypto: Add crc32 and crc32c hw acceleration

Qing Zhang (2):
LoongArch: Add ARCH_HAS_FORTIFY_SOURCE selection
LoongArch: ftrace: Abstract DYNAMIC_FTRACE_WITH_ARGS accesses

Tiezhu Yang (1):
LoongArch: Add support for function error injection

WANG Rui (1):
LoongArch: Optimize memory ops (memset/memcpy/memmove)

WANG Xuerui (12):
LoongArch: Clean up the architectural interrupt definitions
LoongArch: Define regular names for BCE/WATCH/HVC/GSPR exceptions
LoongArch: Print GPRs with ABI names when showing registers
LoongArch: Print symbol info for $ra and CSR.ERA only for kernel-mode contexts
LoongArch: Fix format of CSR lines during show_regs()
LoongArch: Humanize the CRMD line when showing registers
LoongArch: Humanize the PRMD line when showing registers
LoongArch: Humanize the EUEN line when showing registers
LoongArch: Humanize the ECFG line when showing registers
LoongArch: Humanize the ESTAT line when showing registers
LoongArch: Tweak the BADV and CPUCFG.PRID lines in show_regs()
LoongArch: Relay BCE exceptions to userland as SIGSEGV with si_code=SEGV_BNDERR

Youling Tang (4):
LoongArch: ftrace: Fix build error if DYNAMIC_FTRACE_WITH_REGS is not set
LoongArch: ftrace: Implement ftrace_find_callable_addr() to simplify code
LoongArch: ftrace: Add direct call support
LoongArch: ftrace: Add direct call trampoline samples support

arch/loongarch/Kconfig | 5 +
arch/loongarch/Makefile | 2 +
arch/loongarch/crypto/Kconfig | 14 +
arch/loongarch/crypto/Makefile | 6 +
arch/loongarch/crypto/crc32-loongarch.c | 304 ++++++++++++++++++++
arch/loongarch/include/asm/checksum.h | 66 +++++
arch/loongarch/include/asm/fpu.h | 3 +
arch/loongarch/include/asm/ftrace.h | 37 +++
arch/loongarch/include/asm/inst.h | 26 ++
arch/loongarch/include/asm/loongarch.h | 57 ++--
arch/loongarch/include/asm/ptrace.h | 5 +
arch/loongarch/kernel/Makefile | 2 +-
arch/loongarch/kernel/ftrace_dyn.c | 128 +++++----
arch/loongarch/kernel/genex.S | 1 +
arch/loongarch/kernel/irq.c | 2 +-
arch/loongarch/kernel/kfpu.c | 43 +++
arch/loongarch/kernel/mcount_dyn.S | 13 +-
arch/loongarch/kernel/perf_event.c | 2 +-
arch/loongarch/kernel/time.c | 2 +-
arch/loongarch/kernel/traps.c | 318 ++++++++++++++++++---
arch/loongarch/lib/Makefile | 4 +-
arch/loongarch/lib/clear_user.S | 136 ++++++++-
arch/loongarch/lib/copy_user.S | 251 ++++++++++++----
arch/loongarch/lib/csum.c | 141 +++++++++
arch/loongarch/lib/error-inject.c | 10 +
arch/loongarch/lib/memcpy.S | 147 ++++++++--
arch/loongarch/lib/memmove.S | 120 ++++----
arch/loongarch/lib/memset.S | 116 ++++++--
crypto/Kconfig | 3 +
drivers/irqchip/irq-loongson-eiointc.c | 32 ++-
drivers/irqchip/irq-loongson-pch-pic.c | 6 +-
samples/ftrace/ftrace-direct-modify.c | 34 +++
samples/ftrace/ftrace-direct-multi-modify.c | 41 +++
samples/ftrace/ftrace-direct-multi.c | 25 ++
samples/ftrace/ftrace-direct-too.c | 27 ++
samples/ftrace/ftrace-direct.c | 23 ++
tools/arch/loongarch/include/uapi/asm/perf_regs.h | 40 +++
tools/arch/loongarch/include/uapi/asm/unistd.h | 9 +
tools/perf/Makefile.config | 12 +-
tools/perf/arch/loongarch/Build | 1 +
tools/perf/arch/loongarch/Makefile | 28 ++
tools/perf/arch/loongarch/annotate/instructions.c | 45 +++
.../arch/loongarch/entry/syscalls/mksyscalltbl | 61 ++++
.../perf/arch/loongarch/include/dwarf-regs-table.h | 16 ++
tools/perf/arch/loongarch/include/perf_regs.h | 15 +
tools/perf/arch/loongarch/util/Build | 5 +
tools/perf/arch/loongarch/util/dwarf-regs.c | 44 +++
tools/perf/arch/loongarch/util/perf_regs.c | 6 +
tools/perf/arch/loongarch/util/unwind-libdw.c | 56 ++++
tools/perf/arch/loongarch/util/unwind-libunwind.c | 82 ++++++
tools/perf/check-headers.sh | 1 +
tools/perf/util/annotate.c | 8 +
tools/perf/util/dwarf-regs.c | 7 +
tools/perf/util/env.c | 2 +
tools/perf/util/genelf.h | 3 +
tools/perf/util/perf_regs.c | 76 +++++
tools/perf/util/syscalltbl.c | 4 +
57 files changed, 2364 insertions(+), 309 deletions(-)
create mode 100644 arch/loongarch/crypto/Kconfig
create mode 100644 arch/loongarch/crypto/Makefile
create mode 100644 arch/loongarch/crypto/crc32-loongarch.c
create mode 100644 arch/loongarch/include/asm/checksum.h
create mode 100644 arch/loongarch/kernel/kfpu.c
create mode 100644 arch/loongarch/lib/csum.c
create mode 100644 arch/loongarch/lib/error-inject.c
create mode 100644 tools/arch/loongarch/include/uapi/asm/perf_regs.h
create mode 100644 tools/arch/loongarch/include/uapi/asm/unistd.h
create mode 100644 tools/perf/arch/loongarch/Build
create mode 100644 tools/perf/arch/loongarch/Makefile
create mode 100644 tools/perf/arch/loongarch/annotate/instructions.c
create mode 100755 tools/perf/arch/loongarch/entry/syscalls/mksyscalltbl
create mode 100644 tools/perf/arch/loongarch/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/loongarch/include/perf_regs.h
create mode 100644 tools/perf/arch/loongarch/util/Build
create mode 100644 tools/perf/arch/loongarch/util/dwarf-regs.c
create mode 100644 tools/perf/arch/loongarch/util/perf_regs.c
create mode 100644 tools/perf/arch/loongarch/util/unwind-libdw.c
create mode 100644 tools/perf/arch/loongarch/util/unwind-libunwind.c