Skip to content

Commit 3a6230c

Browse files
committed
Merge tag 'v5.15.192' into 5.15-main
This is the 5.15.192 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmjAWuoACgkQONu9yGCS # aT5ixg/9Ga0oXC7jixh6yJ/Jx6ZXeRpm8421A3SV9B44lCH4gFlxyTwudxBWgqpb # plo94cdzga2HafZS93r70CUsEXnfG9r1qYZNqSTiDka7R73ifRTREpFHmCfG2TMO # yEfY6ynmoIoURf9tJqeXIv+EU0y3D/iqK+BXZ+iIsNGAlTPUsCoB3alvYa4iMvSM # G616TPXytlvqQ1/2ZMlu7U/urFuOMujJLkNgaHZuWDhpcjERP84h133yEUwml8hU # WmZ29FKvgENC/EPVtgE9Ys9B7KBUUuiHhwsDXrASRAbI5dv8CXFxBPYDMWB9qafT # TuMQZfEf393xsbOuzuWtDdKfToVKI1/qd+NT6JlfgZ1tPy6R1zmzepvvv5F4BoZe # +wxHwO01Pc2cmCw8R+khDs5fL8K10IZeeD2At429uJVHhES2TosB5k6RpgB5mwHB # F6CBzi7DcQLo0LerIB56JZENZqgo0sa2f0Qwr9LyBt4mcHp9h/e3ZU27ZPNO7Uiu # AUXXAQSxzLLBj5rhtGc6RcFLQAI5m/jNXxyziqqvfMVuwXbneik/7WggIrnTgG8V # f83KXVDK18WiREhfuat3gDhERwWUSX24SaBQJWnzXh4aQlwuF5rUNkfBGBu2fYCK # ZPoiYrzmI14XERipmnI9yRw4pixthxWVUimsoqCHYz9oFojECr4= # =P1Ez # -----END PGP SIGNATURE----- # gpg: Signature made Tue Sep 9 18:50:50 2025 CEST # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents 0f7500a + de9476b commit 3a6230c

66 files changed

Lines changed: 594 additions & 258 deletions

Some content is hidden

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

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 = 5
33
PATCHLEVEL = 15
4-
SUBLEVEL = 191
4+
SUBLEVEL = 192
55
EXTRAVERSION =
66
NAME = Trick or Treat
77

arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828
};
2929

3030
leds {
31-
pinctrl-names = "default";
3231
compatible = "gpio-leds";
32+
pinctrl-names = "default";
33+
pinctrl-0 = <&spi_quad_pins>;
3334

3435
power1 {
3536
label = "udpu:green:power";
@@ -96,8 +97,6 @@
9697

9798
&spi0 {
9899
status = "okay";
99-
pinctrl-names = "default";
100-
pinctrl-0 = <&spi_quad_pins>;
101100

102101
m25p80@0 {
103102
compatible = "jedec,spi-nor";
@@ -117,6 +116,10 @@
117116
};
118117
};
119118

119+
&spi_quad_pins {
120+
function = "gpio";
121+
};
122+
120123
&pinctrl_nb {
121124
i2c1_recovery_pins: i2c1-recovery-pins {
122125
groups = "i2c1";

arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,7 @@
978978
reg = <0>;
979979
m25p,fast-read;
980980
spi-max-frequency = <10000000>;
981+
vcc-supply = <&vcc_3v0>;
981982
};
982983
};
983984

arch/x86/include/asm/pgtable_64_types.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ static inline bool pgtable_l5_enabled(void)
4040
#define pgtable_l5_enabled() 0
4141
#endif /* CONFIG_X86_5LEVEL */
4242

43+
#define ARCH_PAGE_TABLE_SYNC_MASK \
44+
(pgtable_l5_enabled() ? PGTBL_PGD_MODIFIED : PGTBL_P4D_MODIFIED)
45+
4346
extern unsigned int pgdir_shift;
4447
extern unsigned int ptrs_per_p4d;
4548

arch/x86/kvm/x86.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12449,16 +12449,22 @@ int kvm_arch_irq_bypass_add_producer(struct irq_bypass_consumer *cons,
1244912449
{
1245012450
struct kvm_kernel_irqfd *irqfd =
1245112451
container_of(cons, struct kvm_kernel_irqfd, consumer);
12452+
struct kvm *kvm = irqfd->kvm;
1245212453
int ret;
1245312454

12454-
irqfd->producer = prod;
1245512455
kvm_arch_start_assignment(irqfd->kvm);
12456+
12457+
spin_lock_irq(&kvm->irqfds.lock);
12458+
irqfd->producer = prod;
12459+
1245612460
ret = static_call(kvm_x86_update_pi_irte)(irqfd->kvm,
1245712461
prod->irq, irqfd->gsi, 1);
12458-
1245912462
if (ret)
1246012463
kvm_arch_end_assignment(irqfd->kvm);
1246112464

12465+
spin_unlock_irq(&kvm->irqfds.lock);
12466+
12467+
1246212468
return ret;
1246312469
}
1246412470

@@ -12468,21 +12474,27 @@ void kvm_arch_irq_bypass_del_producer(struct irq_bypass_consumer *cons,
1246812474
int ret;
1246912475
struct kvm_kernel_irqfd *irqfd =
1247012476
container_of(cons, struct kvm_kernel_irqfd, consumer);
12477+
struct kvm *kvm = irqfd->kvm;
1247112478

1247212479
WARN_ON(irqfd->producer != prod);
12473-
irqfd->producer = NULL;
1247412480

1247512481
/*
1247612482
* When producer of consumer is unregistered, we change back to
1247712483
* remapped mode, so we can re-use the current implementation
1247812484
* when the irq is masked/disabled or the consumer side (KVM
1247912485
* int this case doesn't want to receive the interrupts.
1248012486
*/
12487+
spin_lock_irq(&kvm->irqfds.lock);
12488+
irqfd->producer = NULL;
12489+
1248112490
ret = static_call(kvm_x86_update_pi_irte)(irqfd->kvm, prod->irq, irqfd->gsi, 0);
1248212491
if (ret)
1248312492
printk(KERN_INFO "irq bypass consumer (token %p) unregistration"
1248412493
" fails: %d\n", irqfd->consumer.token, ret);
1248512494

12495+
spin_unlock_irq(&kvm->irqfds.lock);
12496+
12497+
1248612498
kvm_arch_end_assignment(irqfd->kvm);
1248712499
}
1248812500

arch/x86/mm/init_64.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,24 @@ static void sync_global_pgds(unsigned long start, unsigned long end)
218218
sync_global_pgds_l4(start, end);
219219
}
220220

221+
/*
222+
* Make kernel mappings visible in all page tables in the system.
223+
* This is necessary except when the init task populates kernel mappings
224+
* during the boot process. In that case, all processes originating from
225+
* the init task copies the kernel mappings, so there is no issue.
226+
* Otherwise, missing synchronization could lead to kernel crashes due
227+
* to missing page table entries for certain kernel mappings.
228+
*
229+
* Synchronization is performed at the top level, which is the PGD in
230+
* 5-level paging systems. But in 4-level paging systems, however,
231+
* pgd_populate() is a no-op, so synchronization is done at the P4D level.
232+
* sync_global_pgds() handles this difference between paging levels.
233+
*/
234+
void arch_sync_kernel_mappings(unsigned long start, unsigned long end)
235+
{
236+
sync_global_pgds(start, end);
237+
}
238+
221239
/*
222240
* NOTE: This function is marked __ref because it calls __init function
223241
* (alloc_bootmem_pages). It's safe to do it ONLY when after_bootmem == 0.

drivers/clk/qcom/gdsc.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ static int gdsc_enable(struct generic_pm_domain *domain)
273273
*/
274274
udelay(1);
275275

276+
if (sc->flags & RETAIN_FF_ENABLE)
277+
gdsc_retain_ff_on(sc);
278+
276279
/* Turn on HW trigger mode if supported */
277280
if (sc->flags & HW_CTRL) {
278281
ret = gdsc_hwctrl(sc, true);
@@ -289,9 +292,6 @@ static int gdsc_enable(struct generic_pm_domain *domain)
289292
udelay(1);
290293
}
291294

292-
if (sc->flags & RETAIN_FF_ENABLE)
293-
gdsc_retain_ff_on(sc);
294-
295295
return 0;
296296
}
297297

@@ -392,20 +392,21 @@ static int gdsc_init(struct gdsc *sc)
392392
return ret;
393393
}
394394

395-
/* Turn on HW trigger mode if supported */
396-
if (sc->flags & HW_CTRL) {
397-
ret = gdsc_hwctrl(sc, true);
398-
if (ret < 0)
399-
return ret;
400-
}
401-
402395
/*
403396
* Make sure the retain bit is set if the GDSC is already on,
404397
* otherwise we end up turning off the GDSC and destroying all
405398
* the register contents that we thought we were saving.
406399
*/
407400
if (sc->flags & RETAIN_FF_ENABLE)
408401
gdsc_retain_ff_on(sc);
402+
403+
/* Turn on HW trigger mode if supported */
404+
if (sc->flags & HW_CTRL) {
405+
ret = gdsc_hwctrl(sc, true);
406+
if (ret < 0)
407+
return ret;
408+
}
409+
409410
} else if (sc->flags & ALWAYS_ON) {
410411
/* If ALWAYS_ON GDSCs are not ON, turn them ON */
411412
gdsc_enable(&sc->pd);

drivers/dma-buf/dma-resv.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,9 @@ void dma_resv_add_shared_fence(struct dma_resv *obj, struct dma_fence *fence)
267267

268268
replace:
269269
RCU_INIT_POINTER(fobj->shared[i], fence);
270-
/* pointer update must be visible before we extend the shared_count */
271-
smp_store_mb(fobj->shared_count, count);
270+
/* fence update must be visible before we extend the shared_count */
271+
smp_wmb();
272+
fobj->shared_count = count;
272273

273274
write_seqcount_end(&obj->seq);
274275
dma_fence_put(old);

drivers/dma/mediatek/mtk-cqdma.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -421,15 +421,11 @@ static struct virt_dma_desc *mtk_cqdma_find_active_desc(struct dma_chan *c,
421421
{
422422
struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c);
423423
struct virt_dma_desc *vd;
424-
unsigned long flags;
425424

426-
spin_lock_irqsave(&cvc->pc->lock, flags);
427425
list_for_each_entry(vd, &cvc->pc->queue, node)
428426
if (vd->tx.cookie == cookie) {
429-
spin_unlock_irqrestore(&cvc->pc->lock, flags);
430427
return vd;
431428
}
432-
spin_unlock_irqrestore(&cvc->pc->lock, flags);
433429

434430
list_for_each_entry(vd, &cvc->vc.desc_issued, node)
435431
if (vd->tx.cookie == cookie)
@@ -453,9 +449,11 @@ static enum dma_status mtk_cqdma_tx_status(struct dma_chan *c,
453449
if (ret == DMA_COMPLETE || !txstate)
454450
return ret;
455451

456-
spin_lock_irqsave(&cvc->vc.lock, flags);
452+
spin_lock_irqsave(&cvc->pc->lock, flags);
453+
spin_lock(&cvc->vc.lock);
457454
vd = mtk_cqdma_find_active_desc(c, cookie);
458-
spin_unlock_irqrestore(&cvc->vc.lock, flags);
455+
spin_unlock(&cvc->vc.lock);
456+
spin_unlock_irqrestore(&cvc->pc->lock, flags);
459457

460458
if (vd) {
461459
cvd = to_cqdma_vdesc(vd);

drivers/gpio/gpio-pca953x.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,6 +1145,9 @@ static int pca953x_suspend(struct device *dev)
11451145
struct pca953x_chip *chip = dev_get_drvdata(dev);
11461146

11471147
mutex_lock(&chip->i2c_lock);
1148+
/* Disable IRQ to prevent early triggering while regmap "cache only" is on */
1149+
if (chip->client->irq > 0)
1150+
disable_irq(chip->client->irq);
11481151
regcache_cache_only(chip->regmap, true);
11491152
mutex_unlock(&chip->i2c_lock);
11501153

@@ -1170,6 +1173,8 @@ static int pca953x_resume(struct device *dev)
11701173
}
11711174

11721175
mutex_lock(&chip->i2c_lock);
1176+
if (chip->client->irq > 0)
1177+
enable_irq(chip->client->irq);
11731178
regcache_cache_only(chip->regmap, false);
11741179
regcache_mark_dirty(chip->regmap);
11751180
ret = pca953x_regcache_sync(dev);

0 commit comments

Comments
 (0)