Skip to content

Commit

Permalink
Merge tag 'v6.6.15' into 6.6-main
Browse files Browse the repository at this point in the history
This is the 6.6.15 stable release

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmW644kACgkQONu9yGCS
# aT7JVQ/9HkwCJ8wgoor/UzMhsNtvNYySUuHFt2JE1DWGJGXO0rvxRGUbNVn9dIUp
# sCkOV87+TOm1Nod2kgkwGH0WF/zP7JbzYkaXVKxaFz2KtVWVLuNrU5DpbTp5i8it
# CfhBrYFCOwwuKKFC9OuE693xjoNRy0uw8Amg3pu6s6TueHRL77RqUP6lDjH3R1u4
# DChY15jnGUYZE4DvwJMeMkVW8KNvhIImmfi3VBrqaS9eMmxxYaC0umJlFVT32VdP
# YcaGewPwV5ggfG4mLvhkcyv1r/iB47wLFakyb23atIBioqlh4n90MaSxZJR3J7VG
# qZqK04gUxmWx2W0Ge+iIHGMaZUjO7WdKFl6nEh1DBViMlckcQI8r/TnusKdha/ZR
# 3f3JYCoA3NT106fFKJExapPPswCJKyxvxzt+PzjauhrTpb1CAOaX84kXrSAfoLLu
# GW6MuZGxRTMD5n/9aFALb1r8lS0iu+fIqwywxHKFIcxfRI60icvXpNgMqZH2d27W
# 0JPKM2ZGf2KuQODOXjZKmXDBtJw3Pq3tp2eJ5YMFluDkokf6pFSFGFkQBVbz28G6
# 2ko3tckdNoShOAABj47/dCOKqu7qETehY9UF3ChiXdslU6orJByFNZaABFQtFZte
# 1TbOb0l7EHQzIWuAgXuuO4ZRcbkylrfCreEdjn3r32UqC+AecTE=
# =WGa1
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu Feb  1 01:19:21 2024 CET
# gpg:                using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
# gpg: Can't check signature: No public key
  • Loading branch information
frank-w committed Feb 10, 2024
2 parents dd938f1 + 51f354b commit 823d768
Show file tree
Hide file tree
Showing 366 changed files with 5,746 additions and 2,191 deletions.
3 changes: 3 additions & 0 deletions Documentation/ABI/testing/sysfs-class-devfreq
Expand Up @@ -52,6 +52,9 @@ Description:

echo 0 > /sys/class/devfreq/.../trans_stat

If the transition table is bigger than PAGE_SIZE, reading
this will return an -EFBIG error.

What: /sys/class/devfreq/.../available_frequencies
Date: October 2012
Contact: Nishanth Menon <nm@ti.com>
Expand Down
2 changes: 1 addition & 1 deletion Documentation/admin-guide/abi-obsolete.rst
Expand Up @@ -7,5 +7,5 @@ marked to be removed at some later point in time.
The description of the interface will document the reason why it is
obsolete and when it can be expected to be removed.

.. kernel-abi:: $srctree/Documentation/ABI/obsolete
.. kernel-abi:: ABI/obsolete
:rst:
2 changes: 1 addition & 1 deletion Documentation/admin-guide/abi-removed.rst
@@ -1,5 +1,5 @@
ABI removed symbols
===================

.. kernel-abi:: $srctree/Documentation/ABI/removed
.. kernel-abi:: ABI/removed
:rst:
2 changes: 1 addition & 1 deletion Documentation/admin-guide/abi-stable.rst
Expand Up @@ -10,5 +10,5 @@ for at least 2 years.
Most interfaces (like syscalls) are expected to never change and always
be available.

.. kernel-abi:: $srctree/Documentation/ABI/stable
.. kernel-abi:: ABI/stable
:rst:
2 changes: 1 addition & 1 deletion Documentation/admin-guide/abi-testing.rst
Expand Up @@ -16,5 +16,5 @@ Programs that use these interfaces are strongly encouraged to add their
name to the description of these interfaces, so that the kernel
developers can easily notify them if any changes occur.

.. kernel-abi:: $srctree/Documentation/ABI/testing
.. kernel-abi:: ABI/testing
:rst:
2 changes: 1 addition & 1 deletion Documentation/admin-guide/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features
.. kernel-feat:: features
2 changes: 1 addition & 1 deletion Documentation/arch/arc/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features arc
.. kernel-feat:: features arc
2 changes: 1 addition & 1 deletion Documentation/arch/arm/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features arm
.. kernel-feat:: features arm
2 changes: 1 addition & 1 deletion Documentation/arch/arm64/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features arm64
.. kernel-feat:: features arm64
2 changes: 2 additions & 0 deletions Documentation/arch/arm64/silicon-errata.rst
Expand Up @@ -71,6 +71,8 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+
| ARM | Cortex-A510 | #2658417 | ARM64_ERRATUM_2658417 |
+----------------+-----------------+-----------------+-----------------------------+
| ARM | Cortex-A510 | #3117295 | ARM64_ERRATUM_3117295 |
+----------------+-----------------+-----------------+-----------------------------+
| ARM | Cortex-A520 | #2966298 | ARM64_ERRATUM_2966298 |
+----------------+-----------------+-----------------+-----------------------------+
| ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 |
Expand Down
2 changes: 1 addition & 1 deletion Documentation/arch/loongarch/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features loongarch
.. kernel-feat:: features loongarch
2 changes: 1 addition & 1 deletion Documentation/arch/m68k/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features m68k
.. kernel-feat:: features m68k
2 changes: 1 addition & 1 deletion Documentation/arch/mips/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features mips
.. kernel-feat:: features mips
2 changes: 1 addition & 1 deletion Documentation/arch/nios2/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features nios2
.. kernel-feat:: features nios2
2 changes: 1 addition & 1 deletion Documentation/arch/openrisc/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features openrisc
.. kernel-feat:: features openrisc
2 changes: 1 addition & 1 deletion Documentation/arch/parisc/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features parisc
.. kernel-feat:: features parisc
2 changes: 1 addition & 1 deletion Documentation/arch/s390/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features s390
.. kernel-feat:: features s390
2 changes: 1 addition & 1 deletion Documentation/arch/sh/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features sh
.. kernel-feat:: features sh
2 changes: 1 addition & 1 deletion Documentation/arch/sparc/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features sparc
.. kernel-feat:: features sparc
2 changes: 1 addition & 1 deletion Documentation/arch/x86/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features x86
.. kernel-feat:: features x86
2 changes: 1 addition & 1 deletion Documentation/arch/xtensa/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features xtensa
.. kernel-feat:: features xtensa
5 changes: 5 additions & 0 deletions Documentation/devicetree/bindings/net/snps,dwmac.yaml
Expand Up @@ -394,6 +394,11 @@ properties:
When a PFC frame is received with priorities matching the bitmask,
the queue is blocked from transmitting for the pause time specified
in the PFC frame.

snps,coe-unsupported:
type: boolean
description: TX checksum offload is unsupported by the TX queue.

allOf:
- if:
required:
Expand Down
29 changes: 15 additions & 14 deletions Documentation/filesystems/directory-locking.rst
Expand Up @@ -22,13 +22,16 @@ exclusive.
3) object removal. Locking rules: caller locks parent, finds victim,
locks victim and calls the method. Locks are exclusive.

4) rename() that is _not_ cross-directory. Locking rules: caller locks the
parent and finds source and target. We lock both (provided they exist). If we
need to lock two inodes of different type (dir vs non-dir), we lock directory
first. If we need to lock two inodes of the same type, lock them in inode
pointer order. Then call the method. All locks are exclusive.
NB: we might get away with locking the source (and target in exchange
case) shared.
4) rename() that is _not_ cross-directory. Locking rules: caller locks
the parent and finds source and target. Then we decide which of the
source and target need to be locked. Source needs to be locked if it's a
non-directory; target - if it's a non-directory or about to be removed.
Take the locks that need to be taken, in inode pointer order if need
to take both (that can happen only when both source and target are
non-directories - the source because it wouldn't be locked otherwise
and the target because mixing directory and non-directory is allowed
only with RENAME_EXCHANGE, and that won't be removing the target).
After the locks had been taken, call the method. All locks are exclusive.

5) link creation. Locking rules:

Expand All @@ -44,20 +47,17 @@ rules:

* lock the filesystem
* lock parents in "ancestors first" order. If one is not ancestor of
the other, lock them in inode pointer order.
the other, lock the parent of source first.
* find source and target.
* if old parent is equal to or is a descendent of target
fail with -ENOTEMPTY
* if new parent is equal to or is a descendent of source
fail with -ELOOP
* Lock both the source and the target provided they exist. If we
need to lock two inodes of different type (dir vs non-dir), we lock
the directory first. If we need to lock two inodes of the same type,
lock them in inode pointer order.
* Lock subdirectories involved (source before target).
* Lock non-directories involved, in inode pointer order.
* call the method.

All ->i_rwsem are taken exclusive. Again, we might get away with locking
the source (and target in exchange case) shared.
All ->i_rwsem are taken exclusive.

The rules above obviously guarantee that all directories that are going to be
read, modified or removed by method will be locked by caller.
Expand All @@ -67,6 +67,7 @@ If no directory is its own ancestor, the scheme above is deadlock-free.

Proof:

[XXX: will be updated once we are done massaging the lock_rename()]
First of all, at any moment we have a linear ordering of the
objects - A < B iff (A is an ancestor of B) or (B is not an ancestor
of A and ptr(A) < ptr(B)).
Expand Down
5 changes: 4 additions & 1 deletion Documentation/filesystems/locking.rst
Expand Up @@ -101,7 +101,7 @@ symlink: exclusive
mkdir: exclusive
unlink: exclusive (both)
rmdir: exclusive (both)(see below)
rename: exclusive (all) (see below)
rename: exclusive (both parents, some children) (see below)
readlink: no
get_link: no
setattr: exclusive
Expand All @@ -123,6 +123,9 @@ get_offset_ctx no
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem
exclusive on victim.
cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
->unlink() and ->rename() have ->i_rwsem exclusive on all non-directories
involved.
->rename() has ->i_rwsem exclusive on any subdirectory that changes parent.

See Documentation/filesystems/directory-locking.rst for more detailed discussion
of the locking scheme for directory operations.
Expand Down
18 changes: 18 additions & 0 deletions Documentation/filesystems/porting.rst
Expand Up @@ -1045,3 +1045,21 @@ filesystem type is now moved to a later point when the devices are closed:
As this is a VFS level change it has no practical consequences for filesystems
other than that all of them must use one of the provided kill_litter_super(),
kill_anon_super(), or kill_block_super() helpers.

---

**mandatory**

If ->rename() update of .. on cross-directory move needs an exclusion with
directory modifications, do *not* lock the subdirectory in question in your
->rename() - it's done by the caller now [that item should've been added in
28eceeda130f "fs: Lock moved directories"].

---

**mandatory**

On same-directory ->rename() the (tautological) update of .. is not protected
by any locks; just don't do it if the old parent is the same as the new one.
We really can't lock two subdirectories in same-directory rename - not without
deadlocks.
2 changes: 2 additions & 0 deletions Documentation/gpu/drm-kms.rst
Expand Up @@ -546,6 +546,8 @@ Plane Composition Properties
.. kernel-doc:: drivers/gpu/drm/drm_blend.c
:doc: overview

.. _damage_tracking_properties:

Damage Tracking Properties
--------------------------

Expand Down
7 changes: 3 additions & 4 deletions Documentation/gpu/todo.rst
Expand Up @@ -337,8 +337,8 @@ connector register/unregister fixes

Level: Intermediate

Remove load/unload callbacks from all non-DRIVER_LEGACY drivers
---------------------------------------------------------------
Remove load/unload callbacks
----------------------------

The load/unload callbacks in struct &drm_driver are very much midlayers, plus
for historical reasons they get the ordering wrong (and we can't fix that)
Expand All @@ -347,8 +347,7 @@ between setting up the &drm_driver structure and calling drm_dev_register().
- Rework drivers to no longer use the load/unload callbacks, directly coding the
load/unload sequence into the driver's probe function.

- Once all non-DRIVER_LEGACY drivers are converted, disallow the load/unload
callbacks for all modern drivers.
- Once all drivers are converted, remove the load/unload callbacks.

Contact: Daniel Vetter

Expand Down
2 changes: 1 addition & 1 deletion Documentation/powerpc/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features powerpc
.. kernel-feat:: features powerpc
2 changes: 1 addition & 1 deletion Documentation/riscv/features.rst
@@ -1,3 +1,3 @@
.. SPDX-License-Identifier: GPL-2.0
.. kernel-feat:: $srctree/Documentation/features riscv
.. kernel-feat:: features riscv
56 changes: 10 additions & 46 deletions Documentation/sphinx/kernel_abi.py
Expand Up @@ -39,8 +39,6 @@
import re
import kernellog

from os import path

from docutils import nodes, statemachine
from docutils.statemachine import ViewList
from docutils.parsers.rst import directives, Directive
Expand Down Expand Up @@ -73,60 +71,26 @@ class KernelCmd(Directive):
}

def run(self):

doc = self.state.document
if not doc.settings.file_insertion_enabled:
raise self.warning("docutils: file insertion disabled")

env = doc.settings.env
cwd = path.dirname(doc.current_source)
cmd = "get_abi.pl rest --enable-lineno --dir "
cmd += self.arguments[0]

if 'rst' in self.options:
cmd += " --rst-source"
srctree = os.path.abspath(os.environ["srctree"])

srctree = path.abspath(os.environ["srctree"])
args = [
os.path.join(srctree, 'scripts/get_abi.pl'),
'rest',
'--enable-lineno',
'--dir', os.path.join(srctree, 'Documentation', self.arguments[0]),
]

fname = cmd

# extend PATH with $(srctree)/scripts
path_env = os.pathsep.join([
srctree + os.sep + "scripts",
os.environ["PATH"]
])
shell_env = os.environ.copy()
shell_env["PATH"] = path_env
shell_env["srctree"] = srctree
if 'rst' in self.options:
args.append('--rst-source')

lines = self.runCmd(cmd, shell=True, cwd=cwd, env=shell_env)
lines = subprocess.check_output(args, cwd=os.path.dirname(doc.current_source)).decode('utf-8')
nodeList = self.nestedParse(lines, self.arguments[0])
return nodeList

def runCmd(self, cmd, **kwargs):
u"""Run command ``cmd`` and return its stdout as unicode."""

try:
proc = subprocess.Popen(
cmd
, stdout = subprocess.PIPE
, stderr = subprocess.PIPE
, **kwargs
)
out, err = proc.communicate()

out, err = codecs.decode(out, 'utf-8'), codecs.decode(err, 'utf-8')

if proc.returncode != 0:
raise self.severe(
u"command '%s' failed with return code %d"
% (cmd, proc.returncode)
)
except OSError as exc:
raise self.severe(u"problems with '%s' directive: %s."
% (self.name, ErrorString(exc)))
return out

def nestedParse(self, lines, fname):
env = self.state.document.settings.env
content = ViewList()
Expand Down

0 comments on commit 823d768

Please sign in to comment.