Skip to content

Commit 37b812b

Browse files
committed
Merge tag 'drm-misc-next-2026-01-15' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for 6.20: Core Changes: - atomic: Introduce Gamma/Degamma LUT size check - gem: Fix a leak in drm_gem_get_unmapped_area - gpuvm: API sanitation for Rust bindings - panic: Few corner-cases fixes Driver Changes: - Replace system workqueue with percpu equivalent - amdxdna: Update message buffer allocation requirements, Update firmware version check - imagination: Add AM62P support - ivpu: Implement warm boot flow - rockchip: Get rid of atomic_check fixups, Add Rockchip RK3506 Support - rocket: Cleanups - bridge: - dw-hdmi-qp: Add support for HPD-less setups - panel: - mantix: Various power management related improvements - new panels: Innolux G150XGE-L05, - dma-buf: - cma: Call clear_page instead of memset Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maxime Ripard <mripard@redhat.com> Link: https://patch.msgid.link/20260115-lilac-dragon-of-opposition-ac0a30@houat
2 parents 83dc0ba + b361784 commit 37b812b

65 files changed

Lines changed: 870 additions & 370 deletions

Some content is hidden

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

Documentation/devicetree/bindings/display/panel/panel-simple.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ properties:
178178
- innolux,g121x1-l03
179179
# Innolux Corporation 12.1" G121XCE-L01 XGA (1024x768) TFT LCD panel
180180
- innolux,g121xce-l01
181+
# InnoLux 15.0" G150XGE-L05 XGA (1024x768) TFT LCD panel
182+
- innolux,g150xge-l05
181183
# InnoLux 15.6" FHD (1920x1080) TFT LCD panel
182184
- innolux,g156hce-l01
183185
# InnoLux 13.3" FHD (1920x1080) TFT LCD panel
@@ -349,7 +351,9 @@ if:
349351
properties:
350352
compatible:
351353
contains:
352-
const: innolux,g101ice-l01
354+
enum:
355+
- innolux,g101ice-l01
356+
- yes-optoelectronics,ytc700tlag-05-201c
353357
then:
354358
properties:
355359
data-mapping: false

Documentation/devicetree/bindings/display/rockchip/rockchip,dw-mipi-dsi.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ properties:
1919
- rockchip,rk3288-mipi-dsi
2020
- rockchip,rk3368-mipi-dsi
2121
- rockchip,rk3399-mipi-dsi
22+
- rockchip,rk3506-mipi-dsi
2223
- rockchip,rk3568-mipi-dsi
2324
- rockchip,rv1126-mipi-dsi
2425
- const: snps,dw-mipi-dsi
@@ -75,6 +76,7 @@ allOf:
7576
- rockchip,px30-mipi-dsi
7677
- rockchip,rk3128-mipi-dsi
7778
- rockchip,rk3368-mipi-dsi
79+
- rockchip,rk3506-mipi-dsi
7880
- rockchip,rk3568-mipi-dsi
7981
- rockchip,rv1126-mipi-dsi
8082

Documentation/devicetree/bindings/display/rockchip/rockchip,rk3588-dw-hdmi-qp.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ properties:
6969
- const: main
7070
- const: hpd
7171

72+
no-hpd:
73+
type: boolean
74+
description:
75+
The HPD pin is not present or used for another purpose, and the EDID
76+
must be polled instead to determine if a device is attached.
77+
7278
phys:
7379
maxItems: 1
7480
description: The HDMI/eDP PHY

Documentation/devicetree/bindings/display/rockchip/rockchip-vop.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ properties:
3131
- rockchip,rk3368-vop
3232
- rockchip,rk3399-vop-big
3333
- rockchip,rk3399-vop-lit
34+
- rockchip,rk3506-vop
3435
- rockchip,rv1126-vop
3536

3637
reg:

Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ properties:
5151
- stacks
5252
- const: stacks
5353

54+
nvmem-cells:
55+
items:
56+
- description: bitmask of functional shader cores
57+
58+
nvmem-cell-names:
59+
items:
60+
- const: shader-present
61+
5462
mali-supply: true
5563

5664
operating-points-v2: true
@@ -108,6 +116,8 @@ allOf:
108116
properties:
109117
clocks:
110118
minItems: 3
119+
nvmem-cells: false
120+
nvmem-cell-names: false
111121
power-domains:
112122
maxItems: 1
113123
power-domain-names: false
@@ -133,6 +143,8 @@ allOf:
133143
- const: core
134144
- const: stacks
135145
required:
146+
- nvmem-cells
147+
- nvmem-cell-names
136148
- power-domains
137149

138150
examples:
@@ -179,6 +191,8 @@ examples:
179191
<GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH 0>,
180192
<GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH 0>;
181193
interrupt-names = "job", "mmu", "gpu";
194+
nvmem-cells = <&shader_present>;
195+
nvmem-cell-names = "shader-present";
182196
power-domains = <&gpufreq>;
183197
};
184198

Documentation/devicetree/bindings/gpu/img,powervr-rogue.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ properties:
4040
- const: img,img-rogue
4141
- items:
4242
- enum:
43+
- ti,am62p-gpu
4344
- ti,j721s2-gpu
4445
- const: img,img-bxs-4-64
4546
- const: img,img-rogue
@@ -100,6 +101,7 @@ allOf:
100101
contains:
101102
enum:
102103
- ti,am62-gpu
104+
- ti,am62p-gpu
103105
- ti,j721s2-gpu
104106
then:
105107
properties:

MAINTAINERS

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8780,6 +8780,17 @@ T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
87808780
F: drivers/gpu/drm/ttm/
87818781
F: include/drm/ttm/
87828782

8783+
DRM BUDDY ALLOCATOR
8784+
M: Matthew Auld <matthew.auld@intel.com>
8785+
M: Arun Pravin <arunpravin.paneerselvam@amd.com>
8786+
R: Christian Koenig <christian.koenig@amd.com>
8787+
L: dri-devel@lists.freedesktop.org
8788+
S: Maintained
8789+
T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
8790+
F: drivers/gpu/drm/drm_buddy.c
8791+
F: drivers/gpu/drm/tests/drm_buddy_test.c
8792+
F: include/drm/drm_buddy.h
8793+
87838794
DRM AUTOMATED TESTING
87848795
M: Helen Koike <helen.fornazier@gmail.com>
87858796
M: Vignesh Raman <vignesh.raman@collabora.com>

drivers/accel/amdxdna/aie2_error.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,7 @@ void aie2_error_async_events_free(struct amdxdna_dev_hdl *ndev)
338338
destroy_workqueue(events->wq);
339339
mutex_lock(&xdna->dev_lock);
340340

341-
dma_free_noncoherent(xdna->ddev.dev, events->size, events->buf,
342-
events->addr, DMA_FROM_DEVICE);
341+
aie2_free_msg_buffer(ndev, events->size, events->buf, events->addr);
343342
kfree(events);
344343
}
345344

@@ -355,8 +354,8 @@ int aie2_error_async_events_alloc(struct amdxdna_dev_hdl *ndev)
355354
if (!events)
356355
return -ENOMEM;
357356

358-
events->buf = dma_alloc_noncoherent(xdna->ddev.dev, total_size, &events->addr,
359-
DMA_FROM_DEVICE, GFP_KERNEL);
357+
events->buf = aie2_alloc_msg_buffer(ndev, &total_size, &events->addr);
358+
360359
if (!events->buf) {
361360
ret = -ENOMEM;
362361
goto free_events;
@@ -396,8 +395,7 @@ int aie2_error_async_events_alloc(struct amdxdna_dev_hdl *ndev)
396395
free_wq:
397396
destroy_workqueue(events->wq);
398397
free_buf:
399-
dma_free_noncoherent(xdna->ddev.dev, events->size, events->buf,
400-
events->addr, DMA_FROM_DEVICE);
398+
aie2_free_msg_buffer(ndev, events->size, events->buf, events->addr);
401399
free_events:
402400
kfree(events);
403401
return ret;

drivers/accel/amdxdna/aie2_message.c

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,22 @@ static int aie2_send_mgmt_msg_wait(struct amdxdna_dev_hdl *ndev,
5555
return ret;
5656
}
5757

58+
void *aie2_alloc_msg_buffer(struct amdxdna_dev_hdl *ndev, u32 *size,
59+
dma_addr_t *dma_addr)
60+
{
61+
struct amdxdna_dev *xdna = ndev->xdna;
62+
int order;
63+
64+
*size = max(*size, SZ_8K);
65+
order = get_order(*size);
66+
if (order > MAX_PAGE_ORDER)
67+
return NULL;
68+
*size = PAGE_SIZE << order;
69+
70+
return dma_alloc_noncoherent(xdna->ddev.dev, *size, dma_addr,
71+
DMA_FROM_DEVICE, GFP_KERNEL);
72+
}
73+
5874
int aie2_suspend_fw(struct amdxdna_dev_hdl *ndev)
5975
{
6076
DECLARE_AIE2_MSG(suspend, MSG_OP_SUSPEND);
@@ -346,14 +362,13 @@ int aie2_query_status(struct amdxdna_dev_hdl *ndev, char __user *buf,
346362
{
347363
DECLARE_AIE2_MSG(aie_column_info, MSG_OP_QUERY_COL_STATUS);
348364
struct amdxdna_dev *xdna = ndev->xdna;
365+
u32 buf_sz = size, aie_bitmap = 0;
349366
struct amdxdna_client *client;
350367
dma_addr_t dma_addr;
351-
u32 aie_bitmap = 0;
352368
u8 *buff_addr;
353369
int ret;
354370

355-
buff_addr = dma_alloc_noncoherent(xdna->ddev.dev, size, &dma_addr,
356-
DMA_FROM_DEVICE, GFP_KERNEL);
371+
buff_addr = aie2_alloc_msg_buffer(ndev, &buf_sz, &dma_addr);
357372
if (!buff_addr)
358373
return -ENOMEM;
359374

@@ -363,7 +378,7 @@ int aie2_query_status(struct amdxdna_dev_hdl *ndev, char __user *buf,
363378

364379
*cols_filled = 0;
365380
req.dump_buff_addr = dma_addr;
366-
req.dump_buff_size = size;
381+
req.dump_buff_size = buf_sz;
367382
req.num_cols = hweight32(aie_bitmap);
368383
req.aie_bitmap = aie_bitmap;
369384

@@ -391,7 +406,7 @@ int aie2_query_status(struct amdxdna_dev_hdl *ndev, char __user *buf,
391406
*cols_filled = aie_bitmap;
392407

393408
fail:
394-
dma_free_noncoherent(xdna->ddev.dev, size, buff_addr, dma_addr, DMA_FROM_DEVICE);
409+
aie2_free_msg_buffer(ndev, buf_sz, buff_addr, dma_addr);
395410
return ret;
396411
}
397412

@@ -402,19 +417,19 @@ int aie2_query_telemetry(struct amdxdna_dev_hdl *ndev,
402417
DECLARE_AIE2_MSG(get_telemetry, MSG_OP_GET_TELEMETRY);
403418
struct amdxdna_dev *xdna = ndev->xdna;
404419
dma_addr_t dma_addr;
420+
u32 buf_sz = size;
405421
u8 *addr;
406422
int ret;
407423

408424
if (header->type >= MAX_TELEMETRY_TYPE)
409425
return -EINVAL;
410426

411-
addr = dma_alloc_noncoherent(xdna->ddev.dev, size, &dma_addr,
412-
DMA_FROM_DEVICE, GFP_KERNEL);
427+
addr = aie2_alloc_msg_buffer(ndev, &buf_sz, &dma_addr);
413428
if (!addr)
414429
return -ENOMEM;
415430

416431
req.buf_addr = dma_addr;
417-
req.buf_size = size;
432+
req.buf_size = buf_sz;
418433
req.type = header->type;
419434

420435
drm_clflush_virt_range(addr, size); /* device can access */
@@ -440,7 +455,7 @@ int aie2_query_telemetry(struct amdxdna_dev_hdl *ndev,
440455
header->minor = resp.minor;
441456

442457
free_buf:
443-
dma_free_noncoherent(xdna->ddev.dev, size, addr, dma_addr, DMA_FROM_DEVICE);
458+
aie2_free_msg_buffer(ndev, buf_sz, addr, dma_addr);
444459
return ret;
445460
}
446461

drivers/accel/amdxdna/aie2_pci.c

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -57,41 +57,23 @@ struct mgmt_mbox_chann_info {
5757
static int aie2_check_protocol(struct amdxdna_dev_hdl *ndev, u32 fw_major, u32 fw_minor)
5858
{
5959
const struct aie2_fw_feature_tbl *feature;
60-
struct amdxdna_dev *xdna = ndev->xdna;
61-
62-
/*
63-
* The driver supported mailbox behavior is defined by
64-
* ndev->priv->protocol_major and protocol_minor.
65-
*
66-
* When protocol_major and fw_major are different, it means driver
67-
* and firmware are incompatible.
68-
*/
69-
if (ndev->priv->protocol_major != fw_major) {
70-
XDNA_ERR(xdna, "Incompatible firmware protocol major %d minor %d",
71-
fw_major, fw_minor);
72-
return -EINVAL;
73-
}
60+
bool found = false;
7461

75-
/*
76-
* When protocol_minor is greater then fw_minor, that means driver
77-
* relies on operation the installed firmware does not support.
78-
*/
79-
if (ndev->priv->protocol_minor > fw_minor) {
80-
XDNA_ERR(xdna, "Firmware minor version smaller than supported");
81-
return -EINVAL;
82-
}
83-
84-
for (feature = ndev->priv->fw_feature_tbl; feature && feature->min_minor;
85-
feature++) {
62+
for (feature = ndev->priv->fw_feature_tbl; feature->major; feature++) {
63+
if (feature->major != fw_major)
64+
continue;
8665
if (fw_minor < feature->min_minor)
8766
continue;
8867
if (feature->max_minor > 0 && fw_minor > feature->max_minor)
8968
continue;
9069

91-
set_bit(feature->feature, &ndev->feature_mask);
70+
ndev->feature_mask |= feature->features;
71+
72+
/* firmware version matches one of the driver support entry */
73+
found = true;
9274
}
9375

94-
return 0;
76+
return found ? 0 : -EOPNOTSUPP;
9577
}
9678

9779
static void aie2_dump_chann_info_debug(struct amdxdna_dev_hdl *ndev)

0 commit comments

Comments
 (0)