Commit graph

1,264,895 commits

Author SHA1 Message Date
Yiwei Lin
e650956864 Documentation: PM: Fix runtime_pm.rst markdown syntax
The '7. Generic subsystem callbacks' should be a section title, but
the markdown syntax is not adequate now.

Fix it so the chapter can be linked at docs.kernel.org correctly.

Signed-off-by: Yiwei Lin <s921975628@gmail.com>
[ rjw: Changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-02-29 20:16:03 +01:00
Meng Li
8164f74332 cpufreq: amd-pstate: adjust min/max limit perf
The min/max limit perf values calculated based on frequency
may exceed the reasonable range of perf(highest perf, lowest perf).

Signed-off-by: Meng Li <li.meng@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-02-29 20:11:40 +01:00
Palmer Dabbelt
2b8acd7154
Merge patch series "NAPOT Fixes"
Alexandre Ghiti <alexghiti@rivosinc.com> says:

This contains 2 fixes for NAPOT: patch 1 disables the use of NAPOT
mapping for vmalloc/vmap and patch 2 implements pte_leaf_size() to
report NAPOT size.

* b4-shazam-merge:
  riscv: Fix pte_leaf_size() for NAPOT
  Revert "riscv: mm: support Svnapot in huge vmap"

Link: https://lore.kernel.org/r/20240227205016.121901-1-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:21:25 -08:00
Alexandre Ghiti
e0fe5ab419
riscv: Fix pte_leaf_size() for NAPOT
pte_leaf_size() must be reimplemented to add support for NAPOT mappings.

Fixes: 82a1a1f3bf ("riscv: mm: support Svnapot in hugetlb page")
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20240227205016.121901-3-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:21:23 -08:00
Alexandre Ghiti
16ab4646c9
Revert "riscv: mm: support Svnapot in huge vmap"
This reverts commit ce173474cf.

We cannot correctly deal with NAPOT mappings in vmalloc/vmap because if
some part of a NAPOT mapping is unmapped, the remaining mapping is not
updated accordingly. For example:

ptr = vmalloc_huge(64 * 1024, GFP_KERNEL);
vunmap_range((unsigned long)(ptr + PAGE_SIZE),
	     (unsigned long)(ptr + 64 * 1024));

leads to the following kernel page table dump:

0xffff8f8000ef0000-0xffff8f8000ef1000    0x00000001033c0000         4K PTE N   ..     ..   D A G . . W R V

Meaning the first entry which was not unmapped still has the N bit set,
which, if accessed first and cached in the TLB, could allow access to the
unmapped range.

That's because the logic to break the NAPOT mapping does not exist and
likely won't. Indeed, to break a NAPOT mapping, we first have to clear
the whole mapping, flush the TLB and then set the new mapping ("break-
before-make" equivalent). That works fine in userspace since we can handle
any pagefault occurring on the remaining mapping but we can't handle a kernel
pagefault on such mapping.

So fix this by reverting the commit that introduced the vmap/vmalloc
support.

Fixes: ce173474cf ("riscv: mm: support Svnapot in huge vmap")
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20240227205016.121901-2-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:21:22 -08:00
Palmer Dabbelt
e2b6bc28ec
Merge patch series "riscv: cbo.zero fixes"
Samuel Holland <samuel.holland@sifive.com> says:

This series fixes a couple of issues related to using the cbo.zero
instruction in userspace. The first patch fixes a bug where the wrong
enable bit gets set if the kernel is running in M-mode. The remaining
patches fix a bug where the enable bit gets reset to its default value
after a nonretentive idle state. I have hardware which reproduces this:

Before this series:
  $ tools/testing/selftests/riscv/hwprobe/cbo
  TAP version 13
  1..3
  ok 1 Zicboz block size
  # Zicboz block size: 64
  Illegal instruction

After applying this series:
  $ tools/testing/selftests/riscv/hwprobe/cbo
  TAP version 13
  1..3
  ok 1 Zicboz block size
  # Zicboz block size: 64
  ok 2 cbo.zero
  ok 3 cbo.zero check
  # Totals: pass:3 fail:0 xfail:0 xpass:0 skip:0 error:0

* b4-shazam-merge:
  riscv: Save/restore envcfg CSR during CPU suspend
  riscv: Add a custom ISA extension for the [ms]envcfg CSR
  riscv: Fix enabling cbo.zero when running in M-mode

Link: https://lore.kernel.org/r/20240228065559.3434837-1-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:20:19 -08:00
Samuel Holland
05ab803d1a
riscv: Save/restore envcfg CSR during CPU suspend
The value of the [ms]envcfg CSR is lost when entering a nonretentive
idle state, so the CSR must be rewritten when resuming the CPU.

Cc: <stable@vger.kernel.org> # v6.7+
Fixes: 43c16d51a1 ("RISC-V: Enable cbo.zero in usermode")
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Link: https://lore.kernel.org/r/20240228065559.3434837-4-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:20:18 -08:00
Samuel Holland
4774848fef
riscv: Add a custom ISA extension for the [ms]envcfg CSR
The [ms]envcfg CSR was added in version 1.12 of the RISC-V privileged
ISA (aka S[ms]1p12). However, bits in this CSR are defined by several
other extensions which may be implemented separately from any particular
version of the privileged ISA (for example, some unrelated errata may
prevent an implementation from claiming conformance with Ss1p12). As a
result, Linux cannot simply use the privileged ISA version to determine
if the CSR is present. It must also check if any of these other
extensions are implemented. It also cannot probe the existence of the
CSR at runtime, because Linux does not require Sstrict, so (in the
absence of additional information) it cannot know if a CSR at that
address is [ms]envcfg or part of some non-conforming vendor extension.

Since there are several standard extensions that imply the existence of
the [ms]envcfg CSR, it becomes unwieldy to check for all of them
wherever the CSR is accessed. Instead, define a custom Xlinuxenvcfg ISA
extension bit that is implied by the other extensions and denotes that
the CSR exists as defined in the privileged ISA, containing at least one
of the fields common between menvcfg and senvcfg.

This extension does not need to be parsed from the devicetree or ISA
string because it can only be implemented as a subset of some other
standard extension.

Cc: <stable@vger.kernel.org> # v6.7+
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Link: https://lore.kernel.org/r/20240228065559.3434837-3-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:20:17 -08:00
Samuel Holland
3fb3f7164e
riscv: Fix enabling cbo.zero when running in M-mode
When the kernel is running in M-mode, the CBZE bit must be set in the
menvcfg CSR, not in senvcfg.

Cc: <stable@vger.kernel.org>
Fixes: 43c16d51a1 ("RISC-V: Enable cbo.zero in usermode")
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20240228065559.3434837-2-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:20:16 -08:00
Fei Wu
34b5678687
perf: RISCV: Fix panic on pmu overflow handler
(1 << idx) of int is not desired when setting bits in unsigned long
overflowed_ctrs, use BIT() instead. This panic happens when running
'perf record -e branches' on sophgo sg2042.

[  273.311852] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000098
[  273.320851] Oops [#1]
[  273.323179] Modules linked in:
[  273.326303] CPU: 0 PID: 1475 Comm: perf Not tainted 6.6.0-rc3+ #9
[  273.332521] Hardware name: Sophgo Mango (DT)
[  273.336878] epc : riscv_pmu_ctr_get_width_mask+0x8/0x62
[  273.342291]  ra : pmu_sbi_ovf_handler+0x2e0/0x34e
[  273.347091] epc : ffffffff80aecd98 ra : ffffffff80aee056 sp : fffffff6e36928b0
[  273.354454]  gp : ffffffff821f82d0 tp : ffffffd90c353200 t0 : 0000002ade4f9978
[  273.361815]  t1 : 0000000000504d55 t2 : ffffffff8016cd8c s0 : fffffff6e3692a70
[  273.369180]  s1 : 0000000000000020 a0 : 0000000000000000 a1 : 00001a8e81800000
[  273.376540]  a2 : 0000003c00070198 a3 : 0000003c00db75a4 a4 : 0000000000000015
[  273.383901]  a5 : ffffffd7ff8804b0 a6 : 0000000000000015 a7 : 000000000000002a
[  273.391327]  s2 : 000000000000ffff s3 : 0000000000000000 s4 : ffffffd7ff8803b0
[  273.398773]  s5 : 0000000000504d55 s6 : ffffffd905069800 s7 : ffffffff821fe210
[  273.406139]  s8 : 000000007fffffff s9 : ffffffd7ff8803b0 s10: ffffffd903f29098
[  273.413660]  s11: 0000000080000000 t3 : 0000000000000003 t4 : ffffffff8017a0ca
[  273.421022]  t5 : ffffffff8023cfc2 t6 : ffffffd9040780e8
[  273.426437] status: 0000000200000100 badaddr: 0000000000000098 cause: 000000000000000d
[  273.434512] [<ffffffff80aecd98>] riscv_pmu_ctr_get_width_mask+0x8/0x62
[  273.441169] [<ffffffff80076bd8>] handle_percpu_devid_irq+0x98/0x1ee
[  273.447562] [<ffffffff80071158>] generic_handle_domain_irq+0x28/0x36
[  273.454151] [<ffffffff8047a99a>] riscv_intc_irq+0x36/0x4e
[  273.459659] [<ffffffff80c944de>] handle_riscv_irq+0x4a/0x74
[  273.465442] [<ffffffff80c94c48>] do_irq+0x62/0x92
[  273.470360] Code: 0420 60a2 6402 5529 0141 8082 0013 0000 0013 0000 (6d5c) b783
[  273.477921] ---[ end trace 0000000000000000 ]---
[  273.482630] Kernel panic - not syncing: Fatal exception in interrupt

Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Signed-off-by: Fei Wu <fei2.wu@intel.com>
Link: https://lore.kernel.org/r/20240228115425.2613856-1-fei2.wu@intel.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:20:00 -08:00
Samuel Holland
680945f0aa
MAINTAINERS: Update SiFive driver maintainers
Add myself as a maintainer for the various SiFive drivers, since I have
been performing cleanup activity on these drivers and reviewing patches
to them for a while now. Remove Palmer as a maintainer, as he is focused
on overall RISC-V architecture support.

Collapse some duplicate entries into the main SiFive drivers entry:
 - Conor is already maintainer of standalone cache drivers as a whole,
   and these files are also covered by the "sifive" file name regex.
 - Paul's git tree has not been updated since 2018, and all file names
   matching the "fu540" pattern also match the "sifive" pattern.
 - Green has not been active on the LKML for a couple of years.

Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Acked-by: Paul Walmsley <paul.walmsley@sifive.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Link: https://lore.kernel.org/r/20240215234941.1663791-1-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-02-29 10:18:30 -08:00
Maciej Strozek
c9e1e505cd mfd: cs42l43: Fix wrong register defaults
A few regs have unnecessary values in defaults, change them to match the
datasheet

Fixes: ace6d14481 ("mfd: cs42l43: Add support for cs42l43 core driver")

Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20240229155616.118457-1-mstrozek@opensource.cirrus.com
Signed-off-by: Lee Jones <lee@kernel.org>
2024-02-29 17:54:42 +00:00
Fabien Parent
79d98102a3 mfd: mt6397-core: Register mt6357 sound codec
Add MT6357 codec entry in the MFD driver.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Signed-off-by: Alexandre Mergnat <amergnat@baylibre.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20240226-audio-i350-v1-13-4fa1cea1667f@baylibre.com
Signed-off-by: Lee Jones <lee@kernel.org>
2024-02-29 17:44:49 +00:00
Avadhut Naik
8ec7071385 ACPI: APEI: Skip initialization of GHES_ASSIST structures for Machine Check Architecture
To support GHES_ASSIST on Machine Check Architecture (MCA) error sources,
a set of GHES structures is provided by the system firmware for each MCA
error source. Each of these sets consists of a GHES structure for each MCA
bank on each logical CPU, with all structures of a set sharing a common
Related Source ID, equal to the Source ID of one of the MCA error source
structures.[1] On SOCs with large core counts, this typically equates to
tens of thousands of GHES_ASSIST structures for MCA under
"/sys/bus/platform/drivers/GHES".

Support for GHES_ASSIST however, hasn't been implemented in the kernel. As
such, the information provided through these structures is not consumed by
Linux. Moreover, these GHES_ASSIST structures for MCA, which are supposed
to provide supplemental information in context of an error reported by
hardware, are setup as independent error sources by the kernel during HEST
initialization.

Additionally, if the Type field of the Notification structure, associated
with these GHES_ASSIST structures for MCA, is set to Polled, the kernel
sets up a timer for each individual structure. The duration of the timer
is derived from the Poll Interval field of the Notification structure. On
SOCs with high core counts, this will result in tens of thousands of
timers expiring periodically causing unnecessary preemptions and wastage
of CPU cycles. The problem will particularly intensify if Poll Interval
duration is not sufficiently high.

Since GHES_ASSIST support is not present in kernel, skip initialization
of GHES_ASSIST structures for MCA to eliminate their performance impact.

[1] ACPI specification 6.5, section 18.7

Signed-off-by: Avadhut Naik <avadhut.naik@amd.com>
Reviewed-by: Yazen Ghannam <yazen.ghannam@amd.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-02-29 18:34:40 +01:00
Roger Quadros
e9f06bd428 dt-bindings: mfd: syscon: Add ti,am62-usb-phy-ctrl compatible
Add the compatible for TI AM62 USB PHY Control register. This
register is found in the TI AM62 WKUP_CTRL_MMR0 space [1]. It
is used to indicate the USB PHY PLL reference clock rate and
core voltage level to the USB controller.

[1] - https://www.ti.com/lit/pdf/spruiv7

Signed-off-by: Roger Quadros <rogerq@kernel.org>
Acked-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20240226-b4-for-v6-5-am62-usb-typec-dt-v6-1-acf77fff4344@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2024-02-29 17:16:19 +00:00
Christophe Leroy
3d6423ef8d kunit: Fix again checksum tests on big endian CPUs
Commit b38460bc46 ("kunit: Fix checksum tests on big endian CPUs")
fixed endianness issues with kunit checksum tests, but then
commit 6f4c45cbcb ("kunit: Add tests for csum_ipv6_magic and
ip_fast_csum") introduced new issues on big endian CPUs. Those issues
are once again reflected by the warnings reported by sparse.

So, fix them with the same approach, perform proper conversion in
order to support both little and big endian CPUs. Once the conversions
are properly done and the right types used, the sparse warnings are
cleared as well.

Reported-by: Erhard Furtner <erhard_f@mailbox.org>
Fixes: 6f4c45cbcb ("kunit: Add tests for csum_ipv6_magic and ip_fast_csum")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Tested-by: Charlie Jenkins <charlie@rivosinc.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Link: https://lore.kernel.org/r/73df3a9e95c2179119398ad1b4c84cdacbd8dfb6.1708684443.git.christophe.leroy@csgroup.eu
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-02-29 09:16:02 -08:00
Geert Uytterhoeven
d3dc362b3a dt-bindings: mfd: dlg,da9063: Make #interrupt-cells required
'#interrupt-cells' is a required provided for interrupt providers,
hence make it required.

While at it, move '#interrupt-cells' in the example to match common sort
order.

Fixes: 361104b056 ("dt-bindings: mfd: Convert da9063 to yaml")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/f512045738d2102c771a171a514ed7cf612c6d6f.1708944455.git.geert+renesas@glider.be
Signed-off-by: Lee Jones <lee@kernel.org>
2024-02-29 17:15:26 +00:00
Jakub Kicinski
244b96c231 bluetooth pull request for net:
- mgmt: Fix limited discoverable off timeout
  - hci_qca: Set BDA quirk bit if fwnode exists in DT
  - hci_bcm4377: do not mark valid bd_addr as invalid
  - hci_sync: Check the correct flag before starting a scan
  - Enforce validation on max value of connection interval
  - hci_sync: Fix accept_list when attempting to suspend
  - hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST
  - Avoid potential use-after-free in hci_error_reset
  - rfcomm: Fix null-ptr-deref in rfcomm_check_security
  - hci_event: Fix wrongly recorded wakeup BD_ADDR
  - qca: Fix wrong event type for patch config command
  - qca: Fix triggering coredump implementation
 -----BEGIN PGP SIGNATURE-----
 
 iQJNBAABCAA3FiEE7E6oRXp8w05ovYr/9JCA4xAyCykFAmXfSTQZHGx1aXoudm9u
 LmRlbnR6QGludGVsLmNvbQAKCRD0kIDjEDILKd2UD/4jJaoGygVTAlthLkllVEOu
 mC52iXLpuxVfjIsHHMKPh4ysxTid4Zx0zijM7wLuZc7rCnOSw8Sdu72Mmm0q8Hcx
 hxkp731oB0jDKUt9DMXBasNF/Gk10BubD79oy+rZx4D2lKNJoUgktbtyp+3rFo7b
 2GdpxThYGz4UiiCVgZbMTv/kBzQvZPP/Dd/i+9dXq9sxDAi40bJcnT9o1/XLtEpN
 Ctz482PLqANkBvkmqUOx5SkeA1GcvlcNd9jDU2Ou/vwpHTAQk10RxFIr+ywV2PVI
 wieUAlD5OadlpDw1+0a6qz80MOEZg5I5qIpJ71h19KrMkWUlxOIomAKxjam6yUCb
 GSykO9pU18Q247++V3YPdbSLclgsjnxVWDThI7gp5JRXsjPW3g7taV2T6S4Q6s3r
 7f6FANeCYSL4sydnySXindwD3z8qsNqvCMblGrNM71COn9tv70Jyy6jZpqO+TttH
 AnVH5EgAUjpKN+3ePicRioeZ6rpr651hmz/PNPbjMggUMxQebz4Bpri9gO8YeW0A
 ksZVDfEXnuS0ev/uQKUEt/Fl+GiI64+QlipAFMPkgvQ1DtnEAYSzTYADKT6Owtuy
 J8tvehnjc+0c7RIpXAt5/yVWeMdHZvr06udVvglSSmJ/ZzeFU4UVdTNb5mbaL3rV
 9XNB4YyjMXmvEVR4/VhuGw==
 =ZpLZ
 -----END PGP SIGNATURE-----

Merge tag 'for-net-2024-02-28' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth

Luiz Augusto von Dentz says:

====================
bluetooth pull request for net:

 - mgmt: Fix limited discoverable off timeout
 - hci_qca: Set BDA quirk bit if fwnode exists in DT
 - hci_bcm4377: do not mark valid bd_addr as invalid
 - hci_sync: Check the correct flag before starting a scan
 - Enforce validation on max value of connection interval
 - hci_sync: Fix accept_list when attempting to suspend
 - hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST
 - Avoid potential use-after-free in hci_error_reset
 - rfcomm: Fix null-ptr-deref in rfcomm_check_security
 - hci_event: Fix wrongly recorded wakeup BD_ADDR
 - qca: Fix wrong event type for patch config command
 - qca: Fix triggering coredump implementation

* tag 'for-net-2024-02-28' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth:
  Bluetooth: qca: Fix triggering coredump implementation
  Bluetooth: hci_qca: Set BDA quirk bit if fwnode exists in DT
  Bluetooth: qca: Fix wrong event type for patch config command
  Bluetooth: Enforce validation on max value of connection interval
  Bluetooth: hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST
  Bluetooth: mgmt: Fix limited discoverable off timeout
  Bluetooth: hci_event: Fix wrongly recorded wakeup BD_ADDR
  Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security
  Bluetooth: hci_sync: Fix accept_list when attempting to suspend
  Bluetooth: Avoid potential use-after-free in hci_error_reset
  Bluetooth: hci_sync: Check the correct flag before starting a scan
  Bluetooth: hci_bcm4377: do not mark valid bd_addr as invalid
====================

Link: https://lore.kernel.org/r/20240228145644.2269088-1-luiz.dentz@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-02-29 09:10:24 -08:00
Jakub Kicinski
8f5afe4114 Merge branch 'tls-a-few-more-fixes-for-async-decrypt'
Sabrina Dubroca says:

====================
tls: a few more fixes for async decrypt

The previous patchset [1] took care of "full async". This adds a few
fixes for cases where only part of the crypto operations go the async
route, found by extending my previous debug patch [2] to do N
synchronous operations followed by M asynchronous ops (with N and M
configurable).

[1] https://patchwork.kernel.org/project/netdevbpf/list/?series=823784&state=*
[2] https://lore.kernel.org/all/9d664093b1bf7f47497b2c40b3a085b45f3274a2.1694021240.git.sd@queasysnail.net/
====================

Link: https://lore.kernel.org/r/cover.1709132643.git.sd@queasysnail.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-02-29 09:07:19 -08:00
Sabrina Dubroca
13114dc554 tls: fix use-after-free on failed backlog decryption
When the decrypt request goes to the backlog and crypto_aead_decrypt
returns -EBUSY, tls_do_decryption will wait until all async
decryptions have completed. If one of them fails, tls_do_decryption
will return -EBADMSG and tls_decrypt_sg jumps to the error path,
releasing all the pages. But the pages have been passed to the async
callback, and have already been released by tls_decrypt_done.

The only true async case is when crypto_aead_decrypt returns
 -EINPROGRESS. With -EBUSY, we already waited so we can tell
tls_sw_recvmsg that the data is available for immediate copy, but we
need to notify tls_decrypt_sg (via the new ->async_done flag) that the
memory has already been released.

Fixes: 8590541473 ("net: tls: handle backlogging of crypto requests")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Link: https://lore.kernel.org/r/4755dd8d9bebdefaa19ce1439b833d6199d4364c.1709132643.git.sd@queasysnail.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-02-29 09:07:16 -08:00
Sabrina Dubroca
41532b785e tls: separate no-async decryption request handling from async
If we're not doing async, the handling is much simpler. There's no
reference counting, we just need to wait for the completion to wake us
up and return its result.

We should preferably also use a separate crypto_wait. I'm not seeing a
UAF as I did in the past, I think aec7961916 ("tls: fix race between
async notify and socket close") took care of it.

This will make the next fix easier.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Link: https://lore.kernel.org/r/47bde5f649707610eaef9f0d679519966fc31061.1709132643.git.sd@queasysnail.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-02-29 09:07:16 -08:00
Sabrina Dubroca
6caaf10442 tls: fix peeking with sync+async decryption
If we peek from 2 records with a currently empty rx_list, and the
first record is decrypted synchronously but the second record is
decrypted async, the following happens:
  1. decrypt record 1 (sync)
  2. copy from record 1 to the userspace's msg
  3. queue the decrypted record to rx_list for future read(!PEEK)
  4. decrypt record 2 (async)
  5. queue record 2 to rx_list
  6. call process_rx_list to copy data from the 2nd record

We currently pass copied=0 as skip offset to process_rx_list, so we
end up copying once again from the first record. We should skip over
the data we've already copied.

Seen with selftest tls.12_aes_gcm.recv_peek_large_buf_mult_recs

Fixes: 692d7b5d1f ("tls: Fix recvmsg() to be able to peek across multiple records")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Link: https://lore.kernel.org/r/1b132d2b2b99296bfde54e8a67672d90d6d16e71.1709132643.git.sd@queasysnail.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-02-29 09:07:16 -08:00
Sabrina Dubroca
f7fa16d498 tls: decrement decrypt_pending if no async completion will be called
With mixed sync/async decryption, or failures of crypto_aead_decrypt,
we increment decrypt_pending but we never do the corresponding
decrement since tls_decrypt_done will not be called. In this case, we
should decrement decrypt_pending immediately to avoid getting stuck.

For example, the prequeue prequeue test gets stuck with mixed
modes (one async decrypt + one sync decrypt).

Fixes: 94524d8fc9 ("net/tls: Add support for async decryption of tls records")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Link: https://lore.kernel.org/r/c56d5fc35543891d5319f834f25622360e1bfbec.1709132643.git.sd@queasysnail.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-02-29 09:07:16 -08:00
Arnd Bergmann
b1208c4343 arm64: tegra: Device tree changes for v6.9-rc1
This set of changes refactors the audio-related device tree nodes on
 Tegra234 and improves USB support for Jetson AGX Xavier. Furthermore
 this consolidates SD/MMC aliases on Tegra234 and provides correct
 configuration data for the MGBE Ethernet devices found on Tegra234
 so that they can operate at full speed.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmXY11QACgkQ3SOs138+
 s6Hg5hAAjnK4X5fDwmDD882HBZCA87ikXSVxFzXFmjT/9Wu6I28YuNrL3LWCRAaJ
 btX0xAJzTnZGhxGUig1nC+i56oxBZt71u8t/ap0pXKQK/An3LFDoNCgd+08SWMb1
 aeCW5/VfZfuNpCTG8DRCPEqBPpgoiCNUSGbdKa0Xy9o2clY0GHvhFNmym5H0k+1A
 vHbJij/ByRDE1ffjfC6x+iCRS0BO1wlxmwSQKj6t/5TFKsYOuG/XsqCQ7C4yW67I
 MzyzQoQ1dWFGZUPm6DvXRz8Nl0gPxjy/1aI3cJRd7Q0U65TrC8IwVbQhfv8Eqc0W
 iUEXAvriEbKtZk3ocbdeZBy27hlCNCSJTba8l19hOh7qg0wC1+pyXIUDkX9UJ1xU
 svgh9eiw4v3wGtW+tz06X+dKn9FUcTwA8fiXzGjya2nJhOi2o1w/ciJZN6S1lahn
 vRYTyImxyE+nBkPmZuv2oSypxEHYz09vmcGZIYUN96EqfyMEyev/aIQG2KyJtC9c
 onpseos2vFUzp8TIn76z3MLDEJHLoebKrlxp0ZoFLGq25nHkcplASjvXoQ6wuzVu
 nclpwQQuJx0vWznno0YZbl1sQmiCNZTE1Zg9UyVGwQHesIwdIEvoZYQ1rsKnGHUx
 XpCpR/caZx8S4BrN56/1UzqJu10gJrlKfNZxpLrMHaMzoxqx6PM=
 =98Yi
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgtVAACgkQYKtH/8kJ
 UieIHBAAhPXau6VOLbw6rbo/kNP9Eu6g4kvMH0d2wklqfUX1crpEyNFtI6a+fLfw
 ITSQDTzICyQjGLWp+wW3mq8zSa++2lCke1xsSj6c77RFqvg09KLdjVPufnfY57ft
 8703q+GXHTd5QvHj332edrRq6HkrXo/Mh9P1f3bJr7SiXkdmccbi7aWffOAeM2Be
 TKi+FFzW5n7hAWdzBuFUyszvWnx4c/fx69arWAH0EYL1hyQ94lTBWX8CELQF5bW5
 9F05u0CVJ8ePsuw8duKngZnoa53k5lPNkemfdcjNN1WKZc8Eupt00ioHpctb7afE
 1ux2PLYOHTjqV01a1xnjrD4eZ7Oq8etw4tCb3GORu0tL+NCxgHiiyh5Sg/GY/CTm
 F/yl7/AunFgp5/ahegSk6RFswLbM2cEfaPSBexZiFPzonGXXaJb9V4zgSuNth6BN
 NzsexuVRohw4wZa1o9dfrnVsIguCHQIpVrBY7K6GDpTLlzynXD6hSyvZbg7r2O2l
 tmaU19e2eek7fteNEEmHKpvq38dyQaL7azRxxqAVZOsHvAaB3DJQxZrqXyNPem85
 eTSjVAdh5E1TXLJypD8ONn9U6daWvviYXPcOpdu9x22PqGS07fC8z/j1RLe0bAKw
 oo7qQwxTcqu/tqGIzs6APQky1UDS/nRJzFY5fGQS8X0ZsnFVG7c=
 =QB8Y
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-6.9-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt

arm64: tegra: Device tree changes for v6.9-rc1

This set of changes refactors the audio-related device tree nodes on
Tegra234 and improves USB support for Jetson AGX Xavier. Furthermore
this consolidates SD/MMC aliases on Tegra234 and provides correct
configuration data for the MGBE Ethernet devices found on Tegra234
so that they can operate at full speed.

* tag 'tegra-for-6.9-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  arm64: tegra: Remove Jetson Orin NX and Jetson Orin Nano DTSI
  arm64: tegra: Add audio support for Jetson Orin NX and Jetson Orin Nano
  arm64: tegra: Define missing IO ports
  arm64: tegra: Move AHUB ports to SoC DTSI
  arm64: tegra: Add USB Type-C controller for Jetson AGX Xavier
  arm64: tegra: Add USB device support for Jetson AGX Xavier
  arm64: tegra: Add current monitors for Jetson Xavier
  arm64: tegra: Add AXI configuration for Tegra234 MGBE
  arm64: tegra: Use consistent SD/MMC aliases on Tegra234
  arm64: tegra: Enable cros-ec-spi as wake source

Link: https://lore.kernel.org/r/20240223174849.1509465-5-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-02-29 17:48:15 +01:00
Arnd Bergmann
2d56bb99b6 ARM: tegra: Device tree changes for v6.9-rc1
Add support for the LG Optimus 4X HD and LG Optimus VU devices and clean
 up some minor issues.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmXY1mUACgkQ3SOs138+
 s6E7Lw/7BQTi/ofcVRVjp5TdVXUov3HkB7KeCxUfH+1J7KQxV2bP5LuuOunqBgAP
 E8We0pUp71tJHZV3uVzaLNv0IkDG9/ARuXGKQjdH20nN7ix9ubbEwofmx4INIUgN
 raFrTOg7DtFWsP1rputkfb7kXhv4XEe3lo52wH416l/HCaloJITyJCMYGkmWoaJU
 Up+XuwxB6TpbsUtqt8pZnUVCvOMAkz9L3i21MNmlbPmROH6o7riJHkjVo1Gq3iTl
 vAoKJZiMNRXWJEw+3/YCtd3ATa3/P5U+P1e6jS9SnmEJEISXna9C0qZWn6YJ8L+5
 3As+QClzyxSKMpHS6GdRiGVLgk/kIfsRC279Wv5RsxTGxRcECPTk+jh0fJOdgXYi
 hBALSQ5Leb9Ipq5NxP3DjRWraaN+ZCHVvtW3RJuunEAL8iu+G/wmAmuP+K2Hda5J
 cGoYc1XWnE+ASlK0lfv4/XDmL0WTTy5jlrvddEkAVPJn4s68f8SWCR/dS848ZxOW
 W2vaoWOWz1qUdNgfkgQ8zJK5Laseb/EGzS7BVQxmYwnEs3A/Ri6CVQZfeA19O4fP
 4Uufr13P4hdci8wal9v7s6lpig97c0zKGWqI+SFVBLGFNNYuh9bVQ9q1w85uOSwF
 ymSVvy+RP7h45PZY1Qnx2DvhiLBOK8hKYRsYZLWd/J5qmteDCBo=
 =c6vf
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgtQoACgkQYKtH/8kJ
 UicPKw/+LrmNzKQQLoWYT2/VEvSY463T9UvxIv4iYwVQRVyYT/ellmwBttjIkkIv
 ytrrJVJF7pqWPHn6a+EP9/cSWLDIF1i1P+rkR4toqvybnmOfiYPBmU1YUhcCVbJc
 a3QlZqtOUcmlsenWU11BGEYBTibVObDOF68xpzKYlqeTFW4ZIIUe1HxjOuH3/IYW
 vFy3BdhhMlgUYcfmUF6Mozc6sPQDlZFgXZ8Kul3m3WLeKTEKqfSXV1CRskirozOd
 1Isz4VnPc2uyq6U5LpfWLpWVHztwAe5tdcRC3RcsPweZyvbDR0hZ6QiU0RDto7Z0
 eCLIRcLw9soSgpOqPTIZW+PUr6ey57eFq8yGe59pyfOrilFYjSzOD611kEzyOaS4
 iFasuM4WHS4Pr5K8KdWpwi5vRF0L7hvWbVgomXBW9TPigKdlrgKPRPRVm4exKEI8
 h2D9TlN6SsmX15ffMX77ffa2TpEDJ0HgRGPd1yFgFXUNGs9OT/rk/FW2ujmQssnX
 +/EAURI+6vwew8J9Qo2QUflr8sDtkArzNR2pzTvwMVOiI+/2YBHQHPAvi5qh83cC
 8Uh8mManX8v2vfhMN5Vzr6cDtZtohC/ogJ7Ou5m/ld/TsD9OGFMTKT2vDq2jXDc4
 I2AfxJHHVKnDCYpYU/wv0jJXc4gTLsuhcMxsCBH95kjzMeCH1Oc=
 =y+q1
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-6.9-arm-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt

ARM: tegra: Device tree changes for v6.9-rc1

Add support for the LG Optimus 4X HD and LG Optimus VU devices and clean
up some minor issues.

* tag 'tegra-for-6.9-arm-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  ARM: tegra: Add device-tree for LG Optimus 4X HD (P880)
  ARM: tegra: Add device-tree for LG Optimus Vu (P895)
  ARM: tegra: nexus7: Add missing clock binding into sound node
  ARM: tegra: Enable cros-ec-spi as wake source

Link: https://lore.kernel.org/r/20240223174849.1509465-4-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-02-29 17:47:06 +01:00
Arnd Bergmann
44514c326c dt-bindings: Changes for v6.9-rc1
This contains device tree bindings additions for LG Optimus devices as
 well as cleanups for the PMC hardware block.
 -----BEGIN PGP SIGNATURE-----
 
 iQIyBAABCAAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmXY1e4ACgkQ3SOs138+
 s6E+Og/4gYi63k8VjbhzhMnr855ZEKWTh6VqXHU2ol/MAkV/ZBsky8jdgiKfqzWt
 GP80giHsPUEFqTGaT8Rxh/ikBWeaKzUJuP7SeCEdPZ/g16amn5ZKqNVlsEDdQZky
 OEY1QlX+dBHthYvJXAnh193MbmCLmt4t/0NNLHau5r0gQhY5OgZ2eJlKLO57OcUf
 pmp99O7SLWfH6sZdUqWqKrqMCZHxQWKvwj/Efj+qoL5lCFVpGzE4ZrUVu1TvrWYL
 BMSsGzy/cLOygo+MCR/qZDFjP4HjRmEAA27jQtLK0mbBY1QJpx3zpuSiGRhQox+n
 H6nRHS1Dq4OhDWlnNZc8z0seajgCVMljxVc3bavVqdUlpEuUBXymEN2b0hMctP5p
 iBCZCgajue5VAP0A4T9fBtja52nScjvvoJwWITa8Gc354JfrVKl/7zbZvaxxP5XB
 ubmEJO59ZgQKBX/C3cir3C9UO8p8seibIPJuC25/0U7ECl/ZMjwGU9UnfOcO/E4G
 LZRPL/oxI39rQXm1VyH2wT1vKKOiNGOgyLZaMi5G3QuytjV7DBo0QCnBJGHromhV
 ab2mQV5RCNYUc0uEKBX3mneAQ184qtQrCdpKRAlACtdCupUD/pFVVq4Xl+b9m5bp
 jCxZuauCdYIPil3BSBK0INayB0qDhixeBPTjsiDlfWR490bvvQ==
 =7E47
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgtNQACgkQYKtH/8kJ
 UicH6RAA0yBcsQlo0tZ3KU9XflLya8DrJYxIHAVD+B2k4HqXwTWg5ZiDONduC+uA
 AjY5QLrWRpLR3H2KXURBr5TU777XB0COxUN9/3EhZqQwUQoPD2olwpA6DJ6JEPgQ
 kn7vrzQVCna4DPs+nqh6fSoZ16UfZ35MBji3fSP8bjzjzvpz4AuZ5PN7v1c97eXz
 6RcM++mMoEp0MQR9pmtHGDqtANE0wAb0qAl48Jo+JKGcnxd8PsyddElGcdf1iJfV
 qIM/rYqZdHoBwnftAyASUBU3VVGq6dKwQ2bEuP1T0ONVV2LhNNvG/jarm9GeVuH0
 W+zRAC07u86iDpxNDAxwXgKjIDXwlFkTCY62FZUQiaX9qVc5EfBt2shbN00qxyhl
 0Non+NenBaolt094po/sfmW6+zWcbRwiYFl9IkIaV81wM0jkeyVRXUGc/Ffcbgws
 0XmpbZMZCHO3lw7AFccz2frr7BREVwlwTtUBYIGdom6ldLj2uvYouM1B1P1VZ/aI
 JMAtvWAO9pb0BhRmdQ+ldR3b3URO8j9lstJusxoT0OzBLyTcFJ+Bf/UTYHNIbqd8
 /SL7SVLAzH1ag7+wcvfO0C2N9MIWPIve0pR4IUy2NLaSKDjRbI0sFYy8iJ/GMpHo
 6Lb5TURPzsozf0B8q0ZqnTjjD4VZEisRZ9TrkRVif0sWhLgb02E=
 =WYO1
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-6.9-dt-bindings' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt

dt-bindings: Changes for v6.9-rc1

This contains device tree bindings additions for LG Optimus devices as
well as cleanups for the PMC hardware block.

* tag 'tegra-for-6.9-dt-bindings' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  dt-bindings: arm: tegra: Add LG Optimus Vu P895 and Optimus 4X P880
  dt-bindings: tegra: pmc: Update scratch as an optional aperture

Link: https://lore.kernel.org/r/20240223174849.1509465-3-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-02-29 17:46:12 +01:00
Arnd Bergmann
11e876b3c3 Renesas DTS updates for v6.9 (take two)
- Add pin control, I2C, GPIO, CA76 cluster, Ethernet, SD/MMC, DMA, and
     HyperFLASH/QSPI (RPC) support for the R-Car V4M SoC,
   - Add I2C EEPROM, Ethernet, eMMC, and QSPI FLASH support for the Gray
     Hawk Single development board,
   - Fix PCIe power on ULCB development boards equipped with the
     Shimafuji Kingfisher extension,
   - Add PSCI support for the RZ/G3S SoC,
   - Add camera support for the RZ/G2UL SMARC EVK development board,
   - Add display support for the RZ/G2L{,C} and RZ/V2L SoCs and SMARC EVK
     development boards,
   - Miscellaneous fixes and improvements,
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCZdh7QwAKCRCKwlD9ZEnx
 cDxcAQDLIZaS/ODio5p/KmIGwi/5tuY1dK/FOMwkmOuOvlTSSwD+PsYBDEhr98of
 Mz7woOMUnMh0/SbCgggd69u4KLnbwAs=
 =IcGX
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgtHIACgkQYKtH/8kJ
 UifE9Q/8Coa4FOLFWy9qzZAh1Fw/UZnUqp50vePr34xyhH5iOrajsQSP2ZAfRIoI
 jSk0DMr8WZEVvBa4YQ/nBCg6aJWtSrCAQcQ99FCtLnuId0XkfNNXgCWFNTadSCLQ
 lpDuMMCCEkkFn1AnRP8UcO4jC6uRn7nIKXaHRj/pVBwda+z34xEdsbYuIW7GPoVq
 385VCE0aLKqm/u6MpcuWlGwdKAAmO0FsnpFSZkoec71D2TmF1+miXTD4l/0Llhmh
 DBU6ms+WmQvpn5u8+RsVP2LawSoyok3vejXu2N6WhqIUozwVi6FWYBwaOnZD2EMa
 5FYhCosCpuJETBC3eh5/hT13onmZMiJqE056KKOB4oTFP7Mjr6HAQNPBZtmIF+Rh
 r3pgZ1p6QX1NrMie+jO6rsHxxJXvl/7Iy+4kH0tvzN2dPsmE36xbSnxA3CACA+66
 Ny17pwaVczLsp+FnbhEs8PVYVzfIPuzVq46aJTxVbNbfGK/mpex5ncoU2K6FkJCg
 0mKKjTeaf75jIYWCR395GeAdJ2DVl+IIEIXqE5me5I3Ug0FzVLDEWa+rPiKXAELf
 OC7HEWCoq2IZsiwvilv7v+OgRzX4EuRBy8Yf8IkDYxwMy7SDtmkfStIhrcCmuvsR
 jXK6L5fk9Z4yuhezNOXNJy5gb2KlRiO69tpnTdJyvR5x6nfwWzk=
 =fAmU
 -----END PGP SIGNATURE-----

Merge tag 'renesas-dts-for-v6.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt

Renesas DTS updates for v6.9 (take two)

  - Add pin control, I2C, GPIO, CA76 cluster, Ethernet, SD/MMC, DMA, and
    HyperFLASH/QSPI (RPC) support for the R-Car V4M SoC,
  - Add I2C EEPROM, Ethernet, eMMC, and QSPI FLASH support for the Gray
    Hawk Single development board,
  - Fix PCIe power on ULCB development boards equipped with the
    Shimafuji Kingfisher extension,
  - Add PSCI support for the RZ/G3S SoC,
  - Add camera support for the RZ/G2UL SMARC EVK development board,
  - Add display support for the RZ/G2L{,C} and RZ/V2L SoCs and SMARC EVK
    development boards,
  - Miscellaneous fixes and improvements,

* tag 'renesas-dts-for-v6.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel: (31 commits)
  arm64: dts: renesas: rzg2l-smarc: Enable DU and link with DSI
  arm64: dts: renesas: r9a07g054: Add DU node
  arm64: dts: renesas: r9a07g044: Add DU node
  arm64: dts: renesas: gray-hawk-single: Add QSPI FLASH support
  arm64: dts: renesas: r8a779h0: Add RPC node
  arm64: dts: renesas: r8a779h0: Add DMA support
  arm64: dts: renesas: gray-hawk-single: Add eMMC support
  arm64: dts: renesas: r8a779h0: Add SD/MMC node
  ARM: dts: renesas: r8a7778: Add missing reg-names to sound node
  arm64: dts: renesas: rzg2ul-smarc: Enable CRU, CSI support
  arm64: dts: renesas: gray-hawk-single: Add Ethernet support
  arm64: dts: renesas: r8a779h0: Add Ethernet-AVB support
  arm64: dts: renesas: r8a779g0: Correct avb[01] reg sizes
  arm64: dts: renesas: r8a779a0: Correct avb[01] reg sizes
  arm64: dts: renesas: r9a08g045: Add PSCI support
  arm64: dts: renesas: rzg3s-smarc-som: Guard Ethernet IRQ GPIO hogs
  arm64: dts: renesas: r9a08g045: Add missing interrupts to IRQC node
  arm64: dts: renesas: rzg2l: Add missing interrupts to IRQC nodes
  arm64: dts: renesas: r8a779h0: Add CA76 operating points
  arm64: dts: renesas: r8a779h0: Add CPU core clocks
  ...

Link: https://lore.kernel.org/r/cover.1708687134.git.geert+renesas@glider.be
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-02-29 17:44:34 +01:00
Arnd Bergmann
c860b6a65d Renesas DT binding updates for v6.9 (take two)
- Restore sort order,
   - Document preferred compatible naming,
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCZdh41QAKCRCKwlD9ZEnx
 cGX/AP9Obd3osciKNZkGGZ8FnhkscTbqAe49bQIyDp4UIvg0GwD8DDbtByylTvP3
 OibRWsXlNsFD1vL0T6YNJASer31eTwo=
 =6wyy
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgtEoACgkQYKtH/8kJ
 UicYqhAA1R+zxELkXovsWAtHsIvoULVud+KvGS1fYBuxwL5RB0ERWkdiQhdnvduV
 t9iby5B+0+POid7RssYAfkXOcMpzbyY0xPldvUwGXuClcvPeieGlnViXc3558GGf
 WkVIo0pWMG5RTeQwWY9OIhI1BBVGdskjvdsbk8GbilBweZPo6gFFmm/+/4bd5hx6
 A+HDYShqVR7rKROb+7oRqQlWHMfXH7KApnpvflm0XMF+aFPGT9WcMqvjw9wpVy9d
 dKB8yjAMr59fBNmFru6hkCFXhoRxFqAkow5FWaERm6UXApiKE9NuzIE9PaPAUkGh
 kPm3kKAaAWVjy7M44jKWJkeC+GvqfE7Dj5GcRo3PA+Cw2lIbJP5q0gvyr8RJ6Kz2
 MVdiJVYr6DZ7qx8H/0mDtxlOiadizTGuTMJnprwk2S/AHlDmTZvYg2Yv99jrOQdM
 TfHJbCiz+h037g/EmpDoP5okss1CmYBS7ukg9QXYenXYidUcDNhTaZw3xJl3j7Kr
 Mu0UYOOOydMhxwSgHSNcNRN9Jgl/AXWk1q0wtTBn+pcBGwqC4mqyo8Zy14nmDL5Y
 Pmt8jW7fSwfQCcvJ6iTyO612N13slrqttaSDa5ym8jYwLo8yFI2qywfc5Gp0DjqN
 D3B5S5it8KlxYLUehgMS/uBYaf3xnUHhs8mK+6VVIjBTJP0AZHQ=
 =tUxt
 -----END PGP SIGNATURE-----

Merge tag 'renesas-dt-bindings-for-v6.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt

Renesas DT binding updates for v6.9 (take two)

  - Restore sort order,
  - Document preferred compatible naming,

* tag 'renesas-dt-bindings-for-v6.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel:
  dt-bindings: renesas: Document preferred compatible naming
  dt-bindings: soc: renesas: Preserve the order of SoCs based on their part numbers

Link: https://lore.kernel.org/r/cover.1708687132.git.geert+renesas@glider.be
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-02-29 17:43:54 +01:00
Arnd Bergmann
55d81cd6a9 Display output for rk3128 and some adaptions to binding clarifications
for hdmi nodes on some older socs.
 -----BEGIN PGP SIGNATURE-----
 
 iQFEBAABCAAuFiEE7v+35S2Q1vLNA3Lx86Z5yZzRHYEFAmXWbt4QHGhlaWtvQHNu
 dGVjaC5kZQAKCRDzpnnJnNEdgdTCB/48V+E7OneY+Ly3i9p3Yh0IFaHjF21mIc31
 nBltNbVnQlIKybcBGxnzt+ZYqx9TIqM6zB+6OBh9DWYZg4WkEoV5pZeaDzMSjZlK
 UrIv6tlJdB4snZNOAPLHrmFbRS57m50dca/sZ9HqfGKmNQdt1nGTf2KYO/+IGImu
 CPya8BLpgnvgATJYus9TrxqGrc0mI0IL1gycFkFukNPBS7iIZ7eyDsK4vxZI0iYs
 RQ12NqbSDzriva7blaWk0f+6LBMGwu/zQs85d59HQPuuv3plWDiXqWNNBau1bQME
 vc+1QdZQMFe3ybOwYR0B//i0z/F+aqG2h7/TFDIMaVV0gPPxY3IA
 =Worw
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgtBAACgkQYKtH/8kJ
 UieraA//S/UcVI9iYTQIm2nb7HT9vgKJ7F3y5GjjSWL50mczcnN/1aCWTZBeCbwh
 jIZr785mgT4+Gnfc2RydzV7nfX0WbhWEjkFvEBZMA3PDPJCkqkquoN6wrcnLi2Op
 cKEH96bDt5R1p5TB0AqZfPfdJMBIZnYocbDgZvoU31RSpsQGge6ozfclpUk7wmqT
 N2o19aWVf3TABWTrPbsBDVN5Brwxp6QwSZsOiWqLdl5Cu2g/KfcWsWm8BkFLxzlo
 2crRp9g2C25cbwcrQ2QMABDJ3o8XY8l0pBhYPKBW6oXfjAdhgpC3wj+SwdoSYayS
 gdu6t7g7iH0O+97IqAu64nPX7gfgcPDILGBor7i8mk++tu70fWAz/HHBpLO+V+cd
 nbnunqxEQW7AtR0WL8w+0Iw5xiCNYXQ/4u7t8I5ElE3rnt9LrbvGr0QF1uVZAJcp
 HgpVGaFm1STeUSDK5uUb0DX5YtnhEN5Z9+VjN3nKtXP9aCPzAGXIYzUr0pPkBLk/
 DaNEwYXWU+q/0snns5MpLo0HRdc0lmIC1/bn+VUemJDwe8y6AftmfSbcZmRixkiG
 UdA78tYbbqp7ZZ3qVXbonMaKzrBAGcdjYlVyKr47iX0WRdVAi5vjlLDXVoITxNaP
 fDCb3bhgFwpdaFJYZt9J1l0CTOnVV8lO4CEBDUlXHrjlpXSgwBc=
 =Iqn0
 -----END PGP SIGNATURE-----

Merge tag 'v6.9-rockchip-dts32-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt

Display output for rk3128 and some adaptions to binding clarifications
for hdmi nodes on some older socs.

* tag 'v6.9-rockchip-dts32-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip:
  ARM: dts: rockchip: fix rk322x hdmi ports node
  ARM: dts: rockchip: fix rk3288 hdmi ports node
  ARM: dts: rockchip: Enable HDMI output for XPI-3128
  ARM: dts: rockchip: Add HDMI node for RK3128
  ARM: dts: rockchip: Add display subsystem for RK3128

Link: https://lore.kernel.org/r/37970455.XM6RcZxFsP@diego
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-02-29 17:42:56 +01:00
Arnd Bergmann
a184d9835a tick/sched: Fix build failure for CONFIG_NO_HZ_COMMON=n
In configurations with CONFIG_TICK_ONESHOT but no CONFIG_NO_HZ or
CONFIG_HIGH_RES_TIMERS, tick_sched_timer_dying() is stubbed out,
but still defined as a global function as well:

kernel/time/tick-sched.c:1599:6: error: redefinition of 'tick_sched_timer_dying'
 1599 | void tick_sched_timer_dying(int cpu)
      |      ^
kernel/time/tick-sched.h:111:20: note: previous definition is here
  111 | static inline void tick_sched_timer_dying(int cpu) { }
      |                    ^

This configuration only appears with ARM CONFIG_ARCH_BCM_MOBILE,
which should not actually select CONFIG_TICK_ONESHOT.

Adjust the #ifdef for the stub to match the condition for building the
tick-sched.c file for consistency with the definition and to avoid
the build regression.

Fixes: 3aedb7fcd8 ("tick/sched: Remove useless oneshot ifdeffery")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240228123850.3499024-1-arnd@kernel.org
2024-02-29 17:41:29 +01:00
Jaegeuk Kim
4d4c593893 f2fs: fix write pointers all the time
Even if the roll forward recovery stopped due to any error, we have to fix
the write pointers in order to mount the disk from the previous checkpoint.

Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:35 -08:00
Jaegeuk Kim
7af2df0f67 f2fs: check number of blocks in a current section
In cfd66bb715 ("f2fs: fix deadloop in foreground GC"), we needed to check
the number of blocks in a section instead of the segment.

Fixes: cfd66bb715 ("f2fs: fix deadloop in foreground GC")
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:34 -08:00
Jaegeuk Kim
de25240756 f2fs: prevent an f2fs_gc loop during disable_checkpoint
Don't get stuck in the f2fs_gc loop while disabling checkpoint. Instead, we have
a time-based management.

Reviewed-by: Chao Yu <chao@kernel.org>
Reviewed-by: Daeho Jeong <daehojeong@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:34 -08:00
Chao Yu
8b10d36537 f2fs: introduce FAULT_NO_SEGMENT
Use it to simulate no free segment case during block allocation.

Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:34 -08:00
Chao Yu
ea59b12ac6 f2fs: compress: fix to check compress flag w/ .i_sem lock
It needs to check compress flag w/ .i_sem lock, otherwise, compressed
inode may be disabled after the check condition, it's not needed to
set compress option on non-compress inode.

Fixes: e1e8debec6 ("f2fs: add F2FS_IOC_SET_COMPRESS_OPTION ioctl")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:34 -08:00
Chao Yu
7d009e048d f2fs: fix to handle segment allocation failure correctly
If CONFIG_F2FS_CHECK_FS is off, and for very rare corner case that
we run out of free segment, we should not panic kernel, instead,
let's handle such error correctly in its caller.

Signed-off-by: Chao Yu <chao@kernel.org>
Tested-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:34 -08:00
Zhiguo Niu
f9e28904e6 f2fs: stop checkpoint when get a out-of-bounds segment
There is low probability that an out-of-bounds segment will be got
on a small-capacity device. In order to prevent subsequent write requests
allocating block address from this invalid segment, which may cause
unexpected issue, stop checkpoint should be performed.

Also introduce a new stop cp reason: STOP_CP_REASON_NO_SEGMENT.

Note, f2fs_stop_checkpoint(, false) is complex and it may sleep, so we should
move it outside segmap_lock spinlock coverage in get_new_segment().

Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:34 -08:00
Chao Yu
e24e8333d0 f2fs: delete f2fs_get_new_segment() declaration
Commit 093749e296 ("f2fs: support age threshold based garbage
collection") added this declaration, but w/ definition, delete
it.

Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-02-29 08:34:33 -08:00
Hsin-Yi Wang
c958e86e9c drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip
It's possible that mtk_crtc->event is NULL in
mtk_drm_crtc_finish_page_flip().

pending_needs_vblank value is set by mtk_crtc->event, but in
mtk_drm_crtc_atomic_flush(), it's is not guarded by the same
lock in mtk_drm_finish_page_flip(), thus a race condition happens.

Consider the following case:

CPU1                              CPU2
step 1:
mtk_drm_crtc_atomic_begin()
mtk_crtc->event is not null,
                                  step 1:
                                  mtk_drm_crtc_atomic_flush:
                                  mtk_drm_crtc_update_config(
                                      !!mtk_crtc->event)
step 2:
mtk_crtc_ddp_irq ->
mtk_drm_finish_page_flip:
lock
mtk_crtc->event set to null,
pending_needs_vblank set to false
unlock
                                  pending_needs_vblank set to true,

                                  step 2:
                                  mtk_crtc_ddp_irq ->
                                  mtk_drm_finish_page_flip called again,
                                  pending_needs_vblank is still true
                                  //null pointer

Instead of guarding the entire mtk_drm_crtc_atomic_flush(), it's more
efficient to just check if mtk_crtc->event is null before use.

Fixes: 119f517362 ("drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.")
Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20240223212404.3709690-1-hsinyi@chromium.org/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
2024-02-29 16:15:28 +00:00
David Howells
99afb28c67 rxrpc: Move rxrpc_send_ACK() to output.c with rxrpc_send_ack_packet()
Move rxrpc_send_ACK() to output.c to so that it is with
rxrpc_send_ack_packet() prior to merging the two.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:50:00 +00:00
David Howells
a1c9af4d44 rxrpc: Don't pick values out of the wire header when setting up security
Don't pick values out of the wire header in rxkad when setting up DATA
packet security, but rather use other sources.  This makes it easier to get
rid of txb->wire.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:59 +00:00
David Howells
44125d5aad rxrpc: Split up the DATA packet transmission function
Split (sub)packet preparation and timestamping out of the DATA packet
transmission function to make it easier to glue multiple txbufs together
into a jumbo DATA packet.  This will require preparation and timestamping
of all the subpackets in a txbuf, and these functions provide convenient
points to place the required iteration.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:59 +00:00
David Howells
ff342bdc59 rxrpc: Add a kvec[] to the rxrpc_txbuf struct
Add a kvec[] to the rxrpc_txbuf struct to point to the contributory buffers
for a packet.  Start with just a single element for now, but this will be
expanded later.

Make the ACK sending function use it, which means that rxrpc_fill_out_ack()
doesn't need to return the size of the sack table, padding and trailer.

Make the data sending code use it, both in where sendmsg() packages code up
into txbufs and where those txbufs are transmitted.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:59 +00:00
David Howells
1ac6a8536c rxrpc: Merge together DF/non-DF branches of data Tx function
Merge together the DF and non-DF branches of the transmission function and
always set the flag to the right thing before transmitting.  If we see
-EMSGSIZE from udp_sendmsg(), turn off DF and retry.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:58 +00:00
David Howells
d32636982c rxrpc: Do lazy DF flag resetting
Don't reset the DF flag after transmission, but rather set it when needed
since it should be a fast op now that we call IP directly.

This includes turning it off for RESPONSE packets and, for the moment, ACK
packets.  In future, we will need to turn it on for ACK packets used to do
path MTU discovery.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:58 +00:00
David Howells
693f9c13ec rxrpc: Remove atomic handling on some fields only used in I/O thread
call->tx_transmitted and call->acks_prev_seq don't need to be managed with
cmpxchg() and barriers as it's only used within the singular I/O thread.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:58 +00:00
David Howells
d73f3a7488 rxrpc: Strip barriers and atomics off of timer tracking
Strip the atomic ops and barriering off of the call timer tracking as this
is handled solely within the I/O thread, except for expect_term_by which is
set by sendmsg().

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:57 +00:00
David Howells
17469ae058 rxrpc: Fix the names of the fields in the ACK trailer struct
From AFS-3.3 a trailer containing extra info was added to the ACK packet
format - but AF_RXRPC has the names of some of the fields mixed up compared
to other AFS implementations.

Rename the struct and the fields to make them match.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:57 +00:00
David Howells
41b8debba7 rxrpc: Note cksum in txbuf
Add a field to rxrpc_txbuf in which to store the checksum to go in the
header as this may get overwritten in the wire header struct when
transmitting as part of a jumbo packet.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:57 +00:00
David Howells
12bdff73a1 rxrpc: Convert rxrpc_txbuf::flags into a mask and don't use atomics
Convert the transmission buffer flags into a mask and use | and & rather
than bitops functions (atomic ops are not required as only the I/O thread
can manipulate them once submitted for transmission).

The bottom byte can then correspond directly to the Rx protocol header
flags.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
2024-02-29 15:49:56 +00:00