Skip to content

Commit 3be7bf3

Browse files
committed
Merge tag 'v6.18.13' into 6.18-main
This is the 6.18.13 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmmXLNwACgkQONu9yGCS # aT53CA//TXciG3O+ypEEpzayoqStphlX2JmKfJtk5W+k+wLyWUxgOzBOai4iJyw+ # P+WiD0Bnf4ZmT6pFpG9nUzGJrkTFD/OoA/IB95EEG/jVlAUf+zAtfKGgQFFtnZvH # 53s3eJWgOgcz6ssS/UMZQEaL2G4Uc10VZ54L7A2zBVVb2NcHu6U3HBvPVMM/vVNW # UE61ScnnrOeXCmeP74tERNC4rqH8TGtRGM6YeKCutlif0t3AO9vFb6iR5Au2dC7s # yMMpwKxGvCBdT7AxlmaDu/tt4hKIa2wko9CbgKWCKgOhAP32e5QbItn8dxuQHHXN # clNmyaRClGkEnas7+KSZI1X1hJw+LlSRJWoUu7xwo4q/7Tcs94BoVahMbeoIMtqM # 4uszXOnV3Ct4h5NDcJdjmV6PUQ5xqEdu/7hB50uK2sbBrqdDABjZGR0/0TvKPQvh # B8ktt3pyb8MS4KxSfWIhQAJPEKZcAIDCn11Kw9b/M2jIWtiiyJ0YxzE6NZSnixG8 # LiCEl67gT4hxCcSzzH+DTYt+RpGnpWg+Pwt5tD/kyhySxx+Us+v9d73gvFYCPAH3 # k1/ugy361mplaxhDhiZRUUYSQ2D7+LbZDVzqLM379vzVZvcyR8frsOvfu6CWRFd2 # kQCdu/nx1NhlXVqseDTR9DXROkJjyLcv0dURfQkSuBAdPEDy6KI= # =29A2 # -----END PGP SIGNATURE----- # gpg: Signature made Thu Feb 19 16:31:40 2026 CET # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents 37c93a8 + 25e0b1c commit 3be7bf3

54 files changed

Lines changed: 877 additions & 359 deletions

File tree

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 = 6
33
PATCHLEVEL = 18
4-
SUBLEVEL = 12
4+
SUBLEVEL = 13
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

arch/arm64/boot/dts/mediatek/mt8183.dtsi

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1812,15 +1812,23 @@
18121812
#size-cells = <0>;
18131813

18141814
port@0 {
1815+
#address-cells = <1>;
1816+
#size-cells = <0>;
18151817
reg = <0>;
1816-
ovl_2l1_in: endpoint {
1818+
1819+
ovl_2l1_in: endpoint@1 {
1820+
reg = <1>;
18171821
remote-endpoint = <&mmsys_ep_ext>;
18181822
};
18191823
};
18201824

18211825
port@1 {
1826+
#address-cells = <1>;
1827+
#size-cells = <0>;
18221828
reg = <1>;
1823-
ovl_2l1_out: endpoint {
1829+
1830+
ovl_2l1_out: endpoint@1 {
1831+
reg = <1>;
18241832
remote-endpoint = <&rdma1_in>;
18251833
};
18261834
};
@@ -1872,15 +1880,23 @@
18721880
#size-cells = <0>;
18731881

18741882
port@0 {
1883+
#address-cells = <1>;
1884+
#size-cells = <0>;
18751885
reg = <0>;
1876-
rdma1_in: endpoint {
1886+
1887+
rdma1_in: endpoint@1 {
1888+
reg = <1>;
18771889
remote-endpoint = <&ovl_2l1_out>;
18781890
};
18791891
};
18801892

18811893
port@1 {
1894+
#address-cells = <1>;
1895+
#size-cells = <0>;
18821896
reg = <1>;
1883-
rdma1_out: endpoint {
1897+
1898+
rdma1_out: endpoint@1 {
1899+
reg = <1>;
18841900
remote-endpoint = <&dpi_in>;
18851901
};
18861902
};
@@ -2076,15 +2092,24 @@
20762092
#size-cells = <0>;
20772093

20782094
port@0 {
2095+
#address-cells = <1>;
2096+
#size-cells = <0>;
20792097
reg = <0>;
2080-
dpi_in: endpoint {
2098+
2099+
dpi_in: endpoint@1 {
2100+
reg = <1>;
20812101
remote-endpoint = <&rdma1_out>;
20822102
};
20832103
};
20842104

20852105
port@1 {
2106+
#address-cells = <1>;
2107+
#size-cells = <0>;
20862108
reg = <1>;
2087-
dpi_out: endpoint { };
2109+
2110+
dpi_out: endpoint@1 {
2111+
reg = <1>;
2112+
};
20882113
};
20892114
};
20902115
};

arch/loongarch/mm/kasan_init.c

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -40,39 +40,43 @@ static pgd_t kasan_pg_dir[PTRS_PER_PGD] __initdata __aligned(PAGE_SIZE);
4040
#define __pte_none(early, pte) (early ? pte_none(pte) : \
4141
((pte_val(pte) & _PFN_MASK) == (unsigned long)__pa(kasan_early_shadow_page)))
4242

43-
void *kasan_mem_to_shadow(const void *addr)
43+
static void *mem_to_shadow(const void *addr)
4444
{
45-
if (!kasan_enabled()) {
45+
unsigned long offset = 0;
46+
unsigned long maddr = (unsigned long)addr;
47+
unsigned long xrange = (maddr >> XRANGE_SHIFT) & 0xffff;
48+
49+
if (maddr >= FIXADDR_START)
4650
return (void *)(kasan_early_shadow_page);
47-
} else {
48-
unsigned long maddr = (unsigned long)addr;
49-
unsigned long xrange = (maddr >> XRANGE_SHIFT) & 0xffff;
50-
unsigned long offset = 0;
51-
52-
if (maddr >= FIXADDR_START)
53-
return (void *)(kasan_early_shadow_page);
54-
55-
maddr &= XRANGE_SHADOW_MASK;
56-
switch (xrange) {
57-
case XKPRANGE_CC_SEG:
58-
offset = XKPRANGE_CC_SHADOW_OFFSET;
59-
break;
60-
case XKPRANGE_UC_SEG:
61-
offset = XKPRANGE_UC_SHADOW_OFFSET;
62-
break;
63-
case XKPRANGE_WC_SEG:
64-
offset = XKPRANGE_WC_SHADOW_OFFSET;
65-
break;
66-
case XKVRANGE_VC_SEG:
67-
offset = XKVRANGE_VC_SHADOW_OFFSET;
68-
break;
69-
default:
70-
WARN_ON(1);
71-
return NULL;
72-
}
7351

74-
return (void *)((maddr >> KASAN_SHADOW_SCALE_SHIFT) + offset);
52+
maddr &= XRANGE_SHADOW_MASK;
53+
switch (xrange) {
54+
case XKPRANGE_CC_SEG:
55+
offset = XKPRANGE_CC_SHADOW_OFFSET;
56+
break;
57+
case XKPRANGE_UC_SEG:
58+
offset = XKPRANGE_UC_SHADOW_OFFSET;
59+
break;
60+
case XKPRANGE_WC_SEG:
61+
offset = XKPRANGE_WC_SHADOW_OFFSET;
62+
break;
63+
case XKVRANGE_VC_SEG:
64+
offset = XKVRANGE_VC_SHADOW_OFFSET;
65+
break;
66+
default:
67+
WARN_ON(1);
68+
return NULL;
7569
}
70+
71+
return (void *)((maddr >> KASAN_SHADOW_SCALE_SHIFT) + offset);
72+
}
73+
74+
void *kasan_mem_to_shadow(const void *addr)
75+
{
76+
if (kasan_enabled())
77+
return mem_to_shadow(addr);
78+
else
79+
return (void *)(kasan_early_shadow_page);
7680
}
7781

7882
const void *kasan_shadow_to_mem(const void *shadow_addr)
@@ -293,11 +297,8 @@ void __init kasan_init(void)
293297
/* Maps everything to a single page of zeroes */
294298
kasan_pgd_populate(KASAN_SHADOW_START, KASAN_SHADOW_END, NUMA_NO_NODE, true);
295299

296-
kasan_populate_early_shadow(kasan_mem_to_shadow((void *)VMALLOC_START),
297-
kasan_mem_to_shadow((void *)KFENCE_AREA_END));
298-
299-
/* Enable KASAN here before kasan_mem_to_shadow(). */
300-
kasan_init_generic();
300+
kasan_populate_early_shadow(mem_to_shadow((void *)VMALLOC_START),
301+
mem_to_shadow((void *)KFENCE_AREA_END));
301302

302303
/* Populate the linear mapping */
303304
for_each_mem_range(i, &pa_start, &pa_end) {
@@ -307,13 +308,13 @@ void __init kasan_init(void)
307308
if (start >= end)
308309
break;
309310

310-
kasan_map_populate((unsigned long)kasan_mem_to_shadow(start),
311-
(unsigned long)kasan_mem_to_shadow(end), NUMA_NO_NODE);
311+
kasan_map_populate((unsigned long)mem_to_shadow(start),
312+
(unsigned long)mem_to_shadow(end), NUMA_NO_NODE);
312313
}
313314

314315
/* Populate modules mapping */
315-
kasan_map_populate((unsigned long)kasan_mem_to_shadow((void *)MODULES_VADDR),
316-
(unsigned long)kasan_mem_to_shadow((void *)MODULES_END), NUMA_NO_NODE);
316+
kasan_map_populate((unsigned long)mem_to_shadow((void *)MODULES_VADDR),
317+
(unsigned long)mem_to_shadow((void *)MODULES_END), NUMA_NO_NODE);
317318
/*
318319
* KAsan may reuse the contents of kasan_early_shadow_pte directly, so we
319320
* should make sure that it maps the zero page read-only.
@@ -328,4 +329,5 @@ void __init kasan_init(void)
328329

329330
/* At this point kasan is fully initialized. Enable error messages */
330331
init_task.kasan_depth = 0;
332+
kasan_init_generic();
331333
}

drivers/gpio/gpio-sprd.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
struct sprd_gpio {
3636
struct gpio_chip chip;
3737
void __iomem *base;
38-
spinlock_t lock;
38+
raw_spinlock_t lock;
3939
int irq;
4040
};
4141

@@ -54,7 +54,7 @@ static void sprd_gpio_update(struct gpio_chip *chip, unsigned int offset,
5454
unsigned long flags;
5555
u32 tmp;
5656

57-
spin_lock_irqsave(&sprd_gpio->lock, flags);
57+
raw_spin_lock_irqsave(&sprd_gpio->lock, flags);
5858
tmp = readl_relaxed(base + reg);
5959

6060
if (val)
@@ -63,7 +63,7 @@ static void sprd_gpio_update(struct gpio_chip *chip, unsigned int offset,
6363
tmp &= ~BIT(SPRD_GPIO_BIT(offset));
6464

6565
writel_relaxed(tmp, base + reg);
66-
spin_unlock_irqrestore(&sprd_gpio->lock, flags);
66+
raw_spin_unlock_irqrestore(&sprd_gpio->lock, flags);
6767
}
6868

6969
static int sprd_gpio_read(struct gpio_chip *chip, unsigned int offset, u16 reg)
@@ -236,7 +236,7 @@ static int sprd_gpio_probe(struct platform_device *pdev)
236236
if (IS_ERR(sprd_gpio->base))
237237
return PTR_ERR(sprd_gpio->base);
238238

239-
spin_lock_init(&sprd_gpio->lock);
239+
raw_spin_lock_init(&sprd_gpio->lock);
240240

241241
sprd_gpio->chip.label = dev_name(&pdev->dev);
242242
sprd_gpio->chip.ngpio = SPRD_GPIO_NR;

drivers/gpio/gpiolib-acpi-core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,6 +1359,7 @@ static int acpi_gpio_package_count(const union acpi_object *obj)
13591359
while (element < end) {
13601360
switch (element->type) {
13611361
case ACPI_TYPE_LOCAL_REFERENCE:
1362+
case ACPI_TYPE_STRING:
13621363
element += 3;
13631364
fallthrough;
13641365
case ACPI_TYPE_INTEGER:

drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,12 @@ void cm_helper_program_gamcor_xfer_func(
105105
#define NUMBER_REGIONS 32
106106
#define NUMBER_SW_SEGMENTS 16
107107

108-
bool cm3_helper_translate_curve_to_hw_format(
109-
const struct dc_transfer_func *output_tf,
110-
struct pwl_params *lut_params, bool fixpoint)
108+
#define DC_LOGGER \
109+
ctx->logger
110+
111+
bool cm3_helper_translate_curve_to_hw_format(struct dc_context *ctx,
112+
const struct dc_transfer_func *output_tf,
113+
struct pwl_params *lut_params, bool fixpoint)
111114
{
112115
struct curve_points3 *corner_points;
113116
struct pwl_result_data *rgb_resulted;
@@ -251,6 +254,10 @@ bool cm3_helper_translate_curve_to_hw_format(
251254
if (fixpoint == true) {
252255
i = 1;
253256
while (i != hw_points + 2) {
257+
uint32_t red_clamp;
258+
uint32_t green_clamp;
259+
uint32_t blue_clamp;
260+
254261
if (i >= hw_points) {
255262
if (dc_fixpt_lt(rgb_plus_1->red, rgb->red))
256263
rgb_plus_1->red = dc_fixpt_add(rgb->red,
@@ -263,9 +270,20 @@ bool cm3_helper_translate_curve_to_hw_format(
263270
rgb_minus_1->delta_blue);
264271
}
265272

266-
rgb->delta_red_reg = dc_fixpt_clamp_u0d10(rgb->delta_red);
267-
rgb->delta_green_reg = dc_fixpt_clamp_u0d10(rgb->delta_green);
268-
rgb->delta_blue_reg = dc_fixpt_clamp_u0d10(rgb->delta_blue);
273+
rgb->delta_red = dc_fixpt_sub(rgb_plus_1->red, rgb->red);
274+
rgb->delta_green = dc_fixpt_sub(rgb_plus_1->green, rgb->green);
275+
rgb->delta_blue = dc_fixpt_sub(rgb_plus_1->blue, rgb->blue);
276+
277+
red_clamp = dc_fixpt_clamp_u0d14(rgb->delta_red);
278+
green_clamp = dc_fixpt_clamp_u0d14(rgb->delta_green);
279+
blue_clamp = dc_fixpt_clamp_u0d14(rgb->delta_blue);
280+
281+
if (red_clamp >> 10 || green_clamp >> 10 || blue_clamp >> 10)
282+
DC_LOG_ERROR("Losing delta precision while programming shaper LUT.");
283+
284+
rgb->delta_red_reg = red_clamp & 0x3ff;
285+
rgb->delta_green_reg = green_clamp & 0x3ff;
286+
rgb->delta_blue_reg = blue_clamp & 0x3ff;
269287
rgb->red_reg = dc_fixpt_clamp_u0d14(rgb->red);
270288
rgb->green_reg = dc_fixpt_clamp_u0d14(rgb->green);
271289
rgb->blue_reg = dc_fixpt_clamp_u0d14(rgb->blue);

drivers/gpu/drm/amd/display/dc/dwb/dcn30/dcn30_cm_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void cm_helper_program_gamcor_xfer_func(
5959
const struct pwl_params *params,
6060
const struct dcn3_xfer_func_reg *reg);
6161

62-
bool cm3_helper_translate_curve_to_hw_format(
62+
bool cm3_helper_translate_curve_to_hw_format(struct dc_context *ctx,
6363
const struct dc_transfer_func *output_tf,
6464
struct pwl_params *lut_params, bool fixpoint);
6565

drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ bool dcn30_set_blend_lut(
238238
if (plane_state->blend_tf.type == TF_TYPE_HWPWL)
239239
blend_lut = &plane_state->blend_tf.pwl;
240240
else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) {
241-
result = cm3_helper_translate_curve_to_hw_format(
241+
result = cm3_helper_translate_curve_to_hw_format(plane_state->ctx,
242242
&plane_state->blend_tf, &dpp_base->regamma_params, false);
243243
if (!result)
244244
return result;
@@ -333,8 +333,9 @@ bool dcn30_set_input_transfer_func(struct dc *dc,
333333
if (plane_state->in_transfer_func.type == TF_TYPE_HWPWL)
334334
params = &plane_state->in_transfer_func.pwl;
335335
else if (plane_state->in_transfer_func.type == TF_TYPE_DISTRIBUTED_POINTS &&
336-
cm3_helper_translate_curve_to_hw_format(&plane_state->in_transfer_func,
337-
&dpp_base->degamma_params, false))
336+
cm3_helper_translate_curve_to_hw_format(plane_state->ctx,
337+
&plane_state->in_transfer_func,
338+
&dpp_base->degamma_params, false))
338339
params = &dpp_base->degamma_params;
339340

340341
result = dpp_base->funcs->dpp_program_gamcor_lut(dpp_base, params);
@@ -405,7 +406,7 @@ bool dcn30_set_output_transfer_func(struct dc *dc,
405406
params = &stream->out_transfer_func.pwl;
406407
else if (pipe_ctx->stream->out_transfer_func.type ==
407408
TF_TYPE_DISTRIBUTED_POINTS &&
408-
cm3_helper_translate_curve_to_hw_format(
409+
cm3_helper_translate_curve_to_hw_format(stream->ctx,
409410
&stream->out_transfer_func,
410411
&mpc->blender_params, false))
411412
params = &mpc->blender_params;

drivers/gpu/drm/amd/display/dc/hwss/dcn32/dcn32_hwseq.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -486,8 +486,9 @@ bool dcn32_set_mcm_luts(
486486
if (plane_state->blend_tf.type == TF_TYPE_HWPWL)
487487
lut_params = &plane_state->blend_tf.pwl;
488488
else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) {
489-
result = cm3_helper_translate_curve_to_hw_format(&plane_state->blend_tf,
490-
&dpp_base->regamma_params, false);
489+
result = cm3_helper_translate_curve_to_hw_format(plane_state->ctx,
490+
&plane_state->blend_tf,
491+
&dpp_base->regamma_params, false);
491492
if (!result)
492493
return result;
493494

@@ -501,9 +502,9 @@ bool dcn32_set_mcm_luts(
501502
lut_params = &plane_state->in_shaper_func.pwl;
502503
else if (plane_state->in_shaper_func.type == TF_TYPE_DISTRIBUTED_POINTS) {
503504
// TODO: dpp_base replace
504-
ASSERT(false);
505-
cm3_helper_translate_curve_to_hw_format(&plane_state->in_shaper_func,
506-
&dpp_base->shaper_params, true);
505+
cm3_helper_translate_curve_to_hw_format(plane_state->ctx,
506+
&plane_state->in_shaper_func,
507+
&dpp_base->shaper_params, true);
507508
lut_params = &dpp_base->shaper_params;
508509
}
509510

@@ -543,8 +544,9 @@ bool dcn32_set_input_transfer_func(struct dc *dc,
543544
if (plane_state->in_transfer_func.type == TF_TYPE_HWPWL)
544545
params = &plane_state->in_transfer_func.pwl;
545546
else if (plane_state->in_transfer_func.type == TF_TYPE_DISTRIBUTED_POINTS &&
546-
cm3_helper_translate_curve_to_hw_format(&plane_state->in_transfer_func,
547-
&dpp_base->degamma_params, false))
547+
cm3_helper_translate_curve_to_hw_format(plane_state->ctx,
548+
&plane_state->in_transfer_func,
549+
&dpp_base->degamma_params, false))
548550
params = &dpp_base->degamma_params;
549551

550552
dpp_base->funcs->dpp_program_gamcor_lut(dpp_base, params);
@@ -575,7 +577,7 @@ bool dcn32_set_output_transfer_func(struct dc *dc,
575577
params = &stream->out_transfer_func.pwl;
576578
else if (pipe_ctx->stream->out_transfer_func.type ==
577579
TF_TYPE_DISTRIBUTED_POINTS &&
578-
cm3_helper_translate_curve_to_hw_format(
580+
cm3_helper_translate_curve_to_hw_format(stream->ctx,
579581
&stream->out_transfer_func,
580582
&mpc->blender_params, false))
581583
params = &mpc->blender_params;

0 commit comments

Comments
 (0)