Skip to content

Commit c946969

Browse files
committed
Merge tag 'loongarch-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
Pull LoongArch updates from Huacai Chen: - Fix build failure with GCC 15 due to default -std=gnu23 - Add PREEMPT_RT/PREEMPT_LAZY support - Add I2S in DTS for Loongson-2K1000/Loongson-2K2000 - Some bug fixes and other small changes * tag 'loongarch-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson: LoongArch: Update Loongson-3 default config file LoongArch: dts: Add I2S support to Loongson-2K2000 LoongArch: dts: Add I2S support to Loongson-2K1000 LoongArch: Allow to enable PREEMPT_LAZY LoongArch: Allow to enable PREEMPT_RT LoongArch: Select HAVE_POSIX_CPU_TIMERS_TASK_WORK LoongArch: Fix sleeping in atomic context for PREEMPT_RT LoongArch: Reduce min_delta for the arch clockevent device LoongArch: BPF: Sign-extend return values LoongArch: Fix build failure with GCC 15 (-std=gnu23) LoongArch: Explicitly specify code model in Makefile
2 parents ab952fc + 3c272a7 commit c946969

File tree

10 files changed

+134
-23
lines changed

10 files changed

+134
-23
lines changed

arch/loongarch/Kconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ config LOONGARCH
2323
select ARCH_HAS_KERNEL_FPU_SUPPORT if CPU_HAS_FPU
2424
select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
2525
select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
26+
select ARCH_HAS_PREEMPT_LAZY
2627
select ARCH_HAS_PTE_DEVMAP
2728
select ARCH_HAS_PTE_SPECIAL
2829
select ARCH_HAS_SET_MEMORY
@@ -66,6 +67,7 @@ config LOONGARCH
6667
select ARCH_SUPPORTS_LTO_CLANG
6768
select ARCH_SUPPORTS_LTO_CLANG_THIN
6869
select ARCH_SUPPORTS_NUMA_BALANCING
70+
select ARCH_SUPPORTS_RT
6971
select ARCH_USE_BUILTIN_BSWAP
7072
select ARCH_USE_CMPXCHG_LOCKREF
7173
select ARCH_USE_QUEUED_RWLOCKS
@@ -155,6 +157,7 @@ config LOONGARCH
155157
select HAVE_PERF_EVENTS
156158
select HAVE_PERF_REGS
157159
select HAVE_PERF_USER_STACK_DUMP
160+
select HAVE_POSIX_CPU_TIMERS_TASK_WORK
158161
select HAVE_PREEMPT_DYNAMIC_KEY
159162
select HAVE_REGS_AND_STACK_ACCESS_API
160163
select HAVE_RELIABLE_STACKTRACE if UNWINDER_ORC

arch/loongarch/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ endif
5959

6060
ifdef CONFIG_64BIT
6161
ld-emul = $(64bit-emul)
62-
cflags-y += -mabi=lp64s
62+
cflags-y += -mabi=lp64s -mcmodel=normal
6363
endif
6464

6565
cflags-y += -pipe $(CC_FLAGS_NO_FPU)
@@ -104,7 +104,7 @@ ifdef CONFIG_OBJTOOL
104104
KBUILD_CFLAGS += -fno-jump-tables
105105
endif
106106

107-
KBUILD_RUSTFLAGS += --target=loongarch64-unknown-none-softfloat
107+
KBUILD_RUSTFLAGS += --target=loongarch64-unknown-none-softfloat -Ccode-model=small
108108
KBUILD_RUSTFLAGS_KERNEL += -Zdirect-access-external-data=yes
109109
KBUILD_RUSTFLAGS_MODULE += -Zdirect-access-external-data=no
110110

arch/loongarch/boot/dts/loongson-2k1000.dtsi

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@
266266
status = "disabled";
267267
};
268268

269-
dma-controller@1fe00c20 {
269+
apbdma2: dma-controller@1fe00c20 {
270270
compatible = "loongson,ls2k1000-apbdma";
271271
reg = <0x0 0x1fe00c20 0x0 0x8>;
272272
interrupt-parent = <&liointc1>;
@@ -276,7 +276,7 @@
276276
status = "disabled";
277277
};
278278

279-
dma-controller@1fe00c30 {
279+
apbdma3: dma-controller@1fe00c30 {
280280
compatible = "loongson,ls2k1000-apbdma";
281281
reg = <0x0 0x1fe00c30 0x0 0x8>;
282282
interrupt-parent = <&liointc1>;
@@ -352,6 +352,19 @@
352352
status = "disabled";
353353
};
354354

355+
i2s: i2s@1fe2d000 {
356+
compatible = "loongson,ls2k1000-i2s";
357+
reg = <0 0x1fe2d000 0 0x14>,
358+
<0 0x1fe00438 0 0x8>;
359+
interrupt-parent = <&liointc0>;
360+
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
361+
clocks = <&clk LOONGSON2_APB_CLK>;
362+
dmas = <&apbdma2 0>, <&apbdma3 0>;
363+
dma-names = "tx", "rx";
364+
#sound-dai-cells = <0>;
365+
status = "disabled";
366+
};
367+
355368
spi0: spi@1fff0220 {
356369
compatible = "loongson,ls2k1000-spi";
357370
reg = <0x0 0x1fff0220 0x0 0x10>;

arch/loongarch/boot/dts/loongson-2k2000.dtsi

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,22 @@
173173
status = "disabled";
174174
};
175175

176+
i2c@1fe00120 {
177+
compatible = "loongson,ls2k-i2c";
178+
reg = <0x0 0x1fe00120 0x0 0x8>;
179+
interrupt-parent = <&liointc>;
180+
interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
181+
status = "disabled";
182+
};
183+
184+
i2c@1fe00130 {
185+
compatible = "loongson,ls2k-i2c";
186+
reg = <0x0 0x1fe00130 0x0 0x8>;
187+
interrupt-parent = <&liointc>;
188+
interrupts = <9 IRQ_TYPE_LEVEL_HIGH>;
189+
status = "disabled";
190+
};
191+
176192
uart0: serial@1fe001e0 {
177193
compatible = "ns16550a";
178194
reg = <0x0 0x1fe001e0 0x0 0x10>;
@@ -243,9 +259,11 @@
243259
status = "disabled";
244260
};
245261

246-
hda@7,0 {
262+
i2s@7,0 {
247263
reg = <0x3800 0x0 0x0 0x0 0x0>;
248-
interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
264+
interrupts = <78 IRQ_TYPE_LEVEL_HIGH>,
265+
<79 IRQ_TYPE_LEVEL_HIGH>;
266+
interrupt-names = "tx", "rx";
249267
interrupt-parent = <&pic>;
250268
status = "disabled";
251269
};

arch/loongarch/configs/loongson3_defconfig

Lines changed: 81 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# CONFIG_LOCALVERSION_AUTO is not set
2+
CONFIG_KERNEL_ZSTD=y
23
CONFIG_SYSVIPC=y
34
CONFIG_POSIX_MQUEUE=y
45
CONFIG_NO_HZ=y
@@ -70,6 +71,14 @@ CONFIG_ACPI_IPMI=m
7071
CONFIG_ACPI_HOTPLUG_CPU=y
7172
CONFIG_ACPI_PCI_SLOT=y
7273
CONFIG_ACPI_HOTPLUG_MEMORY=y
74+
CONFIG_ACPI_BGRT=y
75+
CONFIG_CPU_FREQ=y
76+
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
77+
CONFIG_CPU_FREQ_GOV_USERSPACE=y
78+
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
79+
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
80+
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
81+
CONFIG_LOONGSON3_CPUFREQ=m
7382
CONFIG_VIRTUALIZATION=y
7483
CONFIG_KVM=m
7584
CONFIG_JUMP_LABEL=y
@@ -78,13 +87,18 @@ CONFIG_MODULE_FORCE_LOAD=y
7887
CONFIG_MODULE_UNLOAD=y
7988
CONFIG_MODULE_FORCE_UNLOAD=y
8089
CONFIG_MODVERSIONS=y
90+
CONFIG_MODULE_COMPRESS=y
91+
CONFIG_MODULE_COMPRESS_ZSTD=y
92+
CONFIG_MODULE_DECOMPRESS=y
8193
CONFIG_BLK_DEV_ZONED=y
8294
CONFIG_BLK_DEV_THROTTLING=y
8395
CONFIG_BLK_WBT=y
8496
CONFIG_BLK_CGROUP_IOLATENCY=y
8597
CONFIG_BLK_CGROUP_FC_APPID=y
8698
CONFIG_BLK_CGROUP_IOCOST=y
8799
CONFIG_BLK_CGROUP_IOPRIO=y
100+
CONFIG_BLK_INLINE_ENCRYPTION=y
101+
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
88102
CONFIG_PARTITION_ADVANCED=y
89103
CONFIG_BSD_DISKLABEL=y
90104
CONFIG_UNIXWARE_DISKLABEL=y
@@ -413,7 +427,16 @@ CONFIG_PARPORT_PC=y
413427
CONFIG_PARPORT_SERIAL=y
414428
CONFIG_PARPORT_PC_FIFO=y
415429
CONFIG_ZRAM=m
430+
CONFIG_ZRAM_BACKEND_LZ4=y
431+
CONFIG_ZRAM_BACKEND_LZ4HC=y
432+
CONFIG_ZRAM_BACKEND_ZSTD=y
433+
CONFIG_ZRAM_BACKEND_DEFLATE=y
434+
CONFIG_ZRAM_BACKEND_842=y
435+
CONFIG_ZRAM_BACKEND_LZO=y
416436
CONFIG_ZRAM_DEF_COMP_ZSTD=y
437+
CONFIG_ZRAM_WRITEBACK=y
438+
CONFIG_ZRAM_MEMORY_TRACKING=y
439+
CONFIG_ZRAM_MULTI_COMP=y
417440
CONFIG_BLK_DEV_LOOP=y
418441
CONFIG_BLK_DEV_DRBD=m
419442
CONFIG_BLK_DEV_NBD=m
@@ -433,6 +456,9 @@ CONFIG_NVME_TARGET_RDMA=m
433456
CONFIG_NVME_TARGET_FC=m
434457
CONFIG_NVME_TARGET_TCP=m
435458
CONFIG_EEPROM_AT24=m
459+
CONFIG_PVPANIC=y
460+
CONFIG_PVPANIC_MMIO=m
461+
CONFIG_PVPANIC_PCI=m
436462
CONFIG_BLK_DEV_SD=y
437463
CONFIG_BLK_DEV_SR=y
438464
CONFIG_CHR_DEV_SG=y
@@ -470,12 +496,10 @@ CONFIG_PATA_ATIIXP=y
470496
CONFIG_PATA_PCMCIA=m
471497
CONFIG_MD=y
472498
CONFIG_BLK_DEV_MD=m
473-
CONFIG_MD_LINEAR=m
474499
CONFIG_MD_RAID0=m
475500
CONFIG_MD_RAID1=m
476501
CONFIG_MD_RAID10=m
477502
CONFIG_MD_RAID456=m
478-
CONFIG_MD_MULTIPATH=m
479503
CONFIG_BCACHE=m
480504
CONFIG_BLK_DEV_DM=y
481505
CONFIG_DM_CRYPT=m
@@ -489,6 +513,16 @@ CONFIG_DM_ZERO=m
489513
CONFIG_DM_MULTIPATH=m
490514
CONFIG_DM_MULTIPATH_QL=m
491515
CONFIG_DM_MULTIPATH_ST=m
516+
CONFIG_DM_MULTIPATH_HST=m
517+
CONFIG_DM_MULTIPATH_IOA=m
518+
CONFIG_DM_INIT=y
519+
CONFIG_DM_UEVENT=y
520+
CONFIG_DM_VERITY=m
521+
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
522+
CONFIG_DM_VERITY_FEC=y
523+
CONFIG_DM_INTEGRITY=m
524+
CONFIG_DM_ZONED=m
525+
CONFIG_DM_VDO=m
492526
CONFIG_TARGET_CORE=m
493527
CONFIG_TCM_IBLOCK=m
494528
CONFIG_TCM_FILEIO=m
@@ -500,6 +534,13 @@ CONFIG_NETDEVICES=y
500534
CONFIG_BONDING=m
501535
CONFIG_DUMMY=y
502536
CONFIG_WIREGUARD=m
537+
CONFIG_IFB=m
538+
CONFIG_NET_TEAM=m
539+
CONFIG_NET_TEAM_MODE_BROADCAST=m
540+
CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
541+
CONFIG_NET_TEAM_MODE_RANDOM=m
542+
CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
543+
CONFIG_NET_TEAM_MODE_LOADBALANCE=m
503544
CONFIG_MACVLAN=m
504545
CONFIG_MACVTAP=m
505546
CONFIG_IPVLAN=m
@@ -580,12 +621,14 @@ CONFIG_PPP_ASYNC=m
580621
CONFIG_PPP_SYNC_TTY=m
581622
CONFIG_USB_RTL8150=m
582623
CONFIG_USB_RTL8152=m
624+
CONFIG_USB_USBNET=m
583625
# CONFIG_USB_NET_AX8817X is not set
584626
# CONFIG_USB_NET_AX88179_178A is not set
585627
CONFIG_USB_NET_CDC_EEM=m
586628
CONFIG_USB_NET_HUAWEI_CDC_NCM=m
587629
CONFIG_USB_NET_CDC_MBIM=m
588630
# CONFIG_USB_NET_NET1080 is not set
631+
CONFIG_USB_NET_RNDIS_HOST=m
589632
# CONFIG_USB_BELKIN is not set
590633
# CONFIG_USB_ARMLINUX is not set
591634
# CONFIG_USB_NET_ZAURUS is not set
@@ -594,10 +637,11 @@ CONFIG_ATH9K_HTC=m
594637
CONFIG_IWLWIFI=m
595638
CONFIG_IWLDVM=m
596639
CONFIG_IWLMVM=m
597-
CONFIG_HOSTAP=m
598640
CONFIG_MT7601U=m
599641
CONFIG_RT2X00=m
600642
CONFIG_RT2800USB=m
643+
CONFIG_RTL8180=m
644+
CONFIG_RTL8187=m
601645
CONFIG_RTL8192CE=m
602646
CONFIG_RTL8192SE=m
603647
CONFIG_RTL8192DE=m
@@ -607,18 +651,26 @@ CONFIG_RTL8188EE=m
607651
CONFIG_RTL8192EE=m
608652
CONFIG_RTL8821AE=m
609653
CONFIG_RTL8192CU=m
654+
CONFIG_RTL8192DU=m
610655
# CONFIG_RTLWIFI_DEBUG is not set
611656
CONFIG_RTL8XXXU=m
612657
CONFIG_RTW88=m
613658
CONFIG_RTW88_8822BE=m
659+
CONFIG_RTW88_8822BU=m
614660
CONFIG_RTW88_8822CE=m
661+
CONFIG_RTW88_8822CU=m
615662
CONFIG_RTW88_8723DE=m
663+
CONFIG_RTW88_8723DU=m
616664
CONFIG_RTW88_8821CE=m
665+
CONFIG_RTW88_8821CU=m
617666
CONFIG_RTW89=m
667+
CONFIG_RTW89_8851BE=m
618668
CONFIG_RTW89_8852AE=m
669+
CONFIG_RTW89_8852BE=m
670+
CONFIG_RTW89_8852BTE=m
619671
CONFIG_RTW89_8852CE=m
672+
CONFIG_RTW89_8922AE=m
620673
CONFIG_ZD1211RW=m
621-
CONFIG_USB_NET_RNDIS_WLAN=m
622674
CONFIG_USB4_NET=m
623675
CONFIG_INPUT_MOUSEDEV=y
624676
CONFIG_INPUT_MOUSEDEV_PSAUX=y
@@ -651,6 +703,9 @@ CONFIG_HW_RANDOM=y
651703
CONFIG_HW_RANDOM_VIRTIO=m
652704
CONFIG_I2C_CHARDEV=y
653705
CONFIG_I2C_PIIX4=y
706+
CONFIG_I2C_DESIGNWARE_CORE=y
707+
CONFIG_I2C_DESIGNWARE_SLAVE=y
708+
CONFIG_I2C_DESIGNWARE_PCI=y
654709
CONFIG_I2C_GPIO=y
655710
CONFIG_I2C_LS2X=y
656711
CONFIG_SPI=y
@@ -727,11 +782,22 @@ CONFIG_SND_HDA_CODEC_CONEXANT=y
727782
CONFIG_SND_USB_AUDIO=m
728783
CONFIG_SND_SOC=m
729784
CONFIG_SND_SOC_LOONGSON_CARD=m
785+
CONFIG_SND_SOC_ES7134=m
786+
CONFIG_SND_SOC_ES7241=m
787+
CONFIG_SND_SOC_ES8311=m
788+
CONFIG_SND_SOC_ES8316=m
789+
CONFIG_SND_SOC_ES8323=m
790+
CONFIG_SND_SOC_ES8326=m
791+
CONFIG_SND_SOC_ES8328_I2C=m
792+
CONFIG_SND_SOC_ES8328_SPI=m
793+
CONFIG_SND_SOC_UDA1334=m
794+
CONFIG_SND_SOC_UDA1342=m
730795
CONFIG_SND_VIRTIO=m
731796
CONFIG_HIDRAW=y
732797
CONFIG_UHID=m
733798
CONFIG_HID_A4TECH=m
734799
CONFIG_HID_CHERRY=m
800+
CONFIG_HID_ELAN=m
735801
CONFIG_HID_LOGITECH=m
736802
CONFIG_HID_LOGITECH_DJ=m
737803
CONFIG_LOGITECH_FF=y
@@ -740,7 +806,11 @@ CONFIG_LOGIG940_FF=y
740806
CONFIG_HID_MICROSOFT=m
741807
CONFIG_HID_MULTITOUCH=m
742808
CONFIG_HID_SUNPLUS=m
809+
CONFIG_HID_WACOM=m
743810
CONFIG_USB_HIDDEV=y
811+
CONFIG_I2C_HID_ACPI=m
812+
CONFIG_I2C_HID_OF=m
813+
CONFIG_I2C_HID_OF_ELAN=m
744814
CONFIG_USB=y
745815
CONFIG_USB_OTG=y
746816
CONFIG_USB_MON=y
@@ -852,6 +922,9 @@ CONFIG_F2FS_FS=m
852922
CONFIG_F2FS_FS_SECURITY=y
853923
CONFIG_F2FS_CHECK_FS=y
854924
CONFIG_F2FS_FS_COMPRESSION=y
925+
CONFIG_FS_ENCRYPTION=y
926+
CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
927+
CONFIG_FS_VERITY=y
855928
CONFIG_FANOTIFY=y
856929
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
857930
CONFIG_QUOTA=y
@@ -904,16 +977,14 @@ CONFIG_SQUASHFS_ZSTD=y
904977
CONFIG_MINIX_FS=m
905978
CONFIG_ROMFS_FS=m
906979
CONFIG_PSTORE=m
907-
CONFIG_PSTORE_LZO_COMPRESS=m
908-
CONFIG_PSTORE_LZ4_COMPRESS=m
909-
CONFIG_PSTORE_LZ4HC_COMPRESS=m
910-
CONFIG_PSTORE_842_COMPRESS=y
911-
CONFIG_PSTORE_ZSTD_COMPRESS=y
912-
CONFIG_PSTORE_ZSTD_COMPRESS_DEFAULT=y
980+
CONFIG_PSTORE_COMPRESS=y
913981
CONFIG_SYSV_FS=m
914982
CONFIG_UFS_FS=m
915983
CONFIG_EROFS_FS=m
916984
CONFIG_EROFS_FS_ZIP_LZMA=y
985+
CONFIG_EROFS_FS_ZIP_DEFLATE=y
986+
CONFIG_EROFS_FS_ZIP_ZSTD=y
987+
CONFIG_EROFS_FS_ONDEMAND=y
917988
CONFIG_EROFS_FS_PCPU_KTHREAD=y
918989
CONFIG_NFS_FS=y
919990
CONFIG_NFS_V3_ACL=y

arch/loongarch/include/asm/thread_info.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ register unsigned long current_stack_pointer __asm__("$sp");
6666
* - pending work-to-be-done flags are in LSW
6767
* - other flags in MSW
6868
*/
69-
#define TIF_SIGPENDING 1 /* signal pending */
70-
#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
69+
#define TIF_NEED_RESCHED 0 /* rescheduling necessary */
70+
#define TIF_NEED_RESCHED_LAZY 1 /* lazy rescheduling necessary */
71+
#define TIF_SIGPENDING 2 /* signal pending */
7172
#define TIF_NOTIFY_RESUME 3 /* callback before returning to user */
7273
#define TIF_NOTIFY_SIGNAL 4 /* signal notifications exist */
7374
#define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */
@@ -88,8 +89,9 @@ register unsigned long current_stack_pointer __asm__("$sp");
8889
#define TIF_LBT_CTX_LIVE 20 /* LBT context must be preserved */
8990
#define TIF_PATCH_PENDING 21 /* pending live patching update */
9091

91-
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
9292
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
93+
#define _TIF_NEED_RESCHED_LAZY (1<<TIF_NEED_RESCHED_LAZY)
94+
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
9395
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
9496
#define _TIF_NOTIFY_SIGNAL (1<<TIF_NOTIFY_SIGNAL)
9597
#define _TIF_NOHZ (1<<TIF_NOHZ)

arch/loongarch/kernel/time.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,11 @@ void sync_counter(void)
127127
int constant_clockevent_init(void)
128128
{
129129
unsigned int cpu = smp_processor_id();
130-
unsigned long min_delta = 0x600;
130+
#ifdef CONFIG_PREEMPT_RT
131+
unsigned long min_delta = 100;
132+
#else
133+
unsigned long min_delta = 1000;
134+
#endif
131135
unsigned long max_delta = (1UL << 48) - 1;
132136
struct clock_event_device *cd;
133137
static int irq = 0, timer_irq_installed = 0;

0 commit comments

Comments
 (0)