Skip to content

Commit c4b6f67

Browse files
committed
Merge tag 'v6.6.119' into 6.6-main
This is the 6.6.119 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmk0nr4ACgkQONu9yGCS # aT7dIA//VXULLAxYi1QdlwFRNk3LVq/OTpV8sVgLjX5aXLixGYUjJVo21j6DscKa # Dn7l6MG0OJh+/pwb/PD1XJSPWMDbO0XeTbJuDVDNzc0VyKKkv1YWMNwwN8srr4iH # Th6iFY4L9yujmxTLGgvF3fmWxV94znWttebjCcRy4nQ1FXWVzgTpP6PkU37TASyq # Vw+Nd+PNQgfdt0Xznuwiv/fZTbVt49DrRZs04R55cDMd+5mrpo5N2uUtWgR4H13H # qVb0vfowVjTCaeGKiJCL7e4rDMYb7ksvJ2r5DDC81gm91D8c+3+yH94ajTaw54aE # bCMG6mQp+AMCdjd9msqKhxOR6jNogmoYyy7Hda5hAq1C/jTP3u3R7z7e8ISDn/ih # 6dRrar3Lpqbz3DW7aX/2NdoJMsuxpD7S0BwrqEbJtkaaAqG0lFocHmj6lJbOsPeM # +B0XhV5EnMcaQtOGOxV07LvX0GFQdOFbq/OnBYzl9PXgtpfpBFUGGfpvHCwXBW/I # t0n2Eun41TIbn/tWlDR+t232itChao0xWcA5ud2PYBLq8EjDw5/6sehdXvnrF7V7 # hQZ3y3R4fHdnsgqP3CWbp/vkPKiTRs0kdwNMhn+BUY902HCr970ycFs/KWjpsuLO # mWPfX773ssni1CWKR2EcEKFzigJdD8XowVH+DanDImRhJPvt01g= # =vc+a # -----END PGP SIGNATURE----- # gpg: Signature made Sat Dec 6 22:23:10 2025 CET # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents d43e49d + 5fa4793 commit c4b6f67

File tree

196 files changed

+909
-28082
lines changed

Some content is hidden

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

196 files changed

+909
-28082
lines changed

MAINTAINERS

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20390,12 +20390,6 @@ S: Maintained
2039020390
W: http://wiki.laptop.org/go/DCON
2039120391
F: drivers/staging/olpc_dcon/
2039220392

20393-
STAGING - REALTEK RTL8712U DRIVERS
20394-
M: Larry Finger <[email protected]>
20395-
M: Florian Schilhabel <[email protected]>.
20396-
S: Odd Fixes
20397-
F: drivers/staging/rtl8712/
20398-
2039920393
STAGING - SEPS525 LCD CONTROLLER DRIVERS
2040020394
M: Michael Hennerich <[email protected]>
2040120395

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 = 6
4-
SUBLEVEL = 118
4+
SUBLEVEL = 119
55
EXTRAVERSION =
66
NAME = Pinguïn Aangedreven
77

arch/arm/boot/dts/nxp/imx/imx6ul.dtsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@
333333
#sound-dai-cells = <0>;
334334
compatible = "fsl,imx6ul-sai", "fsl,imx6sx-sai";
335335
reg = <0x02030000 0x4000>;
336-
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
336+
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
337337
clocks = <&clks IMX6UL_CLK_SAI3_IPG>,
338338
<&clks IMX6UL_CLK_SAI3>,
339339
<&clks IMX6UL_CLK_DUMMY>, <&clks IMX6UL_CLK_DUMMY>;

arch/mips/mm/tlb-r4k.c

Lines changed: 78 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
#include <linux/init.h>
1313
#include <linux/sched.h>
1414
#include <linux/smp.h>
15+
#include <linux/memblock.h>
1516
#include <linux/mm.h>
1617
#include <linux/hugetlb.h>
1718
#include <linux/export.h>
19+
#include <linux/sort.h>
1820

1921
#include <asm/cpu.h>
2022
#include <asm/cpu-type.h>
@@ -506,58 +508,95 @@ static int __init set_ntlb(char *str)
506508

507509
__setup("ntlb=", set_ntlb);
508510

509-
/* Initialise all TLB entries with unique values */
510-
static void r4k_tlb_uniquify(void)
511+
512+
/* Comparison function for EntryHi VPN fields. */
513+
static int r4k_vpn_cmp(const void *a, const void *b)
511514
{
512-
int entry = num_wired_entries();
515+
long v = *(unsigned long *)a - *(unsigned long *)b;
516+
int s = sizeof(long) > sizeof(int) ? sizeof(long) * 8 - 1: 0;
517+
return s ? (v != 0) | v >> s : v;
518+
}
519+
520+
/*
521+
* Initialise all TLB entries with unique values that do not clash with
522+
* what we have been handed over and what we'll be using ourselves.
523+
*/
524+
static void __ref r4k_tlb_uniquify(void)
525+
{
526+
int tlbsize = current_cpu_data.tlbsize;
527+
bool use_slab = slab_is_available();
528+
int start = num_wired_entries();
529+
phys_addr_t tlb_vpn_size;
530+
unsigned long *tlb_vpns;
531+
unsigned long vpn_mask;
532+
int cnt, ent, idx, i;
533+
534+
vpn_mask = GENMASK(cpu_vmbits - 1, 13);
535+
vpn_mask |= IS_ENABLED(CONFIG_64BIT) ? 3ULL << 62 : 1 << 31;
536+
537+
tlb_vpn_size = tlbsize * sizeof(*tlb_vpns);
538+
tlb_vpns = (use_slab ?
539+
kmalloc(tlb_vpn_size, GFP_KERNEL) :
540+
memblock_alloc_raw(tlb_vpn_size, sizeof(*tlb_vpns)));
541+
if (WARN_ON(!tlb_vpns))
542+
return; /* Pray local_flush_tlb_all() is good enough. */
513543

514544
htw_stop();
545+
546+
for (i = start, cnt = 0; i < tlbsize; i++, cnt++) {
547+
unsigned long vpn;
548+
549+
write_c0_index(i);
550+
mtc0_tlbr_hazard();
551+
tlb_read();
552+
tlb_read_hazard();
553+
vpn = read_c0_entryhi();
554+
vpn &= vpn_mask & PAGE_MASK;
555+
tlb_vpns[cnt] = vpn;
556+
557+
/* Prevent any large pages from overlapping regular ones. */
558+
write_c0_pagemask(read_c0_pagemask() & PM_DEFAULT_MASK);
559+
mtc0_tlbw_hazard();
560+
tlb_write_indexed();
561+
tlbw_use_hazard();
562+
}
563+
564+
sort(tlb_vpns, cnt, sizeof(tlb_vpns[0]), r4k_vpn_cmp, NULL);
565+
566+
write_c0_pagemask(PM_DEFAULT_MASK);
515567
write_c0_entrylo0(0);
516568
write_c0_entrylo1(0);
517569

518-
while (entry < current_cpu_data.tlbsize) {
519-
unsigned long asid_mask = cpu_asid_mask(&current_cpu_data);
520-
unsigned long asid = 0;
521-
int idx;
570+
idx = 0;
571+
ent = tlbsize;
572+
for (i = start; i < tlbsize; i++)
573+
while (1) {
574+
unsigned long entryhi, vpn;
522575

523-
/* Skip wired MMID to make ginvt_mmid work */
524-
if (cpu_has_mmid)
525-
asid = MMID_KERNEL_WIRED + 1;
576+
entryhi = UNIQUE_ENTRYHI(ent);
577+
vpn = entryhi & vpn_mask & PAGE_MASK;
526578

527-
/* Check for match before using UNIQUE_ENTRYHI */
528-
do {
529-
if (cpu_has_mmid) {
530-
write_c0_memorymapid(asid);
531-
write_c0_entryhi(UNIQUE_ENTRYHI(entry));
579+
if (idx >= cnt || vpn < tlb_vpns[idx]) {
580+
write_c0_entryhi(entryhi);
581+
write_c0_index(i);
582+
mtc0_tlbw_hazard();
583+
tlb_write_indexed();
584+
ent++;
585+
break;
586+
} else if (vpn == tlb_vpns[idx]) {
587+
ent++;
532588
} else {
533-
write_c0_entryhi(UNIQUE_ENTRYHI(entry) | asid);
589+
idx++;
534590
}
535-
mtc0_tlbw_hazard();
536-
tlb_probe();
537-
tlb_probe_hazard();
538-
idx = read_c0_index();
539-
/* No match or match is on current entry */
540-
if (idx < 0 || idx == entry)
541-
break;
542-
/*
543-
* If we hit a match, we need to try again with
544-
* a different ASID.
545-
*/
546-
asid++;
547-
} while (asid < asid_mask);
548-
549-
if (idx >= 0 && idx != entry)
550-
panic("Unable to uniquify TLB entry %d", idx);
551-
552-
write_c0_index(entry);
553-
mtc0_tlbw_hazard();
554-
tlb_write_indexed();
555-
entry++;
556-
}
591+
}
557592

558593
tlbw_use_hazard();
559594
htw_start();
560595
flush_micro_tlb();
596+
if (use_slab)
597+
kfree(tlb_vpns);
598+
else
599+
memblock_free(tlb_vpns, tlb_vpn_size);
561600
}
562601

563602
/*
@@ -600,6 +639,7 @@ static void r4k_tlb_configure(void)
600639

601640
/* From this point on the ARC firmware is dead. */
602641
r4k_tlb_uniquify();
642+
local_flush_tlb_all();
603643

604644
/* Did I tell you that ARC SUCKS? */
605645
}

arch/x86/events/core.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2769,13 +2769,13 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re
27692769
return;
27702770
}
27712771

2772-
if (perf_callchain_store(entry, regs->ip))
2773-
return;
2774-
2775-
if (perf_hw_regs(regs))
2772+
if (perf_hw_regs(regs)) {
2773+
if (perf_callchain_store(entry, regs->ip))
2774+
return;
27762775
unwind_start(&state, current, regs, NULL);
2777-
else
2776+
} else {
27782777
unwind_start(&state, current, NULL, (void *)regs->sp);
2778+
}
27792779

27802780
for (; !unwind_done(&state); unwind_next_frame(&state)) {
27812781
addr = unwind_get_return_address(&state);

drivers/atm/fore200e.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,7 +1377,9 @@ fore200e_open(struct atm_vcc *vcc)
13771377

13781378
vcc->dev_data = NULL;
13791379

1380+
mutex_lock(&fore200e->rate_mtx);
13801381
fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
1382+
mutex_unlock(&fore200e->rate_mtx);
13811383

13821384
kfree(fore200e_vcc);
13831385
return -EINVAL;

drivers/firmware/stratix10-svc.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ struct stratix10_svc_data {
134134
* @complete_status: state for completion
135135
* @svc_fifo_lock: protect access to service message data queue
136136
* @invoke_fn: function to issue secure monitor call or hypervisor call
137+
* @svc: manages the list of client svc drivers
137138
*
138139
* This struct is used to create communication channels for service clients, to
139140
* handle secure monitor or hypervisor call.
@@ -150,6 +151,7 @@ struct stratix10_svc_controller {
150151
struct completion complete_status;
151152
spinlock_t svc_fifo_lock;
152153
svc_invoke_fn *invoke_fn;
154+
struct stratix10_svc *svc;
153155
};
154156

155157
/**
@@ -1209,6 +1211,7 @@ static int stratix10_svc_drv_probe(struct platform_device *pdev)
12091211
ret = -ENOMEM;
12101212
goto err_free_kfifo;
12111213
}
1214+
controller->svc = svc;
12121215

12131216
svc->stratix10_svc_rsu = platform_device_alloc(STRATIX10_RSU, 0);
12141217
if (!svc->stratix10_svc_rsu) {
@@ -1236,8 +1239,6 @@ static int stratix10_svc_drv_probe(struct platform_device *pdev)
12361239
goto err_unregister_dev;
12371240
}
12381241

1239-
dev_set_drvdata(dev, svc);
1240-
12411242
pr_info("Intel Service Layer Driver Initialized\n");
12421243

12431244
return 0;
@@ -1253,8 +1254,8 @@ static int stratix10_svc_drv_probe(struct platform_device *pdev)
12531254

12541255
static int stratix10_svc_drv_remove(struct platform_device *pdev)
12551256
{
1256-
struct stratix10_svc *svc = dev_get_drvdata(&pdev->dev);
12571257
struct stratix10_svc_controller *ctrl = platform_get_drvdata(pdev);
1258+
struct stratix10_svc *svc = ctrl->svc;
12581259

12591260
platform_device_unregister(svc->intel_svc_fcs);
12601261
platform_device_unregister(svc->stratix10_svc_rsu);

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1941,6 +1941,8 @@ static int amdgpu_device_parse_gpu_info_fw(struct amdgpu_device *adev)
19411941
chip_name = "navi12";
19421942
break;
19431943
case CHIP_CYAN_SKILLFISH:
1944+
if (adev->mman.discovery_bin)
1945+
return 0;
19441946
chip_name = "cyan_skillfish";
19451947
break;
19461948
}

drivers/gpu/drm/amd/display/dc/core/dc_stream.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -634,9 +634,14 @@ bool dc_stream_get_scanoutpos(const struct dc_stream_state *stream,
634634
{
635635
uint8_t i;
636636
bool ret = false;
637-
struct dc *dc = stream->ctx->dc;
638-
struct resource_context *res_ctx =
639-
&dc->current_state->res_ctx;
637+
struct dc *dc;
638+
struct resource_context *res_ctx;
639+
640+
if (!stream->ctx)
641+
return false;
642+
643+
dc = stream->ctx->dc;
644+
res_ctx = &dc->current_state->res_ctx;
640645

641646
for (i = 0; i < MAX_PIPES; i++) {
642647
struct timing_generator *tg = res_ctx->pipe_ctx[i].stream_res.tg;

drivers/gpu/drm/sti/sti_vtg.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,17 @@ struct sti_vtg {
143143
struct sti_vtg *of_vtg_find(struct device_node *np)
144144
{
145145
struct platform_device *pdev;
146+
struct sti_vtg *vtg;
146147

147148
pdev = of_find_device_by_node(np);
148149
if (!pdev)
149150
return NULL;
150151

151-
return (struct sti_vtg *)platform_get_drvdata(pdev);
152+
vtg = platform_get_drvdata(pdev);
153+
154+
put_device(&pdev->dev);
155+
156+
return vtg;
152157
}
153158

154159
static void vtg_reset(struct sti_vtg *vtg)

0 commit comments

Comments
 (0)