Skip to content

Commit 390db60

Browse files
committed
Merge tag 'asoc-fix-v6.18-rc2' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.18 A bigger batch of fixes than I'd like, things built up due to holidays and some last minute issues which caused me to hold off on sending a pul request. None of these are super remarkable, and there's a few new device IDs in here too including a relatively big block of AMD devices. The Cirrus Logic CS530x support subject line is actually a fix that was on the start of that series and got pulled in here, I forgot to fix the subject up when merging.
2 parents 4f4c654 + 5e5c8aa commit 390db60

File tree

452 files changed

+3757
-2205
lines changed

Some content is hidden

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

452 files changed

+3757
-2205
lines changed

.mailmap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ Dmitry Safonov <0x7f454c46@gmail.com> <dima@arista.com>
227227
Dmitry Safonov <0x7f454c46@gmail.com> <d.safonov@partner.samsung.com>
228228
Dmitry Safonov <0x7f454c46@gmail.com> <dsafonov@virtuozzo.com>
229229
Domen Puncer <domen@coderock.org>
230+
Dong Aisheng <aisheng.dong@nxp.com> <b29396@freescale.com>
230231
Douglas Gilbert <dougg@torque.net>
231232
Drew Fustini <fustini@kernel.org> <drew@pdp7.com>
232233
<duje@dujemihanovic.xyz> <duje.mihanovic@skole.hr>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/i2c/apm,xgene-slimpro-i2c.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: APM X-Gene SLIMpro Mailbox I2C
8+
9+
maintainers:
10+
- Khuong Dinh <khuong@os.amperecomputing.com>
11+
12+
description:
13+
An I2C controller accessed over the "SLIMpro" mailbox.
14+
15+
allOf:
16+
- $ref: /schemas/i2c/i2c-controller.yaml#
17+
18+
properties:
19+
compatible:
20+
const: apm,xgene-slimpro-i2c
21+
22+
mboxes:
23+
maxItems: 1
24+
25+
required:
26+
- compatible
27+
- mboxes
28+
29+
unevaluatedProperties: false
30+
31+
examples:
32+
- |
33+
i2c {
34+
compatible = "apm,xgene-slimpro-i2c";
35+
mboxes = <&mailbox 0>;
36+
};

Documentation/devicetree/bindings/i2c/i2c-xgene-slimpro.txt

Lines changed: 0 additions & 15 deletions
This file was deleted.

Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ properties:
3232
3333
$ref: /schemas/types.yaml#/definitions/uint32-array
3434
minItems: 2
35-
maxItems: 2
35+
maxItems: 4
3636
items:
3737
enum: [1, 2, 3, 4]
3838

@@ -48,7 +48,7 @@ properties:
4848
4949
$ref: /schemas/types.yaml#/definitions/uint32-array
5050
minItems: 2
51-
maxItems: 2
51+
maxItems: 5
5252
items:
5353
enum: [1, 2, 3, 4, 5]
5454

Documentation/filesystems/ext4/directory.rst

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,10 @@ in the place where the name normally goes. The structure is
183183
- det_checksum
184184
- Directory leaf block checksum.
185185

186-
The leaf directory block checksum is calculated against the FS UUID, the
187-
directory's inode number, the directory's inode generation number, and
188-
the entire directory entry block up to (but not including) the fake
189-
directory entry.
186+
The leaf directory block checksum is calculated against the FS UUID (or
187+
the checksum seed, if that feature is enabled for the fs), the directory's
188+
inode number, the directory's inode generation number, and the entire
189+
directory entry block up to (but not including) the fake directory entry.
190190

191191
Hash Tree Directories
192192
~~~~~~~~~~~~~~~~~~~~~
@@ -196,37 +196,37 @@ new feature was added to ext3 to provide a faster (but peculiar)
196196
balanced tree keyed off a hash of the directory entry name. If the
197197
EXT4_INDEX_FL (0x1000) flag is set in the inode, this directory uses a
198198
hashed btree (htree) to organize and find directory entries. For
199-
backwards read-only compatibility with ext2, this tree is actually
200-
hidden inside the directory file, masquerading as “empty” directory data
201-
blocks! It was stated previously that the end of the linear directory
202-
entry table was signified with an entry pointing to inode 0; this is
203-
(ab)used to fool the old linear-scan algorithm into thinking that the
204-
rest of the directory block is empty so that it moves on.
199+
backwards read-only compatibility with ext2, interior tree nodes are actually
200+
hidden inside the directory file, masquerading as “empty” directory entries
201+
spanning the whole block. It was stated previously that directory entries
202+
with the inode set to 0 are treated as unused entries; this is (ab)used to
203+
fool the old linear-scan algorithm into skipping over those blocks containing
204+
the interior tree node data.
205205

206206
The root of the tree always lives in the first data block of the
207207
directory. By ext2 custom, the '.' and '..' entries must appear at the
208208
beginning of this first block, so they are put here as two
209209
``struct ext4_dir_entry_2`` s and not stored in the tree. The rest of
210210
the root node contains metadata about the tree and finally a hash->block
211211
map to find nodes that are lower in the htree. If
212-
``dx_root.info.indirect_levels`` is non-zero then the htree has two
213-
levels; the data block pointed to by the root node's map is an interior
214-
node, which is indexed by a minor hash. Interior nodes in this tree
215-
contains a zeroed out ``struct ext4_dir_entry_2`` followed by a
216-
minor_hash->block map to find leafe nodes. Leaf nodes contain a linear
217-
array of all ``struct ext4_dir_entry_2``; all of these entries
218-
(presumably) hash to the same value. If there is an overflow, the
219-
entries simply overflow into the next leaf node, and the
220-
least-significant bit of the hash (in the interior node map) that gets
221-
us to this next leaf node is set.
222-
223-
To traverse the directory as a htree, the code calculates the hash of
224-
the desired file name and uses it to find the corresponding block
225-
number. If the tree is flat, the block is a linear array of directory
226-
entries that can be searched; otherwise, the minor hash of the file name
227-
is computed and used against this second block to find the corresponding
228-
third block number. That third block number will be a linear array of
229-
directory entries.
212+
``dx_root.info.indirect_levels`` is non-zero then the htree has that many
213+
levels and the blocks pointed to by the root node's map are interior nodes.
214+
These interior nodes have a zeroed out ``struct ext4_dir_entry_2`` followed by
215+
a hash->block map to find nodes of the next level. Leaf nodes look like
216+
classic linear directory blocks, but all of its entries have a hash value
217+
equal or greater than the indicated hash of the parent node.
218+
219+
The actual hash value for an entry name is only 31 bits, the least-significant
220+
bit is set to 0. However, if there is a hash collision between directory
221+
entries, the least-significant bit may get set to 1 on interior nodes in the
222+
case where these two (or more) hash-colliding entries do not fit into one leaf
223+
node and must be split across multiple nodes.
224+
225+
To look up a name in such a htree, the code calculates the hash of the desired
226+
file name and uses it to find the leaf node with the range of hash values the
227+
calculated hash falls into (in other words, a lookup works basically the same
228+
as it would in a B-Tree keyed by the hash value), and possibly also scanning
229+
the leaf nodes that follow (in tree order) in case of hash collisions.
230230

231231
To traverse the directory as a linear array (such as the old code does),
232232
the code simply reads every data block in the directory. The blocks used
@@ -319,7 +319,8 @@ of a data block:
319319
* - 0x24
320320
- __le32
321321
- block
322-
- The block number (within the directory file) that goes with hash=0.
322+
- The block number (within the directory file) that lead to the left-most
323+
leaf node, i.e. the leaf containing entries with the lowest hash values.
323324
* - 0x28
324325
- struct dx_entry
325326
- entries[0]
@@ -442,12 +443,12 @@ The dx_tail structure is 8 bytes long and looks like this:
442443
* - 0x0
443444
- u32
444445
- dt_reserved
445-
- Zero.
446+
- Unused (but still part of the checksum curiously).
446447
* - 0x4
447448
- __le32
448449
- dt_checksum
449450
- Checksum of the htree directory block.
450451

451452
The checksum is calculated against the FS UUID, the htree index header
452453
(dx_root or dx_node), all of the htree indices (dx_entry) that are in
453-
use, and the tail block (dx_tail).
454+
use, and the tail block (dx_tail) with the dt_checksum initially set to 0.

Documentation/networking/can.rst

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1398,10 +1398,9 @@ second bit timing has to be specified in order to enable the CAN FD bitrate.
13981398
Additionally CAN FD capable CAN controllers support up to 64 bytes of
13991399
payload. The representation of this length in can_frame.len and
14001400
canfd_frame.len for userspace applications and inside the Linux network
1401-
layer is a plain value from 0 .. 64 instead of the CAN 'data length code'.
1402-
The data length code was a 1:1 mapping to the payload length in the Classical
1403-
CAN frames anyway. The payload length to the bus-relevant DLC mapping is
1404-
only performed inside the CAN drivers, preferably with the helper
1401+
layer is a plain value from 0 .. 64 instead of the Classical CAN length
1402+
which ranges from 0 to 8. The payload length to the bus-relevant DLC mapping
1403+
is only performed inside the CAN drivers, preferably with the helper
14051404
functions can_fd_dlc2len() and can_fd_len2dlc().
14061405

14071406
The CAN netdevice driver capabilities can be distinguished by the network
@@ -1465,6 +1464,70 @@ Example when 'fd-non-iso on' is added on this switchable CAN FD adapter::
14651464
can <FD,FD-NON-ISO> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0
14661465

14671466

1467+
Transmitter Delay Compensation
1468+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1469+
1470+
At high bit rates, the propagation delay from the TX pin to the RX pin of
1471+
the transceiver might become greater than the actual bit time causing
1472+
measurement errors: the RX pin would still be measuring the previous bit.
1473+
1474+
The Transmitter Delay Compensation (thereafter, TDC) resolves this problem
1475+
by introducing a Secondary Sample Point (SSP) equal to the distance, in
1476+
minimum time quantum, from the start of the bit time on the TX pin to the
1477+
actual measurement on the RX pin. The SSP is calculated as the sum of two
1478+
configurable values: the TDC Value (TDCV) and the TDC offset (TDCO).
1479+
1480+
TDC, if supported by the device, can be configured together with CAN-FD
1481+
using the ip tool's "tdc-mode" argument as follow:
1482+
1483+
**omitted**
1484+
When no "tdc-mode" option is provided, the kernel will automatically
1485+
decide whether TDC should be turned on, in which case it will
1486+
calculate a default TDCO and use the TDCV as measured by the
1487+
device. This is the recommended method to use TDC.
1488+
1489+
**"tdc-mode off"**
1490+
TDC is explicitly disabled.
1491+
1492+
**"tdc-mode auto"**
1493+
The user must provide the "tdco" argument. The TDCV will be
1494+
automatically calculated by the device. This option is only
1495+
available if the device supports the TDC-AUTO CAN controller mode.
1496+
1497+
**"tdc-mode manual"**
1498+
The user must provide both the "tdco" and "tdcv" arguments. This
1499+
option is only available if the device supports the TDC-MANUAL CAN
1500+
controller mode.
1501+
1502+
Note that some devices may offer an additional parameter: "tdcf" (TDC Filter
1503+
window). If supported by your device, this can be added as an optional
1504+
argument to either "tdc-mode auto" or "tdc-mode manual".
1505+
1506+
Example configuring a 500 kbit/s arbitration bitrate, a 5 Mbit/s data
1507+
bitrate, a TDCO of 15 minimum time quantum and a TDCV automatically measured
1508+
by the device::
1509+
1510+
$ ip link set can0 up type can bitrate 500000 \
1511+
fd on dbitrate 4000000 \
1512+
tdc-mode auto tdco 15
1513+
$ ip -details link show can0
1514+
5: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UP \
1515+
mode DEFAULT group default qlen 10
1516+
link/can promiscuity 0 allmulti 0 minmtu 72 maxmtu 72
1517+
can <FD,TDC-AUTO> state ERROR-ACTIVE restart-ms 0
1518+
bitrate 500000 sample-point 0.875
1519+
tq 12 prop-seg 69 phase-seg1 70 phase-seg2 20 sjw 10 brp 1
1520+
ES582.1/ES584.1: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 \
1521+
brp_inc 1
1522+
dbitrate 4000000 dsample-point 0.750
1523+
dtq 12 dprop-seg 7 dphase-seg1 7 dphase-seg2 5 dsjw 2 dbrp 1
1524+
tdco 15 tdcf 0
1525+
ES582.1/ES584.1: dtseg1 2..32 dtseg2 1..16 dsjw 1..8 dbrp 1..32 \
1526+
dbrp_inc 1
1527+
tdco 0..127 tdcf 0..127
1528+
clock 80000000
1529+
1530+
14681531
Supported CAN Hardware
14691532
----------------------
14701533

Documentation/networking/seg6-sysctl.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ seg6_require_hmac - INTEGER
2525

2626
Default is 0.
2727

28+
/proc/sys/net/ipv6/seg6_* variables:
29+
====================================
30+
2831
seg6_flowlabel - INTEGER
2932
Controls the behaviour of computing the flowlabel of outer
3033
IPv6 header in case of SR T.encaps

Documentation/rust/coding-guidelines.rst

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,81 @@ Like ``clang-format`` for the rest of the kernel, ``rustfmt`` works on
3838
individual files, and does not require a kernel configuration. Sometimes it may
3939
even work with broken code.
4040

41+
Imports
42+
~~~~~~~
43+
44+
``rustfmt``, by default, formats imports in a way that is prone to conflicts
45+
while merging and rebasing, since in some cases it condenses several items into
46+
the same line. For instance:
47+
48+
.. code-block:: rust
49+
50+
// Do not use this style.
51+
use crate::{
52+
example1,
53+
example2::{example3, example4, example5},
54+
example6, example7,
55+
example8::example9,
56+
};
57+
58+
Instead, the kernel uses a vertical layout that looks like this:
59+
60+
.. code-block:: rust
61+
62+
use crate::{
63+
example1,
64+
example2::{
65+
example3,
66+
example4,
67+
example5, //
68+
},
69+
example6,
70+
example7,
71+
example8::example9, //
72+
};
73+
74+
That is, each item goes into its own line, and braces are used as soon as there
75+
is more than one item in a list.
76+
77+
The trailing empty comment allows to preserve this formatting. Not only that,
78+
``rustfmt`` will actually reformat imports vertically when the empty comment is
79+
added. That is, it is possible to easily reformat the original example into the
80+
expected style by running ``rustfmt`` on an input like:
81+
82+
.. code-block:: rust
83+
84+
// Do not use this style.
85+
use crate::{
86+
example1,
87+
example2::{example3, example4, example5, //
88+
},
89+
example6, example7,
90+
example8::example9, //
91+
};
92+
93+
The trailing empty comment works for nested imports, as shown above, as well as
94+
for single item imports -- this can be useful to minimize diffs within patch
95+
series:
96+
97+
.. code-block:: rust
98+
99+
use crate::{
100+
example1, //
101+
};
102+
103+
The trailing empty comment works in any of the lines within the braces, but it
104+
is preferred to keep it in the last item, since it is reminiscent of the
105+
trailing comma in other formatters. Sometimes it may be simpler to avoid moving
106+
the comment several times within a patch series due to changes in the list.
107+
108+
There may be cases where exceptions may need to be made, i.e. none of this is
109+
a hard rule. There is also code that is not migrated to this style yet, but
110+
please do not introduce code in other styles.
111+
112+
Eventually, the goal is to get ``rustfmt`` to support this formatting style (or
113+
a similar one) automatically in a stable release without requiring the trailing
114+
empty comment. Thus, at some point, the goal is to remove those comments.
115+
41116

42117
Comments
43118
--------

Documentation/virt/kvm/api.rst

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,9 @@ It is not possible to read back a pending external abort (injected via
12291229
KVM_SET_VCPU_EVENTS or otherwise) because such an exception is always delivered
12301230
directly to the virtual CPU).
12311231

1232+
Calling this ioctl on a vCPU that hasn't been initialized will return
1233+
-ENOEXEC.
1234+
12321235
::
12331236

12341237
struct kvm_vcpu_events {
@@ -1309,6 +1312,8 @@ exceptions by manipulating individual registers using the KVM_SET_ONE_REG API.
13091312

13101313
See KVM_GET_VCPU_EVENTS for the data structure.
13111314

1315+
Calling this ioctl on a vCPU that hasn't been initialized will return
1316+
-ENOEXEC.
13121317

13131318
4.33 KVM_GET_DEBUGREGS
13141319
----------------------
@@ -6432,9 +6437,18 @@ most one mapping per page, i.e. binding multiple memory regions to a single
64326437
guest_memfd range is not allowed (any number of memory regions can be bound to
64336438
a single guest_memfd file, but the bound ranges must not overlap).
64346439

6435-
When the capability KVM_CAP_GUEST_MEMFD_MMAP is supported, the 'flags' field
6436-
supports GUEST_MEMFD_FLAG_MMAP. Setting this flag on guest_memfd creation
6437-
enables mmap() and faulting of guest_memfd memory to host userspace.
6440+
The capability KVM_CAP_GUEST_MEMFD_FLAGS enumerates the `flags` that can be
6441+
specified via KVM_CREATE_GUEST_MEMFD. Currently defined flags:
6442+
6443+
============================ ================================================
6444+
GUEST_MEMFD_FLAG_MMAP Enable using mmap() on the guest_memfd file
6445+
descriptor.
6446+
GUEST_MEMFD_FLAG_INIT_SHARED Make all memory in the file shared during
6447+
KVM_CREATE_GUEST_MEMFD (memory files created
6448+
without INIT_SHARED will be marked private).
6449+
Shared memory can be faulted into host userspace
6450+
page tables. Private memory cannot.
6451+
============================ ================================================
64386452

64396453
When the KVM MMU performs a PFN lookup to service a guest fault and the backing
64406454
guest_memfd has the GUEST_MEMFD_FLAG_MMAP set, then the fault will always be

0 commit comments

Comments
 (0)