Skip to content

Commit 7fefa1e

Browse files
committed
Merge tag 'drm-misc-next-2024-09-20' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for v6.12: UAPI Changes: - Add panthor/DEV_QUERY_TIMESTAMP_INFO query. Cross-subsystem Changes: - Updated dt bindings. - Add documentation explaining default errnos for fences. - Mark dma-buf heaps creation functions as __init. Core Changes: - Split DSC helpers from DP helpers. - Clang build fixes for drm/mm test. - Remove simple pipeline support for gem-vram, no longer any users left after converting bochs. - Add erno to drm_sched_start to distinguish between GPU and queue reset. - Add drm_framebuffer testcases. - Fix uninitialized spinlock acquisition with CONFIG_DRM_PANIC=n. - Use read_trylock instead of read_lock in dma_fence_begin_signalling to quiesce lockdep. Driver Changes: - Assorted small fixes and updates for tegra, host1x, imagination, nouveau, panfrost, panthor, panel/ili9341, mali, exynos, panel/samsung-s6e3fa7, ast, bridge/ti-sn65dsi86, panel/himax-hx83112a, bridge/tc358767, bridge/imx8mp-hdmi-tx, panel/khadas-ts050, panel/nt36523, panel/sony-acx565akm, kmb, accel/qaic, omap, v3d. - Add bridge/TI TDP158. - Assorted documentation updates. - Convert bochs from simple drm to gem shmem, and check modes against available memory. - Many VC4 fixes, most related to scaling and YUV support. - Convert some drivers to use SYSTEM_SLEEP_PM_OPS and RUNTIME_PM_OPS. - Rockchip 4k@60 support. Signed-off-by: Dave Airlie <[email protected]> From: Maarten Lankhorst <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 8cf0b93 + 2facdd6 commit 7fefa1e

File tree

136 files changed

+2763
-2129
lines changed

Some content is hidden

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

136 files changed

+2763
-2129
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/display/bridge/ti,tdp158.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: TI TDP158 HDMI to TMDS Redriver
8+
9+
maintainers:
10+
- Arnaud Vrac <[email protected]>
11+
- Pierre-Hugues Husson <[email protected]>
12+
13+
properties:
14+
compatible:
15+
const: ti,tdp158
16+
17+
# The reg property is required if and only if the device is connected
18+
# to an I2C bus. In pin strap mode, reg must not be specified.
19+
reg:
20+
description: I2C address of the device
21+
22+
# Pin 36 = Operation Enable / Reset Pin
23+
# OE = L: Power Down Mode
24+
# OE = H: Normal Operation
25+
# Internal weak pullup - device resets on H to L transitions
26+
enable-gpios:
27+
description: GPIO controlling bridge enable
28+
29+
vcc-supply:
30+
description: Power supply 3.3V
31+
32+
vdd-supply:
33+
description: Power supply 1.1V
34+
35+
ports:
36+
$ref: /schemas/graph.yaml#/properties/ports
37+
38+
properties:
39+
port@0:
40+
$ref: /schemas/graph.yaml#/properties/port
41+
description: Bridge input
42+
43+
port@1:
44+
$ref: /schemas/graph.yaml#/properties/port
45+
description: Bridge output
46+
47+
required:
48+
- port@0
49+
- port@1
50+
51+
required:
52+
- compatible
53+
- vcc-supply
54+
- vdd-supply
55+
- ports
56+
57+
additionalProperties: false

Documentation/devicetree/bindings/display/imx/fsl-imx-drm.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ Optional properties:
119119
- interface-pix-fmt: How this display is connected to the
120120
display interface. Currently supported types: "rgb24", "rgb565", "bgr666"
121121
and "lvds666".
122-
- edid: verbatim EDID data block describing attached display.
123122
- ddc: phandle describing the i2c bus handling the display data
124123
channel
125124
- port@[0-1]: Port nodes with endpoint definitions as defined in
@@ -131,7 +130,6 @@ example:
131130

132131
disp0 {
133132
compatible = "fsl,imx-parallel-display";
134-
edid = [edid-data];
135133
interface-pix-fmt = "rgb24";
136134

137135
port@0 {

Documentation/devicetree/bindings/display/imx/ldb.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ Required properties:
6262
display-timings are used instead.
6363

6464
Optional properties (required if display-timings are used):
65-
- ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
6665
- display-timings : A node that describes the display timings as defined in
6766
Documentation/devicetree/bindings/display/panel/display-timing.txt.
6867
- fsl,data-mapping : should be "spwg" or "jeida"

Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ properties:
2626
- renesas,r9a07g054-mali
2727
- rockchip,px30-mali
2828
- rockchip,rk3568-mali
29+
- rockchip,rk3576-mali
2930
- const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
3031
- items:
3132
- enum:

Documentation/gpu/drm-uapi.rst

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,13 +305,26 @@ Kernel Mode Driver
305305
------------------
306306

307307
The KMD is responsible for checking if the device needs a reset, and to perform
308-
it as needed. Usually a hang is detected when a job gets stuck executing. KMD
309-
should keep track of resets, because userspace can query any time about the
310-
reset status for a specific context. This is needed to propagate to the rest of
311-
the stack that a reset has happened. Currently, this is implemented by each
312-
driver separately, with no common DRM interface. Ideally this should be properly
313-
integrated at DRM scheduler to provide a common ground for all drivers. After a
314-
reset, KMD should reject new command submissions for affected contexts.
308+
it as needed. Usually a hang is detected when a job gets stuck executing.
309+
310+
Propagation of errors to userspace has proven to be tricky since it goes in
311+
the opposite direction of the usual flow of commands. Because of this vendor
312+
independent error handling was added to the &dma_fence object, this way drivers
313+
can add an error code to their fences before signaling them. See function
314+
dma_fence_set_error() on how to do this and for examples of error codes to use.
315+
316+
The DRM scheduler also allows setting error codes on all pending fences when
317+
hardware submissions are restarted after an reset. Error codes are also
318+
forwarded from the hardware fence to the scheduler fence to bubble up errors
319+
to the higher levels of the stack and eventually userspace.
320+
321+
Fence errors can be queried by userspace through the generic SYNC_IOC_FILE_INFO
322+
IOCTL as well as through driver specific interfaces.
323+
324+
Additional to setting fence errors drivers should also keep track of resets per
325+
context, the DRM scheduler provides the drm_sched_entity_error() function as
326+
helper for this use case. After a reset, KMD should reject new command
327+
submissions for affected contexts.
315328

316329
User Mode Driver
317330
----------------

Documentation/gpu/todo.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,22 @@ Contact: Javier Martinez Canillas <[email protected]>
834834

835835
Level: Advanced
836836

837+
Querying errors from drm_syncobj
838+
================================
839+
840+
The drm_syncobj container can be used by driver independent code to signal
841+
complection of submission.
842+
843+
One minor feature still missing is a generic DRM IOCTL to query the error
844+
status of binary and timeline drm_syncobj.
845+
846+
This should probably be improved by implementing the necessary kernel interface
847+
and adding support for that in the userspace stack.
848+
849+
Contact: Christian König
850+
851+
Level: Starter
852+
837853
Outside DRM
838854
===========
839855

drivers/accel/qaic/qaic_debugfs.c

Lines changed: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -64,41 +64,19 @@ static int bootlog_show(struct seq_file *s, void *unused)
6464
return 0;
6565
}
6666

67-
static int bootlog_fops_open(struct inode *inode, struct file *file)
68-
{
69-
return single_open(file, bootlog_show, inode->i_private);
70-
}
71-
72-
static const struct file_operations bootlog_fops = {
73-
.owner = THIS_MODULE,
74-
.open = bootlog_fops_open,
75-
.read = seq_read,
76-
.llseek = seq_lseek,
77-
.release = single_release,
78-
};
67+
DEFINE_SHOW_ATTRIBUTE(bootlog);
7968

80-
static int read_dbc_fifo_size(struct seq_file *s, void *unused)
69+
static int fifo_size_show(struct seq_file *s, void *unused)
8170
{
8271
struct dma_bridge_chan *dbc = s->private;
8372

8473
seq_printf(s, "%u\n", dbc->nelem);
8574
return 0;
8675
}
8776

88-
static int fifo_size_open(struct inode *inode, struct file *file)
89-
{
90-
return single_open(file, read_dbc_fifo_size, inode->i_private);
91-
}
92-
93-
static const struct file_operations fifo_size_fops = {
94-
.owner = THIS_MODULE,
95-
.open = fifo_size_open,
96-
.read = seq_read,
97-
.llseek = seq_lseek,
98-
.release = single_release,
99-
};
77+
DEFINE_SHOW_ATTRIBUTE(fifo_size);
10078

101-
static int read_dbc_queued(struct seq_file *s, void *unused)
79+
static int queued_show(struct seq_file *s, void *unused)
10280
{
10381
struct dma_bridge_chan *dbc = s->private;
10482
u32 tail = 0, head = 0;
@@ -115,18 +93,7 @@ static int read_dbc_queued(struct seq_file *s, void *unused)
11593
return 0;
11694
}
11795

118-
static int queued_open(struct inode *inode, struct file *file)
119-
{
120-
return single_open(file, read_dbc_queued, inode->i_private);
121-
}
122-
123-
static const struct file_operations queued_fops = {
124-
.owner = THIS_MODULE,
125-
.open = queued_open,
126-
.read = seq_read,
127-
.llseek = seq_lseek,
128-
.release = single_release,
129-
};
96+
DEFINE_SHOW_ATTRIBUTE(queued);
13097

13198
void qaic_debugfs_init(struct qaic_drm_device *qddev)
13299
{

drivers/dma-buf/dma-fence.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,8 @@ bool dma_fence_begin_signalling(void)
309309
if (in_atomic())
310310
return true;
311311

312-
/* ... and non-recursive readlock */
313-
lock_acquire(&dma_fence_lockdep_map, 0, 0, 1, 1, NULL, _RET_IP_);
312+
/* ... and non-recursive successful read_trylock */
313+
lock_acquire(&dma_fence_lockdep_map, 0, 1, 1, 1, NULL, _RET_IP_);
314314

315315
return false;
316316
}
@@ -341,7 +341,7 @@ void __dma_fence_might_wait(void)
341341
lock_map_acquire(&dma_fence_lockdep_map);
342342
lock_map_release(&dma_fence_lockdep_map);
343343
if (tmp)
344-
lock_acquire(&dma_fence_lockdep_map, 0, 0, 1, 1, NULL, _THIS_IP_);
344+
lock_acquire(&dma_fence_lockdep_map, 0, 1, 1, 1, NULL, _THIS_IP_);
345345
}
346346
#endif
347347

drivers/dma-buf/heaps/cma_heap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ static const struct dma_heap_ops cma_heap_ops = {
366366
.allocate = cma_heap_allocate,
367367
};
368368

369-
static int __add_cma_heap(struct cma *cma, void *data)
369+
static int __init __add_cma_heap(struct cma *cma, void *data)
370370
{
371371
struct cma_heap *cma_heap;
372372
struct dma_heap_export_info exp_info;
@@ -391,7 +391,7 @@ static int __add_cma_heap(struct cma *cma, void *data)
391391
return 0;
392392
}
393393

394-
static int add_default_cma_heap(void)
394+
static int __init add_default_cma_heap(void)
395395
{
396396
struct cma *default_cma = dev_get_cma_area(NULL);
397397
int ret = 0;

drivers/dma-buf/heaps/system_heap.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ static const struct dma_heap_ops system_heap_ops = {
421421
.allocate = system_heap_allocate,
422422
};
423423

424-
static int system_heap_create(void)
424+
static int __init system_heap_create(void)
425425
{
426426
struct dma_heap_export_info exp_info;
427427

0 commit comments

Comments
 (0)