Skip to content

Commit c141cf7

Browse files
committed
Merge drm/drm-next into drm-intel-next
Needed to bring some KVM changes to be able to include a fix in our Kconfig. Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2 parents af4f896 + 26bb2dc commit c141cf7

File tree

1,709 files changed

+16639
-8603
lines changed

Some content is hidden

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

1,709 files changed

+16639
-8603
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
What: /sys/bus/platform/drivers/panthor/.../profiling
2+
Date: September 2024
3+
KernelVersion: 6.11.0
4+
Contact: Adrian Larumbe <adrian.larumbe@collabora.com>
5+
Description:
6+
Bitmask to enable drm fdinfo's job profiling measurements.
7+
Valid values are:
8+
0: Don't enable fdinfo job profiling sources.
9+
1: Enable GPU cycle measurements for running jobs.
10+
2: Enable GPU timestamp sampling for running jobs.

Documentation/arch/arm/mem_alignment.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ones.
1212

1313
Of course this is a bad idea to rely on the alignment trap to perform
1414
unaligned memory access in general. If those access are predictable, you
15-
are better to use the macros provided by include/asm/unaligned.h. The
15+
are better to use the macros provided by include/linux/unaligned.h. The
1616
alignment trap can fixup misaligned access for the exception cases, but at
1717
a high performance cost. It better be rare.
1818

Documentation/arch/arm64/silicon-errata.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ stable kernels.
146146
+----------------+-----------------+-----------------+-----------------------------+
147147
| ARM | Cortex-A715 | #2645198 | ARM64_ERRATUM_2645198 |
148148
+----------------+-----------------+-----------------+-----------------------------+
149+
| ARM | Cortex-A715 | #3456084 | ARM64_ERRATUM_3194386 |
150+
+----------------+-----------------+-----------------+-----------------------------+
149151
| ARM | Cortex-A720 | #3456091 | ARM64_ERRATUM_3194386 |
150152
+----------------+-----------------+-----------------+-----------------------------+
151153
| ARM | Cortex-A725 | #3456106 | ARM64_ERRATUM_3194386 |
@@ -186,6 +188,8 @@ stable kernels.
186188
+----------------+-----------------+-----------------+-----------------------------+
187189
| ARM | Neoverse-N2 | #3324339 | ARM64_ERRATUM_3194386 |
188190
+----------------+-----------------+-----------------+-----------------------------+
191+
| ARM | Neoverse-N3 | #3456111 | ARM64_ERRATUM_3194386 |
192+
+----------------+-----------------+-----------------+-----------------------------+
189193
| ARM | Neoverse-V1 | #1619801 | N/A |
190194
+----------------+-----------------+-----------------+-----------------------------+
191195
| ARM | Neoverse-V1 | #3324341 | ARM64_ERRATUM_3194386 |
@@ -289,3 +293,5 @@ stable kernels.
289293
+----------------+-----------------+-----------------+-----------------------------+
290294
| Microsoft | Azure Cobalt 100| #2253138 | ARM64_ERRATUM_2253138 |
291295
+----------------+-----------------+-----------------+-----------------------------+
296+
| Microsoft | Azure Cobalt 100| #3324339 | ARM64_ERRATUM_3194386 |
297+
+----------------+-----------------+-----------------+-----------------------------+
Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
.. SPDX-License-Identifier: GPL-2.0+
2+
3+
===========
4+
Folio Queue
5+
===========
6+
7+
:Author: David Howells <dhowells@redhat.com>
8+
9+
.. Contents:
10+
11+
* Overview
12+
* Initialisation
13+
* Adding and removing folios
14+
* Querying information about a folio
15+
* Querying information about a folio_queue
16+
* Folio queue iteration
17+
* Folio marks
18+
* Lockless simultaneous production/consumption issues
19+
20+
21+
Overview
22+
========
23+
24+
The folio_queue struct forms a single segment in a segmented list of folios
25+
that can be used to form an I/O buffer. As such, the list can be iterated over
26+
using the ITER_FOLIOQ iov_iter type.
27+
28+
The publicly accessible members of the structure are::
29+
30+
struct folio_queue {
31+
struct folio_queue *next;
32+
struct folio_queue *prev;
33+
...
34+
};
35+
36+
A pair of pointers are provided, ``next`` and ``prev``, that point to the
37+
segments on either side of the segment being accessed. Whilst this is a
38+
doubly-linked list, it is intentionally not a circular list; the outward
39+
sibling pointers in terminal segments should be NULL.
40+
41+
Each segment in the list also stores:
42+
43+
* an ordered sequence of folio pointers,
44+
* the size of each folio and
45+
* three 1-bit marks per folio,
46+
47+
but hese should not be accessed directly as the underlying data structure may
48+
change, but rather the access functions outlined below should be used.
49+
50+
The facility can be made accessible by::
51+
52+
#include <linux/folio_queue.h>
53+
54+
and to use the iterator::
55+
56+
#include <linux/uio.h>
57+
58+
59+
Initialisation
60+
==============
61+
62+
A segment should be initialised by calling::
63+
64+
void folioq_init(struct folio_queue *folioq);
65+
66+
with a pointer to the segment to be initialised. Note that this will not
67+
necessarily initialise all the folio pointers, so care must be taken to check
68+
the number of folios added.
69+
70+
71+
Adding and removing folios
72+
==========================
73+
74+
Folios can be set in the next unused slot in a segment struct by calling one
75+
of::
76+
77+
unsigned int folioq_append(struct folio_queue *folioq,
78+
struct folio *folio);
79+
80+
unsigned int folioq_append_mark(struct folio_queue *folioq,
81+
struct folio *folio);
82+
83+
Both functions update the stored folio count, store the folio and note its
84+
size. The second function also sets the first mark for the folio added. Both
85+
functions return the number of the slot used. [!] Note that no attempt is made
86+
to check that the capacity wasn't overrun and the list will not be extended
87+
automatically.
88+
89+
A folio can be excised by calling::
90+
91+
void folioq_clear(struct folio_queue *folioq, unsigned int slot);
92+
93+
This clears the slot in the array and also clears all the marks for that folio,
94+
but doesn't change the folio count - so future accesses of that slot must check
95+
if the slot is occupied.
96+
97+
98+
Querying information about a folio
99+
==================================
100+
101+
Information about the folio in a particular slot may be queried by the
102+
following function::
103+
104+
struct folio *folioq_folio(const struct folio_queue *folioq,
105+
unsigned int slot);
106+
107+
If a folio has not yet been set in that slot, this may yield an undefined
108+
pointer. The size of the folio in a slot may be queried with either of::
109+
110+
unsigned int folioq_folio_order(const struct folio_queue *folioq,
111+
unsigned int slot);
112+
113+
size_t folioq_folio_size(const struct folio_queue *folioq,
114+
unsigned int slot);
115+
116+
The first function returns the size as an order and the second as a number of
117+
bytes.
118+
119+
120+
Querying information about a folio_queue
121+
========================================
122+
123+
Information may be retrieved about a particular segment with the following
124+
functions::
125+
126+
unsigned int folioq_nr_slots(const struct folio_queue *folioq);
127+
128+
unsigned int folioq_count(struct folio_queue *folioq);
129+
130+
bool folioq_full(struct folio_queue *folioq);
131+
132+
The first function returns the maximum capacity of a segment. It must not be
133+
assumed that this won't vary between segments. The second returns the number
134+
of folios added to a segments and the third is a shorthand to indicate if the
135+
segment has been filled to capacity.
136+
137+
Not that the count and fullness are not affected by clearing folios from the
138+
segment. These are more about indicating how many slots in the array have been
139+
initialised, and it assumed that slots won't get reused, but rather the segment
140+
will get discarded as the queue is consumed.
141+
142+
143+
Folio marks
144+
===========
145+
146+
Folios within a queue can also have marks assigned to them. These marks can be
147+
used to note information such as if a folio needs folio_put() calling upon it.
148+
There are three marks available to be set for each folio.
149+
150+
The marks can be set by::
151+
152+
void folioq_mark(struct folio_queue *folioq, unsigned int slot);
153+
void folioq_mark2(struct folio_queue *folioq, unsigned int slot);
154+
void folioq_mark3(struct folio_queue *folioq, unsigned int slot);
155+
156+
Cleared by::
157+
158+
void folioq_unmark(struct folio_queue *folioq, unsigned int slot);
159+
void folioq_unmark2(struct folio_queue *folioq, unsigned int slot);
160+
void folioq_unmark3(struct folio_queue *folioq, unsigned int slot);
161+
162+
And the marks can be queried by::
163+
164+
bool folioq_is_marked(const struct folio_queue *folioq, unsigned int slot);
165+
bool folioq_is_marked2(const struct folio_queue *folioq, unsigned int slot);
166+
bool folioq_is_marked3(const struct folio_queue *folioq, unsigned int slot);
167+
168+
The marks can be used for any purpose and are not interpreted by this API.
169+
170+
171+
Folio queue iteration
172+
=====================
173+
174+
A list of segments may be iterated over using the I/O iterator facility using
175+
an ``iov_iter`` iterator of ``ITER_FOLIOQ`` type. The iterator may be
176+
initialised with::
177+
178+
void iov_iter_folio_queue(struct iov_iter *i, unsigned int direction,
179+
const struct folio_queue *folioq,
180+
unsigned int first_slot, unsigned int offset,
181+
size_t count);
182+
183+
This may be told to start at a particular segment, slot and offset within a
184+
queue. The iov iterator functions will follow the next pointers when advancing
185+
and prev pointers when reverting when needed.
186+
187+
188+
Lockless simultaneous production/consumption issues
189+
===================================================
190+
191+
If properly managed, the list can be extended by the producer at the head end
192+
and shortened by the consumer at the tail end simultaneously without the need
193+
to take locks. The ITER_FOLIOQ iterator inserts appropriate barriers to aid
194+
with this.
195+
196+
Care must be taken when simultaneously producing and consuming a list. If the
197+
last segment is reached and the folios it refers to are entirely consumed by
198+
the IOV iterators, an iov_iter struct will be left pointing to the last segment
199+
with a slot number equal to the capacity of that segment. The iterator will
200+
try to continue on from this if there's another segment available when it is
201+
used again, but care must be taken lest the segment got removed and freed by
202+
the consumer before the iterator was advanced.
203+
204+
It is recommended that the queue always contain at least one segment, even if
205+
that segment has never been filled or is entirely spent. This prevents the
206+
head and tail pointers from collapsing.
207+
208+
209+
API Function Reference
210+
======================
211+
212+
.. kernel-doc:: include/linux/folio_queue.h

Documentation/core-api/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ Library functionality that is used throughout the kernel.
3737
kref
3838
cleanup
3939
assoc_array
40+
folio_queue
4041
xarray
4142
maple_tree
4243
idr

Documentation/core-api/unaligned-memory-access.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ Avoiding unaligned accesses
203203
===========================
204204

205205
The easiest way to avoid unaligned access is to use the get_unaligned() and
206-
put_unaligned() macros provided by the <asm/unaligned.h> header file.
206+
put_unaligned() macros provided by the <linux/unaligned.h> header file.
207207

208208
Going back to an earlier example of code that potentially causes unaligned
209209
access::
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 <avrac@freebox.fr>
11+
- Pierre-Hugues Husson <phhusson@freebox.fr>
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/display/panel/panel-lvds.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ properties:
5050
- hannstar,hsd101pww2
5151
# Hydis Technologies 7" WXGA (800x1280) TFT LCD LVDS panel
5252
- hydis,hv070wx2-1e0
53+
# Jenson Display BL-JT60050-01A 7" WSVGA (1024x600) color TFT LCD LVDS panel
54+
- jenson,bl-jt60050-01a
5355
- tbs,a711-panel
5456

5557
- const: panel-lvds

0 commit comments

Comments
 (0)