Skip to content

Commit b97e05c

Browse files
committed
Merge tag 'v6.18.7' into 6.18-main
This is the 6.18.7 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmlzS7QACgkQONu9yGCS # aT5jvBAAr1lpjkKPgWZR30nS+Ohg3R9iZ8wwVKx1mv6H9UnmceWwfsMKJilBOulO # y+5O8ju1Ds4TjoBWSNS+FVGx/WEs+B+uvoiZo5FhbLWZN8z9sB5T7KFzQVFUHUCk # py4x3VoGnkGaIfKaS5RPo2nHqmSseAER2jg43wfE0SE2+ac1POc9YfdUcsG7IrOd # 3ecLKSTxtwUANWHWJhClaNdfqdGh+mKcy48lG0ArNtv63acJVgr0ymXmSblhX7Ti # gw6f4t8PCkEXORzorWPvbLXVuAIE/LDqQnobc/gVg0WbrJI+3tanRa3F9YlYMoM4 # Darp6ysI/UxWCdTxxJ5UiBmacmfvh+s1QhIbjR+kFcnCcQqUUyyvrdS/E3ogiLsa # s2uD1lhbskJvXQBbW/a947gZowvUXehVQelPySXvavsRtiuX24V+XYeoZR7Jl+jW # 5njAit1DEfVargBYwNfgAB3mMl1U8jMrNxjk1SygVaMfEX72Du1hQTgQZpqr/c/4 # nohGO8nqUU2aHyxvza6MopGfLCiqeJNq2eSIFX1lF8NaADB+GvPoL/uvkQv4URQC # tuyHzNPsX/sTSBFiC18vn9v4LJ2MEmyyh5uFGaE35Lgw4/TPUfmkdxCCE0PO92W3 # IazNA4FzMHrNMNRAfjC/+61bafuwii3evzpo3gQvDr2Fp3sli9I= # =LEq6 # -----END PGP SIGNATURE----- # gpg: Signature made Fri Jan 23 11:21:40 2026 CET # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents cc609b2 + 5dfbc53 commit b97e05c

File tree

215 files changed

+2122
-818
lines changed

Some content is hidden

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

215 files changed

+2122
-818
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 18
4-
SUBLEVEL = 6
4+
SUBLEVEL = 7
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@
131131
reg-names = "main", "isr0";
132132

133133
interrupt-controller;
134+
#address-cells = <0>;
134135
#interrupt-cells = <2>;
135136
interrupt-parent = <&cpuintc>;
136137
interrupts = <2>;
@@ -149,6 +150,7 @@
149150
reg-names = "main", "isr0";
150151

151152
interrupt-controller;
153+
#address-cells = <0>;
152154
#interrupt-cells = <2>;
153155
interrupt-parent = <&cpuintc>;
154156
interrupts = <4>;
@@ -164,6 +166,7 @@
164166
compatible = "loongson,ls2k0500-eiointc";
165167
reg = <0x0 0x1fe11600 0x0 0xea00>;
166168
interrupt-controller;
169+
#address-cells = <0>;
167170
#interrupt-cells = <1>;
168171
interrupt-parent = <&cpuintc>;
169172
interrupts = <3>;

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

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
};
4747

4848
/* i2c of the dvi eeprom edid */
49-
i2c-gpio-0 {
49+
i2c-0 {
5050
compatible = "i2c-gpio";
5151
scl-gpios = <&gpio0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
5252
sda-gpios = <&gpio0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -57,7 +57,7 @@
5757
};
5858

5959
/* i2c of the eeprom edid */
60-
i2c-gpio-1 {
60+
i2c-1 {
6161
compatible = "i2c-gpio";
6262
scl-gpios = <&gpio0 33 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
6363
sda-gpios = <&gpio0 32 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -114,6 +114,7 @@
114114
<0x0 0x1fe01140 0x0 0x8>;
115115
reg-names = "main", "isr0", "isr1";
116116
interrupt-controller;
117+
#address-cells = <0>;
117118
#interrupt-cells = <2>;
118119
interrupt-parent = <&cpuintc>;
119120
interrupts = <2>;
@@ -131,6 +132,7 @@
131132
<0x0 0x1fe01148 0x0 0x8>;
132133
reg-names = "main", "isr0", "isr1";
133134
interrupt-controller;
135+
#address-cells = <0>;
134136
#interrupt-cells = <2>;
135137
interrupt-parent = <&cpuintc>;
136138
interrupts = <3>;
@@ -437,54 +439,47 @@
437439

438440
gmac0: ethernet@3,0 {
439441
reg = <0x1800 0x0 0x0 0x0 0x0>;
440-
interrupt-parent = <&liointc0>;
441-
interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
442-
<13 IRQ_TYPE_LEVEL_HIGH>;
442+
interrupts-extended = <&liointc0 12 IRQ_TYPE_LEVEL_HIGH>,
443+
<&liointc0 13 IRQ_TYPE_LEVEL_HIGH>;
443444
interrupt-names = "macirq", "eth_lpi";
444445
status = "disabled";
445446
};
446447

447448
gmac1: ethernet@3,1 {
448449
reg = <0x1900 0x0 0x0 0x0 0x0>;
449-
interrupt-parent = <&liointc0>;
450-
interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
451-
<15 IRQ_TYPE_LEVEL_HIGH>;
450+
interrupts-extended = <&liointc0 14 IRQ_TYPE_LEVEL_HIGH>,
451+
<&liointc0 15 IRQ_TYPE_LEVEL_HIGH>;
452452
interrupt-names = "macirq", "eth_lpi";
453453
status = "disabled";
454454
};
455455

456456
ehci0: usb@4,1 {
457457
reg = <0x2100 0x0 0x0 0x0 0x0>;
458-
interrupt-parent = <&liointc1>;
459-
interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
458+
interrupts-extended = <&liointc1 18 IRQ_TYPE_LEVEL_HIGH>;
460459
status = "disabled";
461460
};
462461

463462
ohci0: usb@4,2 {
464463
reg = <0x2200 0x0 0x0 0x0 0x0>;
465-
interrupt-parent = <&liointc1>;
466-
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
464+
interrupts-extended = <&liointc1 19 IRQ_TYPE_LEVEL_HIGH>;
467465
status = "disabled";
468466
};
469467

470468
display@6,0 {
471469
reg = <0x3000 0x0 0x0 0x0 0x0>;
472-
interrupt-parent = <&liointc0>;
473-
interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
470+
interrupts-extended = <&liointc0 28 IRQ_TYPE_LEVEL_HIGH>;
474471
status = "disabled";
475472
};
476473

477474
hda@7,0 {
478475
reg = <0x3800 0x0 0x0 0x0 0x0>;
479-
interrupt-parent = <&liointc0>;
480-
interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
476+
interrupts-extended = <&liointc0 4 IRQ_TYPE_LEVEL_HIGH>;
481477
status = "disabled";
482478
};
483479

484480
sata: sata@8,0 {
485481
reg = <0x4000 0x0 0x0 0x0 0x0>;
486-
interrupt-parent = <&liointc0>;
487-
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
482+
interrupts-extended = <&liointc0 19 IRQ_TYPE_LEVEL_HIGH>;
488483
status = "disabled";
489484
};
490485

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

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
reg = <0x0 0x1fe01400 0x0 0x64>;
127127

128128
interrupt-controller;
129+
#address-cells = <0>;
129130
#interrupt-cells = <2>;
130131
interrupt-parent = <&cpuintc>;
131132
interrupts = <2>;
@@ -140,6 +141,7 @@
140141
compatible = "loongson,ls2k2000-eiointc";
141142
reg = <0x0 0x1fe01600 0x0 0xea00>;
142143
interrupt-controller;
144+
#address-cells = <0>;
143145
#interrupt-cells = <1>;
144146
interrupt-parent = <&cpuintc>;
145147
interrupts = <3>;
@@ -149,6 +151,7 @@
149151
compatible = "loongson,pch-pic-1.0";
150152
reg = <0x0 0x10000000 0x0 0x400>;
151153
interrupt-controller;
154+
#address-cells = <0>;
152155
#interrupt-cells = <2>;
153156
loongson,pic-base-vec = <0>;
154157
interrupt-parent = <&eiointc>;
@@ -291,65 +294,57 @@
291294

292295
gmac0: ethernet@3,0 {
293296
reg = <0x1800 0x0 0x0 0x0 0x0>;
294-
interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
295-
<13 IRQ_TYPE_LEVEL_HIGH>;
297+
interrupts-extended = <&pic 12 IRQ_TYPE_LEVEL_HIGH>,
298+
<&pic 13 IRQ_TYPE_LEVEL_HIGH>;
296299
interrupt-names = "macirq", "eth_lpi";
297-
interrupt-parent = <&pic>;
298300
status = "disabled";
299301
};
300302

301303
gmac1: ethernet@3,1 {
302304
reg = <0x1900 0x0 0x0 0x0 0x0>;
303-
interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
304-
<15 IRQ_TYPE_LEVEL_HIGH>;
305+
interrupts-extended = <&pic 14 IRQ_TYPE_LEVEL_HIGH>,
306+
<&pic 15 IRQ_TYPE_LEVEL_HIGH>;
305307
interrupt-names = "macirq", "eth_lpi";
306-
interrupt-parent = <&pic>;
307308
status = "disabled";
308309
};
309310

310311
gmac2: ethernet@3,2 {
311312
reg = <0x1a00 0x0 0x0 0x0 0x0>;
312-
interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
313-
<18 IRQ_TYPE_LEVEL_HIGH>;
313+
interrupts-extended = <&pic 17 IRQ_TYPE_LEVEL_HIGH>,
314+
<&pic 18 IRQ_TYPE_LEVEL_HIGH>;
314315
interrupt-names = "macirq", "eth_lpi";
315-
interrupt-parent = <&pic>;
316316
status = "disabled";
317317
};
318318

319319
xhci0: usb@4,0 {
320320
reg = <0x2000 0x0 0x0 0x0 0x0>;
321-
interrupts = <48 IRQ_TYPE_LEVEL_HIGH>;
322-
interrupt-parent = <&pic>;
321+
interrupts-extended = <&pic 48 IRQ_TYPE_LEVEL_HIGH>;
323322
status = "disabled";
324323
};
325324

326325
xhci1: usb@19,0 {
327326
reg = <0xc800 0x0 0x0 0x0 0x0>;
328-
interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
329-
interrupt-parent = <&pic>;
327+
interrupts-extended = <&pic 22 IRQ_TYPE_LEVEL_HIGH>;
330328
status = "disabled";
331329
};
332330

333331
display@6,1 {
334332
reg = <0x3100 0x0 0x0 0x0 0x0>;
335-
interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
336-
interrupt-parent = <&pic>;
333+
interrupts-extended = <&pic 28 IRQ_TYPE_LEVEL_HIGH>;
337334
status = "disabled";
338335
};
339336

340337
i2s@7,0 {
341338
reg = <0x3800 0x0 0x0 0x0 0x0>;
342-
interrupts = <78 IRQ_TYPE_LEVEL_HIGH>,
343-
<79 IRQ_TYPE_LEVEL_HIGH>;
339+
interrupts-extended = <&pic 78 IRQ_TYPE_LEVEL_HIGH>,
340+
<&pic 79 IRQ_TYPE_LEVEL_HIGH>;
344341
interrupt-names = "tx", "rx";
345-
interrupt-parent = <&pic>;
346342
status = "disabled";
347343
};
348344

349345
sata: sata@8,0 {
350346
reg = <0x4000 0x0 0x0 0x0 0x0>;
351-
interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
352-
interrupt-parent = <&pic>;
347+
interrupts-extended = <&pic 16 IRQ_TYPE_LEVEL_HIGH>;
353348
status = "disabled";
354349
};
355350

arch/loongarch/kernel/perf_event.c

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -626,22 +626,37 @@ static const struct loongarch_perf_event *loongarch_pmu_map_cache_event(u64 conf
626626
return pev;
627627
}
628628

629+
static inline bool loongarch_pmu_event_requires_counter(const struct perf_event *event)
630+
{
631+
switch (event->attr.type) {
632+
case PERF_TYPE_HARDWARE:
633+
case PERF_TYPE_HW_CACHE:
634+
case PERF_TYPE_RAW:
635+
return true;
636+
default:
637+
return false;
638+
}
639+
}
640+
629641
static int validate_group(struct perf_event *event)
630642
{
631643
struct cpu_hw_events fake_cpuc;
632644
struct perf_event *sibling, *leader = event->group_leader;
633645

634646
memset(&fake_cpuc, 0, sizeof(fake_cpuc));
635647

636-
if (loongarch_pmu_alloc_counter(&fake_cpuc, &leader->hw) < 0)
648+
if (loongarch_pmu_event_requires_counter(leader) &&
649+
loongarch_pmu_alloc_counter(&fake_cpuc, &leader->hw) < 0)
637650
return -EINVAL;
638651

639652
for_each_sibling_event(sibling, leader) {
640-
if (loongarch_pmu_alloc_counter(&fake_cpuc, &sibling->hw) < 0)
653+
if (loongarch_pmu_event_requires_counter(sibling) &&
654+
loongarch_pmu_alloc_counter(&fake_cpuc, &sibling->hw) < 0)
641655
return -EINVAL;
642656
}
643657

644-
if (loongarch_pmu_alloc_counter(&fake_cpuc, &event->hw) < 0)
658+
if (loongarch_pmu_event_requires_counter(event) &&
659+
loongarch_pmu_alloc_counter(&fake_cpuc, &event->hw) < 0)
645660
return -EINVAL;
646661

647662
return 0;

arch/loongarch/kvm/intc/eiointc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,7 @@ static void kvm_eiointc_destroy(struct kvm_device *dev)
679679
kvm_io_bus_unregister_dev(kvm, KVM_IOCSR_BUS, &eiointc->device);
680680
kvm_io_bus_unregister_dev(kvm, KVM_IOCSR_BUS, &eiointc->device_vext);
681681
kfree(eiointc);
682+
kfree(dev);
682683
}
683684

684685
static struct kvm_device_ops kvm_eiointc_dev_ops = {

arch/loongarch/kvm/intc/ipi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@ static void kvm_ipi_destroy(struct kvm_device *dev)
459459
ipi = kvm->arch.ipi;
460460
kvm_io_bus_unregister_dev(kvm, KVM_IOCSR_BUS, &ipi->device);
461461
kfree(ipi);
462+
kfree(dev);
462463
}
463464

464465
static struct kvm_device_ops kvm_ipi_dev_ops = {

arch/loongarch/kvm/intc/pch_pic.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ static void kvm_pch_pic_destroy(struct kvm_device *dev)
475475
/* unregister pch pic device and free it's memory */
476476
kvm_io_bus_unregister_dev(kvm, KVM_MMIO_BUS, &s->device);
477477
kfree(s);
478+
kfree(dev);
478479
}
479480

480481
static struct kvm_device_ops kvm_pch_pic_dev_ops = {

arch/mips/mm/init.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,28 @@ void __init paging_init(void)
425425
static struct kcore_list kcore_kseg0;
426426
#endif
427427

428+
static inline void __init highmem_init(void)
429+
{
430+
#ifdef CONFIG_HIGHMEM
431+
unsigned long tmp;
432+
433+
/*
434+
* If CPU cannot support HIGHMEM discard the memory above highstart_pfn
435+
*/
436+
if (cpu_has_dc_aliases) {
437+
memblock_remove(PFN_PHYS(highstart_pfn), -1);
438+
return;
439+
}
440+
441+
for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) {
442+
struct page *page = pfn_to_page(tmp);
443+
444+
if (!memblock_is_memory(PFN_PHYS(tmp)))
445+
SetPageReserved(page);
446+
}
447+
#endif
448+
}
449+
428450
void __init arch_mm_preinit(void)
429451
{
430452
/*
@@ -435,6 +457,7 @@ void __init arch_mm_preinit(void)
435457

436458
maar_init();
437459
setup_zero_pages(); /* Setup zeroed pages. */
460+
highmem_init();
438461

439462
#ifdef CONFIG_64BIT
440463
if ((unsigned long) &_text > (unsigned long) CKSEG0)

arch/x86/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ config X86
279279
select HAVE_PCI
280280
select HAVE_PERF_REGS
281281
select HAVE_PERF_USER_STACK_DUMP
282+
select ASYNC_KERNEL_PGTABLE_FREE if IOMMU_SVA
282283
select MMU_GATHER_RCU_TABLE_FREE
283284
select MMU_GATHER_MERGE_VMAS
284285
select HAVE_POSIX_CPU_TIMERS_TASK_WORK

0 commit comments

Comments
 (0)