Skip to content

Commit 12952b6

Browse files
committed
Merge tag 'loongarch-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
Pull LoongArch updates from Huacai Chen: - Allow usage of LSX/LASX in the kernel, and use them for SIMD-optimized RAID5/RAID6 routines - Add Loongson Binary Translation (LBT) extension support - Add basic KGDB & KDB support - Add building with kcov coverage - Add KFENCE (Kernel Electric-Fence) support - Add KASAN (Kernel Address Sanitizer) support - Some bug fixes and other small changes - Update the default config file * tag 'loongarch-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson: (25 commits) LoongArch: Update Loongson-3 default config file LoongArch: Add KASAN (Kernel Address Sanitizer) support LoongArch: Simplify the processing of jumping new kernel for KASLR kasan: Add (pmd|pud)_init for LoongArch zero_(pud|p4d)_populate process kasan: Add __HAVE_ARCH_SHADOW_MAP to support arch specific mapping LoongArch: Add KFENCE (Kernel Electric-Fence) support LoongArch: Get partial stack information when providing regs parameter LoongArch: mm: Add page table mapped mode support for virt_to_page() kfence: Defer the assignment of the local variable addr LoongArch: Allow building with kcov coverage LoongArch: Provide kaslr_offset() to get kernel offset LoongArch: Add basic KGDB & KDB support LoongArch: Add Loongson Binary Translation (LBT) extension support raid6: Add LoongArch SIMD recovery implementation raid6: Add LoongArch SIMD syndrome calculation LoongArch: Add SIMD-optimized XOR routines LoongArch: Allow usage of LSX/LASX in the kernel LoongArch: Define symbol 'fault' as a local label in fpu.S LoongArch: Adjust {copy, clear}_user exception handler behavior LoongArch: Use static defined zero page rather than allocated ...
2 parents 01a46ef + 671eae9 commit 12952b6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+3862
-461
lines changed

Documentation/dev-tools/kasan.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ Support
4141
Architectures
4242
~~~~~~~~~~~~~
4343

44-
Generic KASAN is supported on x86_64, arm, arm64, powerpc, riscv, s390, and
45-
xtensa, and the tag-based KASAN modes are supported only on arm64.
44+
Generic KASAN is supported on x86_64, arm, arm64, powerpc, riscv, s390, xtensa,
45+
and loongarch, and the tag-based KASAN modes are supported only on arm64.
4646

4747
Compilers
4848
~~~~~~~~~

Documentation/features/debug/KASAN/arch-support.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
| csky: | TODO |
1414
| hexagon: | TODO |
1515
| ia64: | TODO |
16-
| loongarch: | TODO |
16+
| loongarch: | ok |
1717
| m68k: | TODO |
1818
| microblaze: | TODO |
1919
| mips: | TODO |

Documentation/features/debug/kcov/arch-support.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
| csky: | TODO |
1414
| hexagon: | TODO |
1515
| ia64: | TODO |
16-
| loongarch: | TODO |
16+
| loongarch: | ok |
1717
| m68k: | TODO |
1818
| microblaze: | TODO |
1919
| mips: | ok |

Documentation/features/debug/kgdb/arch-support.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
| csky: | TODO |
1414
| hexagon: | ok |
1515
| ia64: | TODO |
16-
| loongarch: | TODO |
16+
| loongarch: | ok |
1717
| m68k: | TODO |
1818
| microblaze: | ok |
1919
| mips: | ok |

Documentation/translations/zh_CN/dev-tools/kasan.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ KASAN有三种模式:
4242
体系架构
4343
~~~~~~~~
4444

45-
在x86_64、arm、arm64、powerpc、riscv、s390和xtensa上支持通用KASAN
45+
在x86_64、arm、arm64、powerpc、riscv、s390、xtensa和loongarch上支持通用KASAN
4646
而基于标签的KASAN模式只在arm64上支持。
4747

4848
编译器

arch/loongarch/Kconfig

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ config LOONGARCH
88
select ACPI_PPTT if ACPI
99
select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
1010
select ARCH_BINFMT_ELF_STATE
11+
select ARCH_DISABLE_KASAN_INLINE
1112
select ARCH_ENABLE_MEMORY_HOTPLUG
1213
select ARCH_ENABLE_MEMORY_HOTREMOVE
1314
select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
1415
select ARCH_HAS_CPU_FINALIZE_INIT
1516
select ARCH_HAS_FORTIFY_SOURCE
17+
select ARCH_HAS_KCOV
1618
select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
1719
select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
1820
select ARCH_HAS_PTE_SPECIAL
@@ -91,6 +93,9 @@ config LOONGARCH
9193
select HAVE_ARCH_AUDITSYSCALL
9294
select HAVE_ARCH_JUMP_LABEL
9395
select HAVE_ARCH_JUMP_LABEL_RELATIVE
96+
select HAVE_ARCH_KASAN
97+
select HAVE_ARCH_KFENCE
98+
select HAVE_ARCH_KGDB if PERF_EVENTS
9499
select HAVE_ARCH_MMAP_RND_BITS if MMU
95100
select HAVE_ARCH_SECCOMP_FILTER
96101
select HAVE_ARCH_TRACEHOOK
@@ -115,6 +120,7 @@ config LOONGARCH
115120
select HAVE_FUNCTION_GRAPH_RETVAL if HAVE_FUNCTION_GRAPH_TRACER
116121
select HAVE_FUNCTION_GRAPH_TRACER
117122
select HAVE_FUNCTION_TRACER
123+
select HAVE_GCC_PLUGINS
118124
select HAVE_GENERIC_VDSO
119125
select HAVE_HW_BREAKPOINT if PERF_EVENTS
120126
select HAVE_IOREMAP_PROT
@@ -254,6 +260,9 @@ config AS_HAS_LSX_EXTENSION
254260
config AS_HAS_LASX_EXTENSION
255261
def_bool $(as-instr,xvld \$xr0$(comma)\$a0$(comma)0)
256262

263+
config AS_HAS_LBT_EXTENSION
264+
def_bool $(as-instr,movscr2gr \$a0$(comma)\$scr0)
265+
257266
menu "Kernel type and options"
258267

259268
source "kernel/Kconfig.hz"
@@ -534,6 +543,18 @@ config CPU_HAS_LASX
534543

535544
If unsure, say Y.
536545

546+
config CPU_HAS_LBT
547+
bool "Support for the Loongson Binary Translation Extension"
548+
depends on AS_HAS_LBT_EXTENSION
549+
help
550+
Loongson Binary Translation (LBT) introduces 4 scratch registers (SCR0
551+
to SCR3), x86/ARM eflags (eflags) and x87 fpu stack pointer (ftop).
552+
Enabling this option allows the kernel to allocate and switch registers
553+
specific to LBT.
554+
555+
If you want to use this feature, such as the Loongson Architecture
556+
Translator (LAT), say Y.
557+
537558
config CPU_HAS_PREFETCH
538559
bool
539560
default y
@@ -638,6 +659,11 @@ config ARCH_MMAP_RND_BITS_MAX
638659
config ARCH_SUPPORTS_UPROBES
639660
def_bool y
640661

662+
config KASAN_SHADOW_OFFSET
663+
hex
664+
default 0x0
665+
depends on KASAN
666+
641667
menu "Power management options"
642668

643669
config ARCH_SUSPEND_POSSIBLE

arch/loongarch/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,10 @@ LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext
8484
endif
8585

8686
cflags-y += $(call cc-option, -mno-check-zero-division)
87+
88+
ifndef CONFIG_KASAN
8789
cflags-y += -fno-builtin-memcpy -fno-builtin-memmove -fno-builtin-memset
90+
endif
8891

8992
load-y = 0x9000000000200000
9093
bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y)

arch/loongarch/configs/loongson3_defconfig

Lines changed: 70 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ CONFIG_NAMESPACES=y
3030
CONFIG_USER_NS=y
3131
CONFIG_CHECKPOINT_RESTORE=y
3232
CONFIG_SCHED_AUTOGROUP=y
33-
CONFIG_SYSFS_DEPRECATED=y
3433
CONFIG_RELAY=y
3534
CONFIG_BLK_DEV_INITRD=y
3635
CONFIG_EXPERT=y
@@ -47,8 +46,12 @@ CONFIG_SMP=y
4746
CONFIG_HOTPLUG_CPU=y
4847
CONFIG_NR_CPUS=64
4948
CONFIG_NUMA=y
49+
CONFIG_CPU_HAS_FPU=y
50+
CONFIG_CPU_HAS_LSX=y
51+
CONFIG_CPU_HAS_LASX=y
5052
CONFIG_KEXEC=y
5153
CONFIG_CRASH_DUMP=y
54+
CONFIG_RANDOMIZE_BASE=y
5255
CONFIG_SUSPEND=y
5356
CONFIG_HIBERNATION=y
5457
CONFIG_ACPI=y
@@ -63,6 +66,7 @@ CONFIG_EFI_ZBOOT=y
6366
CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y
6467
CONFIG_EFI_CAPSULE_LOADER=m
6568
CONFIG_EFI_TEST=m
69+
CONFIG_JUMP_LABEL=y
6670
CONFIG_MODULES=y
6771
CONFIG_MODULE_FORCE_LOAD=y
6872
CONFIG_MODULE_UNLOAD=y
@@ -108,7 +112,12 @@ CONFIG_IP_PNP_BOOTP=y
108112
CONFIG_IP_PNP_RARP=y
109113
CONFIG_NET_IPIP=m
110114
CONFIG_NET_IPGRE_DEMUX=m
115+
CONFIG_NET_IPGRE=m
116+
CONFIG_NET_IPGRE_BROADCAST=y
111117
CONFIG_IP_MROUTE=y
118+
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
119+
CONFIG_IP_PIMSM_V1=y
120+
CONFIG_IP_PIMSM_V2=y
112121
CONFIG_INET_ESP=m
113122
CONFIG_INET_UDP_DIAG=y
114123
CONFIG_TCP_CONG_ADVANCED=y
@@ -137,7 +146,6 @@ CONFIG_NFT_MASQ=m
137146
CONFIG_NFT_REDIR=m
138147
CONFIG_NFT_NAT=m
139148
CONFIG_NFT_TUNNEL=m
140-
CONFIG_NFT_OBJREF=m
141149
CONFIG_NFT_QUEUE=m
142150
CONFIG_NFT_QUOTA=m
143151
CONFIG_NFT_REJECT=m
@@ -208,7 +216,11 @@ CONFIG_IP_VS=m
208216
CONFIG_IP_VS_IPV6=y
209217
CONFIG_IP_VS_PROTO_TCP=y
210218
CONFIG_IP_VS_PROTO_UDP=y
219+
CONFIG_IP_VS_PROTO_ESP=y
220+
CONFIG_IP_VS_PROTO_AH=y
221+
CONFIG_IP_VS_PROTO_SCTP=y
211222
CONFIG_IP_VS_RR=m
223+
CONFIG_IP_VS_WRR=m
212224
CONFIG_IP_VS_NFCT=y
213225
CONFIG_NF_TABLES_IPV4=y
214226
CONFIG_NFT_DUP_IPV4=m
@@ -227,7 +239,6 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m
227239
CONFIG_IP_NF_TARGET_NETMAP=m
228240
CONFIG_IP_NF_TARGET_REDIRECT=m
229241
CONFIG_IP_NF_MANGLE=m
230-
CONFIG_IP_NF_TARGET_CLUSTERIP=m
231242
CONFIG_IP_NF_TARGET_ECN=m
232243
CONFIG_IP_NF_TARGET_TTL=m
233244
CONFIG_IP_NF_RAW=m
@@ -363,13 +374,16 @@ CONFIG_MTD_CFI_AMDSTD=m
363374
CONFIG_MTD_CFI_STAA=m
364375
CONFIG_MTD_RAM=m
365376
CONFIG_MTD_ROM=m
377+
CONFIG_MTD_UBI=m
378+
CONFIG_MTD_UBI_BLOCK=y
366379
CONFIG_PARPORT=y
367380
CONFIG_PARPORT_PC=y
368381
CONFIG_PARPORT_SERIAL=y
369382
CONFIG_PARPORT_PC_FIFO=y
370383
CONFIG_ZRAM=m
371384
CONFIG_ZRAM_DEF_COMP_ZSTD=y
372385
CONFIG_BLK_DEV_LOOP=y
386+
CONFIG_BLK_DEV_DRBD=m
373387
CONFIG_BLK_DEV_NBD=m
374388
CONFIG_BLK_DEV_RAM=y
375389
CONFIG_BLK_DEV_RAM_SIZE=8192
@@ -516,6 +530,8 @@ CONFIG_STMMAC_ETH=y
516530
# CONFIG_NET_VENDOR_TEHUTI is not set
517531
# CONFIG_NET_VENDOR_TI is not set
518532
# CONFIG_NET_VENDOR_VIA is not set
533+
CONFIG_NGBE=y
534+
CONFIG_TXGBE=y
519535
# CONFIG_NET_VENDOR_WIZNET is not set
520536
# CONFIG_NET_VENDOR_XILINX is not set
521537
CONFIG_PPP=m
@@ -602,9 +618,15 @@ CONFIG_HW_RANDOM_VIRTIO=m
602618
CONFIG_I2C_CHARDEV=y
603619
CONFIG_I2C_PIIX4=y
604620
CONFIG_I2C_GPIO=y
621+
CONFIG_I2C_LS2X=y
605622
CONFIG_SPI=y
623+
CONFIG_SPI_LOONGSON_PCI=m
624+
CONFIG_SPI_LOONGSON_PLATFORM=m
625+
CONFIG_PINCTRL=y
626+
CONFIG_PINCTRL_LOONGSON2=y
606627
CONFIG_GPIO_SYSFS=y
607628
CONFIG_GPIO_LOONGSON=y
629+
CONFIG_GPIO_LOONGSON_64BIT=y
608630
CONFIG_POWER_RESET=y
609631
CONFIG_POWER_RESET_RESTART=y
610632
CONFIG_POWER_RESET_SYSCON=y
@@ -614,6 +636,7 @@ CONFIG_SENSORS_LM75=m
614636
CONFIG_SENSORS_LM93=m
615637
CONFIG_SENSORS_W83795=m
616638
CONFIG_SENSORS_W83627HF=m
639+
CONFIG_LOONGSON2_THERMAL=m
617640
CONFIG_RC_CORE=m
618641
CONFIG_LIRC=y
619642
CONFIG_RC_DECODERS=y
@@ -643,6 +666,7 @@ CONFIG_DRM_AMDGPU_USERPTR=y
643666
CONFIG_DRM_AST=y
644667
CONFIG_DRM_QXL=m
645668
CONFIG_DRM_VIRTIO_GPU=m
669+
CONFIG_DRM_LOONGSON=y
646670
CONFIG_FB=y
647671
CONFIG_FB_EFI=y
648672
CONFIG_FB_RADEON=y
@@ -712,6 +736,7 @@ CONFIG_UCSI_ACPI=m
712736
CONFIG_INFINIBAND=m
713737
CONFIG_RTC_CLASS=y
714738
CONFIG_RTC_DRV_EFI=y
739+
CONFIG_RTC_DRV_LOONGSON=y
715740
CONFIG_DMADEVICES=y
716741
CONFIG_UIO=m
717742
CONFIG_UIO_PDRV_GENIRQ=m
@@ -745,7 +770,9 @@ CONFIG_COMEDI_NI_LABPC_PCI=m
745770
CONFIG_COMEDI_NI_PCIDIO=m
746771
CONFIG_COMEDI_NI_PCIMIO=m
747772
CONFIG_STAGING=y
748-
CONFIG_R8188EU=m
773+
CONFIG_COMMON_CLK_LOONGSON2=y
774+
CONFIG_LOONGSON2_GUTS=y
775+
CONFIG_LOONGSON2_PM=y
749776
CONFIG_PM_DEVFREQ=y
750777
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
751778
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
@@ -759,10 +786,17 @@ CONFIG_EXT2_FS_SECURITY=y
759786
CONFIG_EXT3_FS=y
760787
CONFIG_EXT3_FS_POSIX_ACL=y
761788
CONFIG_EXT3_FS_SECURITY=y
789+
CONFIG_JFS_FS=m
790+
CONFIG_JFS_POSIX_ACL=y
791+
CONFIG_JFS_SECURITY=y
762792
CONFIG_XFS_FS=y
763793
CONFIG_XFS_QUOTA=y
764794
CONFIG_XFS_POSIX_ACL=y
795+
CONFIG_GFS2_FS=m
796+
CONFIG_GFS2_FS_LOCKING_DLM=y
797+
CONFIG_OCFS2_FS=m
765798
CONFIG_BTRFS_FS=y
799+
CONFIG_BTRFS_FS_POSIX_ACL=y
766800
CONFIG_FANOTIFY=y
767801
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
768802
CONFIG_QUOTA=y
@@ -771,11 +805,14 @@ CONFIG_QFMT_V1=m
771805
CONFIG_QFMT_V2=m
772806
CONFIG_AUTOFS_FS=y
773807
CONFIG_FUSE_FS=m
808+
CONFIG_CUSE=m
809+
CONFIG_VIRTIO_FS=m
774810
CONFIG_OVERLAY_FS=y
775811
CONFIG_OVERLAY_FS_INDEX=y
776812
CONFIG_OVERLAY_FS_XINO_AUTO=y
777813
CONFIG_OVERLAY_FS_METACOPY=y
778814
CONFIG_FSCACHE=y
815+
CONFIG_CACHEFILES=m
779816
CONFIG_ISO9660_FS=y
780817
CONFIG_JOLIET=y
781818
CONFIG_ZISOFS=y
@@ -784,19 +821,42 @@ CONFIG_MSDOS_FS=m
784821
CONFIG_VFAT_FS=m
785822
CONFIG_FAT_DEFAULT_CODEPAGE=936
786823
CONFIG_FAT_DEFAULT_IOCHARSET="gb2312"
824+
CONFIG_EXFAT_FS=m
825+
CONFIG_NTFS3_FS=m
826+
CONFIG_NTFS3_64BIT_CLUSTER=y
827+
CONFIG_NTFS3_LZX_XPRESS=y
787828
CONFIG_PROC_KCORE=y
788829
CONFIG_TMPFS=y
789830
CONFIG_TMPFS_POSIX_ACL=y
790831
CONFIG_HUGETLBFS=y
791832
CONFIG_CONFIGFS_FS=y
833+
CONFIG_ORANGEFS_FS=m
834+
CONFIG_ECRYPT_FS=m
835+
CONFIG_ECRYPT_FS_MESSAGING=y
792836
CONFIG_HFS_FS=m
793837
CONFIG_HFSPLUS_FS=m
838+
CONFIG_UBIFS_FS=m
839+
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
794840
CONFIG_CRAMFS=m
795841
CONFIG_SQUASHFS=y
796842
CONFIG_SQUASHFS_XATTR=y
797843
CONFIG_SQUASHFS_LZ4=y
798844
CONFIG_SQUASHFS_LZO=y
799845
CONFIG_SQUASHFS_XZ=y
846+
CONFIG_MINIX_FS=m
847+
CONFIG_ROMFS_FS=m
848+
CONFIG_PSTORE=m
849+
CONFIG_PSTORE_LZO_COMPRESS=m
850+
CONFIG_PSTORE_LZ4_COMPRESS=m
851+
CONFIG_PSTORE_LZ4HC_COMPRESS=m
852+
CONFIG_PSTORE_842_COMPRESS=y
853+
CONFIG_PSTORE_ZSTD_COMPRESS=y
854+
CONFIG_PSTORE_ZSTD_COMPRESS_DEFAULT=y
855+
CONFIG_SYSV_FS=m
856+
CONFIG_UFS_FS=m
857+
CONFIG_EROFS_FS=m
858+
CONFIG_EROFS_FS_ZIP_LZMA=y
859+
CONFIG_EROFS_FS_PCPU_KTHREAD=y
800860
CONFIG_NFS_FS=y
801861
CONFIG_NFS_V3_ACL=y
802862
CONFIG_NFS_V4=y
@@ -807,13 +867,18 @@ CONFIG_NFSD=y
807867
CONFIG_NFSD_V3_ACL=y
808868
CONFIG_NFSD_V4=y
809869
CONFIG_NFSD_BLOCKLAYOUT=y
870+
CONFIG_CEPH_FS=m
871+
CONFIG_CEPH_FSCACHE=y
872+
CONFIG_CEPH_FS_POSIX_ACL=y
873+
CONFIG_CEPH_FS_SECURITY_LABEL=y
810874
CONFIG_CIFS=m
811875
# CONFIG_CIFS_DEBUG is not set
812876
CONFIG_9P_FS=y
813877
CONFIG_NLS_CODEPAGE_437=y
814878
CONFIG_NLS_CODEPAGE_936=y
815879
CONFIG_NLS_ASCII=y
816880
CONFIG_NLS_UTF8=y
881+
CONFIG_DLM=m
817882
CONFIG_KEY_DH_OPERATIONS=y
818883
CONFIG_SECURITY=y
819884
CONFIG_SECURITY_SELINUX=y
@@ -847,6 +912,7 @@ CONFIG_CRYPTO_USER_API_HASH=m
847912
CONFIG_CRYPTO_USER_API_SKCIPHER=m
848913
CONFIG_CRYPTO_USER_API_RNG=m
849914
CONFIG_CRYPTO_USER_API_AEAD=m
915+
CONFIG_CRYPTO_CRC32_LOONGARCH=m
850916
CONFIG_CRYPTO_DEV_VIRTIO=m
851917
CONFIG_PRINTK_TIME=y
852918
CONFIG_STRIP_ASM_SYMS=y

arch/loongarch/include/asm/asm-prototypes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* SPDX-License-Identifier: GPL-2.0 */
22
#include <linux/uaccess.h>
33
#include <asm/fpu.h>
4+
#include <asm/lbt.h>
45
#include <asm/mmu_context.h>
56
#include <asm/page.h>
67
#include <asm/ftrace.h>

0 commit comments

Comments
 (0)