Skip to content

Commit 2f26e42

Browse files
committed
Merge tag 'loongarch-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
Pull LoongArch updates from Huacai Chen: - Switch to relative exception tables - Add unaligned access support - Add alternative runtime patching mechanism - Add FDT booting support from efi system table - Add suspend/hibernation (ACPI S3/S4) support - Add basic STACKPROTECTOR support - Add ftrace (function tracer) support - Update the default config file * tag 'loongarch-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson: (24 commits) LoongArch: Update Loongson-3 default config file LoongArch: modules/ftrace: Initialize PLT at load time LoongArch/ftrace: Add HAVE_FUNCTION_GRAPH_RET_ADDR_PTR support LoongArch/ftrace: Add HAVE_DYNAMIC_FTRACE_WITH_ARGS support LoongArch/ftrace: Add HAVE_DYNAMIC_FTRACE_WITH_REGS support LoongArch/ftrace: Add dynamic function graph tracer support LoongArch/ftrace: Add dynamic function tracer support LoongArch/ftrace: Add recordmcount support LoongArch/ftrace: Add basic support LoongArch: module: Use got/plt section indices for relocations LoongArch: Add basic STACKPROTECTOR support LoongArch: Add hibernation (ACPI S4) support LoongArch: Add suspend (ACPI S3) support LoongArch: Add processing ISA Node in DeviceTree LoongArch: Add FDT booting support from efi system table LoongArch: Use alternative to optimize libraries LoongArch: Add alternative runtime patching mechanism LoongArch: Add unaligned access support LoongArch: BPF: Add BPF exception tables LoongArch: Remove the .fixup section usage ...
2 parents 96bab5b + 5535f4f commit 2f26e42

Some content is hidden

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

72 files changed

+3645
-187
lines changed

Documentation/admin-guide/sysctl/kernel.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -436,8 +436,8 @@ ignore-unaligned-usertrap
436436

437437
On architectures where unaligned accesses cause traps, and where this
438438
feature is supported (``CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN``;
439-
currently, ``arc`` and ``ia64``), controls whether all unaligned traps
440-
are logged.
439+
currently, ``arc``, ``ia64`` and ``loongarch``), controls whether all
440+
unaligned traps are logged.
441441

442442
= =============================================================
443443
0 Log all unaligned accesses.
@@ -1492,8 +1492,8 @@ unaligned-trap
14921492

14931493
On architectures where unaligned accesses cause traps, and where this
14941494
feature is supported (``CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW``; currently,
1495-
``arc`` and ``parisc``), controls whether unaligned traps are caught
1496-
and emulated (instead of failing).
1495+
``arc``, ``parisc`` and ``loongarch``), controls whether unaligned traps
1496+
are caught and emulated (instead of failing).
14971497

14981498
= ========================================================
14991499
0 Do not emulate unaligned accesses.

arch/loongarch/Kconfig

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ config LOONGARCH
5858
select ARCH_WANTS_NO_INSTR
5959
select BUILDTIME_TABLE_SORT
6060
select COMMON_CLK
61+
select CPU_PM
6162
select EFI
6263
select GENERIC_CLOCKEVENTS
6364
select GENERIC_CMOS_UPDATE
@@ -86,11 +87,18 @@ config LOONGARCH
8687
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
8788
select HAVE_ASM_MODVERSIONS
8889
select HAVE_CONTEXT_TRACKING_USER
90+
select HAVE_C_RECORDMCOUNT
8991
select HAVE_DEBUG_STACKOVERFLOW
9092
select HAVE_DMA_CONTIGUOUS
93+
select HAVE_DYNAMIC_FTRACE
94+
select HAVE_DYNAMIC_FTRACE_WITH_ARGS
95+
select HAVE_DYNAMIC_FTRACE_WITH_REGS
9196
select HAVE_EBPF_JIT
9297
select HAVE_EXIT_THREAD
9398
select HAVE_FAST_GUP
99+
select HAVE_FTRACE_MCOUNT_RECORD
100+
select HAVE_FUNCTION_GRAPH_TRACER
101+
select HAVE_FUNCTION_TRACER
94102
select HAVE_GENERIC_VDSO
95103
select HAVE_IOREMAP_PROT
96104
select HAVE_IRQ_EXIT_ON_IRQ_STACK
@@ -104,6 +112,7 @@ config LOONGARCH
104112
select HAVE_REGS_AND_STACK_ACCESS_API
105113
select HAVE_RSEQ
106114
select HAVE_SETUP_PER_CPU_AREA if NUMA
115+
select HAVE_STACKPROTECTOR
107116
select HAVE_SYSCALL_TRACEPOINTS
108117
select HAVE_TIF_NOHZ
109118
select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
@@ -113,6 +122,8 @@ config LOONGARCH
113122
select MODULES_USE_ELF_RELA if MODULES
114123
select NEED_PER_CPU_EMBED_FIRST_CHUNK
115124
select NEED_PER_CPU_PAGE_FIRST_CHUNK
125+
select OF
126+
select OF_EARLY_FLATTREE
116127
select PCI
117128
select PCI_DOMAINS_GENERIC
118129
select PCI_ECAM if ACPI
@@ -123,6 +134,8 @@ config LOONGARCH
123134
select RTC_LIB
124135
select SMP
125136
select SPARSE_IRQ
137+
select SYSCTL_ARCH_UNALIGN_ALLOW
138+
select SYSCTL_ARCH_UNALIGN_NO_WARN
126139
select SYSCTL_EXCEPTION_TRACE
127140
select SWIOTLB
128141
select TRACE_IRQFLAGS_SUPPORT
@@ -516,6 +529,13 @@ config ARCH_MMAP_RND_BITS_MAX
516529

517530
menu "Power management options"
518531

532+
config ARCH_SUSPEND_POSSIBLE
533+
def_bool y
534+
535+
config ARCH_HIBERNATION_POSSIBLE
536+
def_bool y
537+
538+
source "kernel/power/Kconfig"
519539
source "drivers/acpi/Kconfig"
520540

521541
endmenu

arch/loongarch/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ endif
2525
32bit-emul = elf32loongarch
2626
64bit-emul = elf64loongarch
2727

28+
ifdef CONFIG_DYNAMIC_FTRACE
29+
KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY
30+
CC_FLAGS_FTRACE := -fpatchable-function-entry=2
31+
endif
32+
2833
ifdef CONFIG_64BIT
2934
tool-archpref = $(64bit-tool-archpref)
3035
UTS_MACHINE := loongarch64
@@ -104,6 +109,9 @@ endif
104109
libs-y += arch/loongarch/lib/
105110
libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
106111

112+
# suspend and hibernation support
113+
drivers-$(CONFIG_PM) += arch/loongarch/power/
114+
107115
ifeq ($(KBUILD_EXTMOD),)
108116
prepare: vdso_prepare
109117
vdso_prepare: prepare0

arch/loongarch/configs/loongson3_defconfig

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -34,27 +34,28 @@ CONFIG_SYSFS_DEPRECATED=y
3434
CONFIG_RELAY=y
3535
CONFIG_BLK_DEV_INITRD=y
3636
CONFIG_EXPERT=y
37-
CONFIG_USERFAULTFD=y
37+
CONFIG_KALLSYMS_ALL=y
3838
CONFIG_PERF_EVENTS=y
39-
# CONFIG_COMPAT_BRK is not set
4039
CONFIG_LOONGARCH=y
4140
CONFIG_64BIT=y
4241
CONFIG_MACH_LOONGSON64=y
42+
CONFIG_PAGE_SIZE_16KB=y
43+
CONFIG_HZ_250=y
4344
CONFIG_DMI=y
4445
CONFIG_EFI=y
4546
CONFIG_SMP=y
4647
CONFIG_HOTPLUG_CPU=y
4748
CONFIG_NR_CPUS=64
4849
CONFIG_NUMA=y
4950
CONFIG_KEXEC=y
50-
CONFIG_PAGE_SIZE_16KB=y
51-
CONFIG_HZ_250=y
51+
CONFIG_SUSPEND=y
52+
CONFIG_HIBERNATION=y
5253
CONFIG_ACPI=y
5354
CONFIG_ACPI_SPCR_TABLE=y
54-
CONFIG_ACPI_HOTPLUG_CPU=y
5555
CONFIG_ACPI_TAD=y
5656
CONFIG_ACPI_DOCK=y
5757
CONFIG_ACPI_IPMI=m
58+
CONFIG_ACPI_HOTPLUG_CPU=y
5859
CONFIG_ACPI_PCI_SLOT=y
5960
CONFIG_ACPI_HOTPLUG_MEMORY=y
6061
CONFIG_EFI_ZBOOT=y
@@ -73,17 +74,19 @@ CONFIG_UNIXWARE_DISKLABEL=y
7374
CONFIG_IOSCHED_BFQ=y
7475
CONFIG_BFQ_GROUP_IOSCHED=y
7576
CONFIG_BINFMT_MISC=m
76-
CONFIG_MEMORY_HOTPLUG=y
77-
CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
78-
CONFIG_MEMORY_HOTREMOVE=y
79-
CONFIG_KSM=y
80-
CONFIG_TRANSPARENT_HUGEPAGE=y
77+
CONFIG_ZPOOL=y
8178
CONFIG_ZSWAP=y
8279
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y
83-
CONFIG_ZPOOL=y
8480
CONFIG_ZBUD=y
8581
CONFIG_Z3FOLD=y
8682
CONFIG_ZSMALLOC=m
83+
# CONFIG_COMPAT_BRK is not set
84+
CONFIG_MEMORY_HOTPLUG=y
85+
CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
86+
CONFIG_MEMORY_HOTREMOVE=y
87+
CONFIG_KSM=y
88+
CONFIG_TRANSPARENT_HUGEPAGE=y
89+
CONFIG_USERFAULTFD=y
8790
CONFIG_NET=y
8891
CONFIG_PACKET=y
8992
CONFIG_UNIX=y
@@ -118,7 +121,6 @@ CONFIG_NETFILTER=y
118121
CONFIG_BRIDGE_NETFILTER=m
119122
CONFIG_NETFILTER_NETLINK_LOG=m
120123
CONFIG_NF_CONNTRACK=m
121-
CONFIG_NF_LOG_NETDEV=m
122124
CONFIG_NF_CONNTRACK_AMANDA=m
123125
CONFIG_NF_CONNTRACK_FTP=m
124126
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
@@ -416,6 +418,7 @@ CONFIG_SCSI_VIRTIO=m
416418
CONFIG_ATA=y
417419
CONFIG_SATA_AHCI=y
418420
CONFIG_SATA_AHCI_PLATFORM=y
421+
CONFIG_AHCI_DWC=y
419422
CONFIG_PATA_ATIIXP=y
420423
CONFIG_PATA_PCMCIA=m
421424
CONFIG_MD=y
@@ -469,13 +472,11 @@ CONFIG_VIRTIO_NET=m
469472
# CONFIG_NET_VENDOR_ARC is not set
470473
# CONFIG_NET_VENDOR_ATHEROS is not set
471474
CONFIG_BNX2=y
472-
# CONFIG_NET_VENDOR_BROCADE is not set
473475
# CONFIG_NET_VENDOR_CAVIUM is not set
474476
CONFIG_CHELSIO_T1=m
475477
CONFIG_CHELSIO_T1_1G=y
476478
CONFIG_CHELSIO_T3=m
477479
CONFIG_CHELSIO_T4=m
478-
# CONFIG_NET_VENDOR_CIRRUS is not set
479480
# CONFIG_NET_VENDOR_CISCO is not set
480481
# CONFIG_NET_VENDOR_DEC is not set
481482
# CONFIG_NET_VENDOR_DLINK is not set
@@ -496,6 +497,7 @@ CONFIG_IXGBE=y
496497
# CONFIG_NET_VENDOR_NVIDIA is not set
497498
# CONFIG_NET_VENDOR_OKI is not set
498499
# CONFIG_NET_VENDOR_QLOGIC is not set
500+
# CONFIG_NET_VENDOR_BROCADE is not set
499501
# CONFIG_NET_VENDOR_QUALCOMM is not set
500502
# CONFIG_NET_VENDOR_RDC is not set
501503
CONFIG_8139CP=m
@@ -505,9 +507,9 @@ CONFIG_R8169=y
505507
# CONFIG_NET_VENDOR_ROCKER is not set
506508
# CONFIG_NET_VENDOR_SAMSUNG is not set
507509
# CONFIG_NET_VENDOR_SEEQ is not set
508-
# CONFIG_NET_VENDOR_SOLARFLARE is not set
509510
# CONFIG_NET_VENDOR_SILAN is not set
510511
# CONFIG_NET_VENDOR_SIS is not set
512+
# CONFIG_NET_VENDOR_SOLARFLARE is not set
511513
# CONFIG_NET_VENDOR_SMSC is not set
512514
CONFIG_STMMAC_ETH=y
513515
# CONFIG_NET_VENDOR_SUN is not set
@@ -588,6 +590,7 @@ CONFIG_SERIAL_8250_EXTENDED=y
588590
CONFIG_SERIAL_8250_MANY_PORTS=y
589591
CONFIG_SERIAL_8250_SHARE_IRQ=y
590592
CONFIG_SERIAL_8250_RSA=y
593+
CONFIG_SERIAL_OF_PLATFORM=y
591594
CONFIG_SERIAL_NONSTANDARD=y
592595
CONFIG_PRINTER=m
593596
CONFIG_VIRTIO_CONSOLE=y
@@ -602,23 +605,28 @@ CONFIG_I2C_GPIO=y
602605
CONFIG_SPI=y
603606
CONFIG_GPIO_SYSFS=y
604607
CONFIG_GPIO_LOONGSON=y
608+
CONFIG_POWER_RESET=y
609+
CONFIG_POWER_RESET_RESTART=y
610+
CONFIG_POWER_RESET_SYSCON=y
611+
CONFIG_POWER_RESET_SYSCON_POWEROFF=y
612+
CONFIG_SYSCON_REBOOT_MODE=y
605613
CONFIG_SENSORS_LM75=m
606614
CONFIG_SENSORS_LM93=m
607615
CONFIG_SENSORS_W83795=m
608616
CONFIG_SENSORS_W83627HF=m
609617
CONFIG_RC_CORE=m
610618
CONFIG_LIRC=y
611619
CONFIG_RC_DECODERS=y
620+
CONFIG_IR_IMON_DECODER=m
621+
CONFIG_IR_JVC_DECODER=m
622+
CONFIG_IR_MCE_KBD_DECODER=m
612623
CONFIG_IR_NEC_DECODER=m
613624
CONFIG_IR_RC5_DECODER=m
614625
CONFIG_IR_RC6_DECODER=m
615-
CONFIG_IR_JVC_DECODER=m
616-
CONFIG_IR_SONY_DECODER=m
617626
CONFIG_IR_SANYO_DECODER=m
618627
CONFIG_IR_SHARP_DECODER=m
619-
CONFIG_IR_MCE_KBD_DECODER=m
628+
CONFIG_IR_SONY_DECODER=m
620629
CONFIG_IR_XMP_DECODER=m
621-
CONFIG_IR_IMON_DECODER=m
622630
CONFIG_MEDIA_SUPPORT=m
623631
CONFIG_MEDIA_USB_SUPPORT=y
624632
CONFIG_USB_VIDEO_CLASS=m
@@ -638,6 +646,7 @@ CONFIG_DRM_VIRTIO_GPU=m
638646
CONFIG_FB=y
639647
CONFIG_FB_EFI=y
640648
CONFIG_FB_RADEON=y
649+
CONFIG_LCD_CLASS_DEVICE=y
641650
CONFIG_LCD_PLATFORM=m
642651
# CONFIG_VGA_CONSOLE is not set
643652
CONFIG_FRAMEBUFFER_CONSOLE=y
@@ -647,7 +656,6 @@ CONFIG_SOUND=y
647656
CONFIG_SND=y
648657
CONFIG_SND_SEQUENCER=m
649658
CONFIG_SND_SEQ_DUMMY=m
650-
# CONFIG_SND_ISA is not set
651659
CONFIG_SND_BT87X=m
652660
CONFIG_SND_BT87X_OVERCLOCK=y
653661
CONFIG_SND_HDA_INTEL=y
@@ -818,10 +826,6 @@ CONFIG_CRYPTO_USER=m
818826
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
819827
CONFIG_CRYPTO_PCRYPT=m
820828
CONFIG_CRYPTO_CRYPTD=m
821-
CONFIG_CRYPTO_CHACHA20POLY1305=m
822-
CONFIG_CRYPTO_HMAC=y
823-
CONFIG_CRYPTO_VMAC=m
824-
CONFIG_CRYPTO_WP512=m
825829
CONFIG_CRYPTO_ANUBIS=m
826830
CONFIG_CRYPTO_BLOWFISH=m
827831
CONFIG_CRYPTO_CAST5=m
@@ -831,6 +835,9 @@ CONFIG_CRYPTO_SEED=m
831835
CONFIG_CRYPTO_SERPENT=m
832836
CONFIG_CRYPTO_TEA=m
833837
CONFIG_CRYPTO_TWOFISH=m
838+
CONFIG_CRYPTO_CHACHA20POLY1305=m
839+
CONFIG_CRYPTO_VMAC=m
840+
CONFIG_CRYPTO_WP512=m
834841
CONFIG_CRYPTO_DEFLATE=m
835842
CONFIG_CRYPTO_LZO=m
836843
CONFIG_CRYPTO_842=m
@@ -844,6 +851,7 @@ CONFIG_CRYPTO_DEV_VIRTIO=m
844851
CONFIG_PRINTK_TIME=y
845852
CONFIG_STRIP_ASM_SYMS=y
846853
CONFIG_MAGIC_SYSRQ=y
854+
CONFIG_DEBUG_FS=y
847855
# CONFIG_SCHED_DEBUG is not set
848856
CONFIG_SCHEDSTATS=y
849857
# CONFIG_DEBUG_PREEMPT is not set

arch/loongarch/include/asm/acpi.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,14 @@ extern struct list_head acpi_wakeup_device_list;
3535

3636
#define ACPI_TABLE_UPGRADE_MAX_PHYS ARCH_LOW_ADDRESS_LIMIT
3737

38+
extern int loongarch_acpi_suspend(void);
39+
extern int (*acpi_suspend_lowlevel)(void);
40+
extern void loongarch_suspend_enter(void);
41+
42+
static inline unsigned long acpi_get_wakeup_address(void)
43+
{
44+
extern void loongarch_wakeup_start(void);
45+
return (unsigned long)loongarch_wakeup_start;
46+
}
47+
3848
#endif /* _ASM_LOONGARCH_ACPI_H */

0 commit comments

Comments
 (0)