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>
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>
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>
- 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>
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
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>
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>
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>
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>
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>
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>
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>
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>
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>
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
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
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
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
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
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
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
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
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
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
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
Each Rx protocol packet contains a per-connection monotonically increasing
serial number used to correlate outgoing messages with their replies -
something that can be used for RTT calculation.
Note this value in the rxrpc_txbuf struct in addition to the wire header
and then log it in the rxrpc_retransmit trace for reference.
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
- Use the "mtd-rom" compatible for the Realview ROM
- Fix up two VGA connector cells and labels
- Fix up the Cortex spelling
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmXWedgACgkQQRCzN7AZ
XXPplg/+IZaEpq/diyrYylaaU4yHuMJBPcY5B29TDLKK6ZSWGYoN1yfvvKdtCaAc
Gn8mkLUgctDbYVXqbnlAQtaEYLUKj3xu7jwPgs2tUVr9qnqRWiXjbd0M2V4I1yvu
c1zMT7ca/HlZF9AMT9yNGS8mRWLBkePMSI6bfktwymWRTOJ3Z1xeKUIBFBf8QW5Q
3wClEHDxcK2ACHmAnUXVbvsv3FBdt3z/GTFSF+fd6WH2mafuzAHCbS6ygRLsnbUz
aURM0W/lEJxMRPC8Kr4vI41Ot9A+8haBd79bjHXsf516Dxd/GvAf5eA2/4IscX3f
E78PK9UsB2RZMsL0gNQQBsCR/WGT94N/8ltyWtSBvVhefr81Z1z9jC7pAFtq7Bm1
m/l4eJo3xMtvp1Cs9QZRmETxVaAAtOyRby4prdoKA1BeLNa2RG1OaGyfpQCSp6oj
ignFckpPNXvpwLOSaJOWJyUwZSAYv+rcUZPrUtjrMfvLZjnTwT93Rz/QTLdW7ilv
s0wulpP9RY72VdQu64iebMa9pz7v1dkXlV/LKmfGdcY8VotHYuLhzEIyBQDvEarC
NJhWGhVXgPtyJ62n3iKywkcS8fneCU+UytQLgsafQRHu9om5Uybtcx0Dd5F9u6g/
Li6XTgPKvxxd+kO52H+H/TGuRoH1F5rca2si6BWgTjdhxqKQsZc=
=hncO
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgoLIACgkQYKtH/8kJ
UieymxAAh3qf5NZEgX/wzBFWg7HZau8HUupke+GcOn0c8LXrw1eD8jJCfHiR7FoM
wk/P+kb7LA/wSzYN7Z5fVp/TxRYeaHJXTwOejUwZP0TX2GMGSDmXNhZyxXXx7J4X
Y1RBPLWa9RPYeHRktqoz6ASG0TEdX/gAyx+jJY2SJRhtUg4Si0lYHPqutWjaMX6a
JVF7korL2Pf/tv6N2oOVSSDVYbu5v28T9P9gzKXS/CZpFL38N8WO1W2h2WWG/BM4
mKBtZckeTNjRt9Qdw00ZQIfvzGRAu2FBYwOpMWS0fThme0/hoK03VBUMEnO+kfFF
txW8ZozeFdpomKJWwGU71Ftmtsb5wVWsBuon83MmQIaK6Rsq9qaGtTFWGCSyxacU
9QJehMrEZJveZ6C2mLyV4ElWdY0dh/I/PVtGXAAbBuDg5lELSkD5aZJx/GU1in1U
AtpP8WsqNmwaD0x4VcuGR3x9SieNSjvyG/02OxxcRzLi/1//SG9Jp1940JwWCD+1
brOi6aXvLrYQq7+2ku6XZ1kAHZXt3j8Konav+I2ILbn8H7e1dskoKoC5tSsOVdo7
JiJsYU9tvXkaLBV81M8zIC9w9BF1Z3Jiu65ctJWbHsd4ppl1xp+m2Iih6n4NTjGC
g5uwHGzJgmOSw6IVQEtU7ldCGnfvk9fRMQBUYttO2CVIHcX6UT0=
=Ah8J
-----END PGP SIGNATURE-----
Merge tag 'versatile-dts-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator into soc/dt
DTS fixes for the ARM Versatile boards:
- Use the "mtd-rom" compatible for the Realview ROM
- Fix up two VGA connector cells and labels
- Fix up the Cortex spelling
* tag 'versatile-dts-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator:
dt-bindings: arm: realview: Spelling s/ARM 11/Arm11/, s/Cortex A-/Cortex-A/
ARM: dts: integrator: Fix up VGA connector
ARM: dts: versatile: Fix up VGA connector
ARM: dts: arm: realview: Fix development chip ROM compatible value
Link: https://lore.kernel.org/r/CACRpkdaL6j6OdixHFHoMms4e=tXEw_6ynBMFb6m8=7KkVgEedA@mail.gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
- Fix the node names of the DSA switch in DIR-685.
- Fix the node names of the Vitesse DSA switches.
- Fix up the Wiligear compatible strings
- Use KEY_RESTART where applicable.
-----BEGIN PGP SIGNATURE-----
iQIyBAABCgAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmXV+ccACgkQQRCzN7AZ
XXNVCw/3XFUYTCF9hxV68KfWa+ejm6JcSXq49QT4h7qoIxx3oP+DcqffYyJYrMOO
CoEvRQP3PmGFix0PPGKXltiWnbS7qfG9KSL6dub7OKdMo3oX8I9ejw2KzGDDxrqR
XmGiGIrQuVsBPD382mxXOND3RyweJ1AyUJ8FDLOQ2DlxKIoeCQaJPKru3YdLRvfV
QlwEDxG014D1jdQ8Mv75is27ET932ggeeGs4ZrWFArFXD3768b0/5dXZkB9WPDNW
oZDhEHzl4QL543XkAj0xUX0zRF23XO5m+QBYUP5JTkTz7yA3kZzN1GftGMsR+FE8
jspNg8KARBYCN/mq3HFa0gFParN78Cm4mtF6LQRauiDwBFagZa2bBf3cPHCy7Cra
+WWXPlllXgdJbYYz+qbktkZsZLk5skbojJmL2egN3y+dVCmJyniXSMbCRLZeXIT9
0gmOjSGfqqxyWDumVPwG58nBvXhDU8fSq6Tf0esP5Y1VDAUhC9TcA6LD7rxDKFhs
HWHNvMBT53h+pfAUxnQkqrcmPQaBoAdbDjSi4uETeXOyO3CVYJ6nU4A2pASNDqb5
PIZ1kVXUuxsmZeM7b1RXe7ydiP8q3gs1Ros/uPBFA1bZoE+aCbwvv02pIJ2Pa9C9
JhqLIMjAiG5Bpg8gcTiE0OOIaAMRwZ/uYVwWVgiY8CbnBtAl7w==
=47BO
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgoHYACgkQYKtH/8kJ
UicudQ//Ssu30IGtfQUcqPNWTc/v3jBCUY+wtiedOQmk/DUtvCzVoREQ/ktT75HR
TBDgkSQFVB38ha7EUwcej+Bcm8/SrImzDOLRxqn+nMaZcoclzbyZ5inxidCNhIf7
Rf8xSmx3e8jltIyRP8oIPkFbaABpIsHraD9UqDr3DFXr/gUQzwYnT7vveol+xZ6p
FSLQcbgd2jLRLEGPnfS4wstrOsPcyNAWz1doW7GTJoRRo8EFge4hdmqo/sN+grts
0EBdqTlO9oZAmScfviR34StaWCMpAQ3Yn9knyQarEhIMTaWPS4QGpz3RstWGlL6/
bbm7mkO4aCgN4LC8ZPNMkeMphhu98UJp5SfWFcWGI3CA77OT8/ewr0knoaZ7tXq9
CtJw+bYxDO7TzJKO3oPx3W8M5jE3+7qupo5fA1ovXYBxTR2fXY8Qn1rcjanx3T+C
bzV+z2q3sIn8XEby85uKGF2RHO30HZasf/e1vqeYrRF2LbEsptoE8V0p/rnEn6sb
OvpPnMmYPNBWtceZ73iOXD5PDC83hfoLx3wguhUjy1B991UDRpt4i8ZPUeIWklRF
6xl1RyPUKPw5k/VbS044y1Qna7rVI/urMNBXGbfrPIeKnZSKpsA3lCcCO1g1UI8b
tvC9+j8ohQlCF9DMJXBkDnDGdXhKOe81/oitTBTXVSpbjbwySbY=
=O15M
-----END PGP SIGNATURE-----
Merge tag 'gemini-dts-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator into soc/dt
Gemini DTS changes for the v6.9 kernel:
- Fix the node names of the DSA switch in DIR-685.
- Fix the node names of the Vitesse DSA switches.
- Fix up the Wiligear compatible strings
- Use KEY_RESTART where applicable.
* tag 'gemini-dts-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator:
ARM: dts: gemini: Fix switch node names on Vitesse switches
ARM: dts: gemini: Map reset keys to KEY_RESTART
ARM: dts: gemini: Fix wiligear compatible strings
ARM: dts: gemini: Fix switch node names in the DIR-685
Link: https://lore.kernel.org/r/CACRpkdYQv9cyCZyjgQB4FTrxek9Hfu4EZ3syfHqHF7P6gzddvA@mail.gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This adds support for the following new machines:
- MT7981B: Xiaomi AX3000T
- MT7986A: Acelink EW-7886CAX
- MT7988A: BananaPi BPI-R4
- MT8186 Chromebooks: Tentacruel, Tentacool, Steelix, Rusty, Magneton
- MT8395/MT8195: Radxa NIO 12L
Also adds more support for the MediaTek MT8186 SoC's Video and JPEG
encoders and for MT7988 clocks, enables wakeup support for the CrOS
EC on SPI in all MediaTek Chromebooks, performs some cleanups and
includes some spare fixes.
-----BEGIN PGP SIGNATURE-----
iJ4EABYKAEYWIQQn3Xxr56ypAcSHzXSaNgTPrZeEeAUCZdNPiigcYW5nZWxvZ2lv
YWNjaGluby5kZWxyZWdub0Bjb2xsYWJvcmEuY29tAAoJEJo2BM+tl4R4XOYBAPIL
G/Y4jGNfCPPS4gFPt7y7WKG6nT270msgGFOFELszAP0WSpiOp0rBUS8oXY+NKchd
gxMuvBtfHE05/shSxasKBw==
=VN5r
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgn4YACgkQYKtH/8kJ
UicNaA/+NtgifoCRIko1BsATmNs5c/W5bBaU0w9NHhTDjFVHP6CZzEfFfkU5irK5
5cUZ8InXEa4/34YVcMHjHvuXhZ2jbrEHU7G1tR52z9wSQz8TQf5wiwgD+dCsFXaq
m43l3aArTQVGOgkdU4+U/AsGyNLR94snHaDXZPweVXTnPMBv9+FDObbIROvX7H6k
iRoEwfZuoaZj2gLX+RezhhqususwsnDMugBWRICgaaCGOuM07EWrmfgHUrujq9E/
nV+L2cBjjqDKqeKVL8wdznQz02uA4uWw/0jswwXd8AWyu1CSmOrb1mDlOnRGh02/
DvktM1mzIMMlnCZvbIxzqn/Pawsgo1t7aVO5LFUF5p1jYppzS+pUcIcmPi/Dq0K6
PDYlmj+70ieNqIur3BjHG1I4RAba01MDB5Ov5w6P8m+5AUTDMsA+6Z2xNR+QCGla
ca62a2KmQK0lvDZg3HHaVKCYNreV2QLP+7FukghpQ5x2TN1nGHFz2ZHedvcbxVPE
ol9IoB3qogSsCR7lSoYjthOzJl3yUBEjz5619jVBLkqGXQX1A7Dcdx9bs7zZ8tfl
3Bb5Yi+1EDH9Bk7UOE6FBA84HTpp5vU8YyWKdPR6s3mdZXKNrhepjajhPHfR2LuE
Pl4USZxL9pKMle/oB1oqsQH2vzIVqF7kgXPkRoHoNMM/oajkIX0=
=Ac61
-----END PGP SIGNATURE-----
Merge tag 'mtk-dts64-for-v6.9' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/dt
MediaTek ARM64 DeviceTree updates for v6.9
This adds support for the following new machines:
- MT7981B: Xiaomi AX3000T
- MT7986A: Acelink EW-7886CAX
- MT7988A: BananaPi BPI-R4
- MT8186 Chromebooks: Tentacruel, Tentacool, Steelix, Rusty, Magneton
- MT8395/MT8195: Radxa NIO 12L
Also adds more support for the MediaTek MT8186 SoC's Video and JPEG
encoders and for MT7988 clocks, enables wakeup support for the CrOS
EC on SPI in all MediaTek Chromebooks, performs some cleanups and
includes some spare fixes.
* tag 'mtk-dts64-for-v6.9' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux: (51 commits)
arm64: dts: mt8195-cherry-tomato: change watchdog reset boot flow
arm64: dts: mt7986: add port@5 as CPU port
arm64: dts: mt7622: add port@5 as CPU port
arm64: dts: mediatek: Replace deprecated extcon-usb-gpio id-gpio/vbus-gpio properties
arm64: dts: mediatek: replace underscores in node names
arm64: dts: mediatek: mt8186: Add missing xhci clock to usb controllers
arm64: dts: mediatek: mt8186: Add missing clocks to ssusb power domains
arm64: dts: mediatek: mt7622: add missing "device_type" to memory nodes
arm64: dts: mediatek: mt7986: reorder nodes
arm64: dts: mediatek: mt7986: reorder properties
arm64: dts: mediatek: Add Acelink EW-7886CAX
dt-bindings: arm64: dts: mediatek: Add Acelink EW-7886CAX access point
dt-bindings: vendor-prefixes: add acelink
arm64: dts: mediatek: Introduce the MT8395 Radxa NIO 12L board
dt-bindings: arm64: mediatek: Add MT8395 Radxa NIO 12L board compatible
arm64: dts: mediatek: mt8186: Add video decoder device nodes
arm64: dts: mediatek: mt8195: Add MTU3 nodes and correctly describe USB
arm64: dts: mediatek: Add MT8186 Magneton Chromebooks
arm64: dts: mediatek: Add MT8186 Steelix platform based Rusty
arm64: dts: mediatek: Introduce MT8186 Steelix
...
Link: https://lore.kernel.org/r/20240219131230.157792-1-angelogioacchino.delregno@collabora.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
1. Marvell MMP2: Very old issue, for which I sent patch back in 2014.
Patch was never picked up and now another try to fix the same
happened, so here it goes: use proper compatible MAX8925.
2. Marvell Dove: add proper unit-addresses.
3. TI DA850: add MMC interrupts.
4. STI: minor white-space fixes.
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmXSS6UQHGtyemtAa2Vy
bmVsLm9yZwAKCRDBN2bmhouD12z+EACatUsFDZvmp7OyzHHKYD79PDiFafeQ42g5
zlWhw28jKBJf656c8+57k9SLXgt6xBLtam10ebDYbn7nXJUoQiq5X8oaFdtvAqo8
nDtZBnPHgSH1mejLdBKzC/5JQYmIfheBvYxSFdhA5y1qIVL7/kAAfnQLMzOnwlSt
MNkY/gFaGz5djDRRa+2VAOxER1VDRV1wkKE0Ik3NSN6WQWDrcKbZnaiZHjQuRRca
9b52QQexFSHSd68qhtQqZiMYW7YgWD9xzpkuj87BdPBgO4zkrSJRTA2MpM4kVy6w
53HjXDQ+frNM7/CTwP7xDBqnJBUz9SHUyWlSNLE5f3/yC6t5zoQ7B1cGOwp6AzA6
PjXISyWIN98nvBGbmSGvw9C7duREZXwk4C/t3b5jp7Z0sixBW9OkwVuFcWoXaCQg
ib91iWUdZT8JwTH1Nu+hVlWezqZpyj7R/J20CKvEzUYc3rMpznC91OLQA9VcMDPJ
RVFU1FEj44Wzsl31wyCvOKmLeEmmbQVtaKygC9SFOi5Z0xQgSK1i+XtqxIl4UQ2g
zz2LVX3xf7H7OHGoISdEnq0L/P/u8cxWJ8OrzZfnDn2wPS7gPHJtn7sV2tylCT1W
OcJK4AWLPMQM0IjIFsBv0AkBHgLMLqMX3FTGahnX2QpXT1ZjFxc5GWlx721rOZ8b
6kOrRb0hRQ==
=YXMH
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXgnu4ACgkQYKtH/8kJ
UicOwxAA3pub77030UyFD7f6zAMn+tl0h5Bq+Lsgo5z5AprJezggQ672cUb7nMgF
OpDTg/oGiROe9665C7iUgaiZnBG8g2TT4G0+WbsH5K0PfZRk7Cbit68Ya4UWeStT
szt1ErDq4foxG7AwZsW3gazboHg4CjEKiP6IrhBy/NHC8A13q4lMdj/HKjclyVjl
XBbOegKPQiguwI2DcITrYCkwc3mPz7SE7V9ueiLal1+rc5PdpCuHEvmZ9DLmMlXF
46ANRGIpko746KARUCI2bUKZiaulhq8c9VqVNzgGrhm76k/Su6OjPp6koxdUO/oF
kD7f19RgTj92pEQuiobkZTbAMJfxrJJns+rzx9yE+Pvv63hXeLaVeJV9X1XgzJZI
l2w4X79vD6Q/+vGGSOXBhEDk+jS5j9ebeMC/qP/Zl1sybUpXNFqTvkvAKM+EbCgz
K8skxkGgOw9RTKR0slrwH5PxqDElnm4h56lrff7dRrdZjctcFUmqp1g20uUoG4p/
XrZBlLVtEwY4Is0bkSMCYsNx2vBoEFP9HM+rqfR+GgxqXV8T4YeYE5hSdScIUbn5
bzu2Mf2jGx0N4jVfxV55+Ti7Z3J/OfPqeJ4nKY5FCU2FHyxTLvQiKTZxgaUysWYS
4MnC2AabiJcmcK6M3GI3ht+aO2K5i7ybPTiqFsuDG9t+cLMcKTc=
=3tRR
-----END PGP SIGNATURE-----
Merge tag 'dt-cleanup-6.9' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into soc/dt
Minor improvements in ARM DTS for v6.9
1. Marvell MMP2: Very old issue, for which I sent patch back in 2014.
Patch was never picked up and now another try to fix the same
happened, so here it goes: use proper compatible MAX8925.
2. Marvell Dove: add proper unit-addresses.
3. TI DA850: add MMC interrupts.
4. STI: minor white-space fixes.
* tag 'dt-cleanup-6.9' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt:
ARM: dts: sti: minor whitespace cleanup around '='
ARM: dts: da850: add MMD SDIO interrupts
ARM: dts: marvell: dove-cubox: fix si5351 node names
arm: dts: marvell: Fix maxium->maxim typo in brownstone dts
Link: https://lore.kernel.org/r/20240218182656.32103-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Now that the BLOCKED and IDENTITY behaviors are managed with their own
domains change to the domain_alloc_paging() op.
For now SVA remains using the old interface, eventually it will get its
own op that can pass in the device and mm_struct which will let us have a
sane lifetime for the mmu_notifier.
Call arm_smmu_domain_finalise() early if dev is available.
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/16-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Instead of putting container_of() casts in the internals, use the proper
type in this call chain. This makes it easier to check that the two global
static domains are not leaking into call chains they should not.
Passing the smmu avoids the only caller from having to set it and unset it
in the error path.
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/15-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Consolidate some more code by having release call
arm_smmu_attach_dev_identity/blocked() instead of open coding this.
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/14-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Using the same design as the IDENTITY domain install an
STRTAB_STE_0_CFG_ABORT STE.
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/13-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Move to the new static global for identity domains. Move all the logic out
of arm_smmu_attach_dev into an identity only function.
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/12-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
The SVA code only works if the RID domain is a S1 domain and has already
installed the cdtable.
Originally the check for this was in arm_smmu_sva_bind() but when the op
was removed the test didn't get copied over to the new
arm_smmu_sva_set_dev_pasid().
Without the test wrong usage usually will hit a WARN_ON() in
arm_smmu_write_ctx_desc() due to a missing ctx table.
However, the next patches wil change things so that an IDENTITY domain is
not a struct arm_smmu_domain and this will get into memory corruption if
the struct is wrongly casted.
Fail in arm_smmu_sva_set_dev_pasid() if the STE does not have a S1, which
is a proxy for the STE having a pointer to the CD table. Write it in a way
that will be compatible with the next patches.
Fixes: 386fa64fd5 ("arm-smmu-v3/sva: Add SVA domain support")
Reported-by: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
Closes: https://lore.kernel.org/linux-iommu/2a828e481416405fb3a4cceb9e075a59@huawei.com/
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/11-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Introducing global statics which are of type struct iommu_domain, not
struct arm_smmu_domain makes it difficult to retain
arm_smmu_master->domain, as it can no longer point to an IDENTITY or
BLOCKED domain.
The only place that uses the value is arm_smmu_detach_dev(). Change things
to work like other drivers and call iommu_get_domain_for_dev() to obtain
the current domain.
The master->domain is subtly protecting the master->domain_head against
being unused as only PAGING domains will set master->domain and only
paging domains use the master->domain_head. To make it simple keep the
master->domain_head initialized so that the list_del() logic just does
nothing for attached non-PAGING domains.
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/10-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
The caller already has the domain, just pass it in. A following patch will
remove master->domain.
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/9-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Get closer to the IOMMU API ideal that changes between domains can be
hitless. The ordering for the CD table entry is not entirely clean from
this perspective.
When switching away from a STE with a CD table programmed in it we should
write the new STE first, then clear any old data in the CD entry.
If we are programming a CD table for the first time to a STE then the CD
entry should be programmed before the STE is loaded.
If we are replacing a CD table entry when the STE already points at the CD
entry then we just need to do the make/break sequence.
Lift this code out of arm_smmu_detach_dev() so it can all be sequenced
properly. The only other caller is arm_smmu_release_device() and it is
going to free the cdtable anyhow, so it doesn't matter what is in it.
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/8-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
This was needed because the STE code required the STE to be in
ABORT/BYPASS inorder to program a cdtable or S2 STE. Now that the STE code
can automatically handle all transitions we can remove this step
from the attach_dev flow.
A few small bugs exist because of this:
1) If the core code does BLOCKED -> UNMANAGED with disable_bypass=false
then there will be a moment where the STE points at BYPASS. Since
this can be done by VFIO/IOMMUFD it is a small security race.
2) If the core code does IDENTITY -> DMA then any IOMMU_RESV_DIRECT
regions will temporarily become BLOCKED. We'd like drivers to
work in a way that allows IOMMU_RESV_DIRECT to be continuously
functional during these transitions.
Make arm_smmu_release_device() put the STE back to the correct
ABORT/BYPASS setting. Fix a bug where a IOMMU_RESV_DIRECT was ignored on
this path.
As noted before the reordering of the linked list/STE/CD changes is OK
against concurrent arm_smmu_share_asid() because of the
arm_smmu_asid_lock.
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/7-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Currently arm_smmu_install_ste_for_dev() iterates over every SID and
computes from scratch an identical STE. Every SID should have the same STE
contents. Turn this inside out so that the STE is supplied by the caller
and arm_smmu_install_ste_for_dev() simply installs it to every SID.
This is possible now that the STE generation does not inform what sequence
should be used to program it.
This allows splitting the STE calculation up according to the call site,
which following patches will make use of, and removes the confusing NULL
domain special case that only supported arm_smmu_detach_dev().
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/6-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
The BTM support wants to be able to change the ASID of any smmu_domain.
When it goes to do this it holds the arm_smmu_asid_lock and iterates over
the target domain's devices list.
During attach of a S1 domain we must ensure that the devices list and
CD are in sync, otherwise we could miss CD updates or a parallel CD update
could push an out of date CD.
This is pretty complicated, and almost works today because
arm_smmu_detach_dev() removes the master from the linked list before
working on the CD entries, preventing parallel update of the CD.
However, it does have an issue where the CD can remain programed while the
domain appears to be unattached. arm_smmu_share_asid() will then not clear
any CD entriess and install its own CD entry with the same ASID
concurrently. This creates a small race window where the IOMMU can see two
ASIDs pointing to different translations.
CPU0 CPU1
arm_smmu_attach_dev()
arm_smmu_detach_dev()
spin_lock_irqsave(&smmu_domain->devices_lock, flags);
list_del(&master->domain_head);
spin_unlock_irqrestore(&smmu_domain->devices_lock, flags);
arm_smmu_mmu_notifier_get()
arm_smmu_alloc_shared_cd()
arm_smmu_share_asid():
// Does nothing due to list_del above
arm_smmu_update_ctx_desc_devices()
arm_smmu_tlb_inv_asid()
arm_smmu_write_ctx_desc()
** Now the ASID is in two CDs
with different translation
arm_smmu_write_ctx_desc(master, IOMMU_NO_PASID, NULL);
Solve this by wrapping most of the attach flow in the
arm_smmu_asid_lock. This locks more than strictly needed to prepare for
the next patch which will reorganize the order of the linked list, STE and
CD changes.
Move arm_smmu_detach_dev() till after we have initialized the domain so
the lock can be held for less time.
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/5-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
Half the code was living in arm_smmu_domain_finalise_s2(), just move it
here and take the values directly from the pgtbl_ops instead of storing
copies.
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/4-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
This is preparation to move the STE calculation higher up in to the call
chain and remove arm_smmu_write_strtab_ent(). These new functions will be
called directly from attach_dev.
Reviewed-by: Moritz Fischer <mdf@kernel.org>
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/3-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
This allows writing the flow of arm_smmu_write_strtab_ent() around abort
and bypass domains more naturally.
Note that the core code no longer supplies NULL domains, though there is
still a flow in the driver that end up in arm_smmu_write_strtab_ent() with
NULL. A later patch will remove it.
Remove the duplicate calculation of the STE in arm_smmu_init_bypass_stes()
and remove the force parameter. arm_smmu_rmr_install_bypass_ste() can now
simply invoke arm_smmu_make_bypass_ste() directly.
Rename arm_smmu_init_bypass_stes() to arm_smmu_init_initial_stes() to
better reflect its purpose.
Reviewed-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/2-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
As the comment in arm_smmu_write_strtab_ent() explains, this routine has
been limited to only work correctly in certain scenarios that the caller
must ensure. Generally the caller must put the STE into ABORT or BYPASS
before attempting to program it to something else.
The iommu core APIs would ideally expect the driver to do a hitless change
of iommu_domain in a number of cases:
- RESV_DIRECT support wants IDENTITY -> DMA -> IDENTITY to be hitless
for the RESV ranges
- PASID upgrade has IDENTIY on the RID with no PASID then a PASID paging
domain installed. The RID should not be impacted
- PASID downgrade has IDENTIY on the RID and all PASID's removed.
The RID should not be impacted
- RID does PAGING -> BLOCKING with active PASID, PASID's should not be
impacted
- NESTING -> NESTING for carrying all the above hitless cases in a VM
into the hypervisor. To comprehensively emulate the HW in a VM we
should assume the VM OS is running logic like this and expecting
hitless updates to be relayed to real HW.
For CD updates arm_smmu_write_ctx_desc() has a similar comment explaining
how limited it is, and the driver does have a need for hitless CD updates:
- SMMUv3 BTM S1 ASID re-label
- SVA mm release should change the CD to answert not-present to all
requests without allowing logging (EPD0)
The next patches/series are going to start removing some of this logic
from the callers, and add more complex state combinations than currently.
At the end everything that can be hitless will be hitless, including all
of the above.
Introduce arm_smmu_write_ste() which will run through the multi-qword
programming sequence to avoid creating an incoherent 'torn' STE in the HW
caches. It automatically detects which of two algorithms to use:
1) The disruptive V=0 update described in the spec which disrupts the
entry and does three syncs to make the change:
- Write V=0 to QWORD 0
- Write the entire STE except QWORD 0
- Write QWORD 0
2) A hitless update algorithm that follows the same rational that the driver
already uses. It is safe to change IGNORED bits that HW doesn't use:
- Write the target value into all currently unused bits
- Write a single QWORD, this makes the new STE live atomically
- Ensure now unused bits are 0
The detection of which path to use and the implementation of the hitless
update rely on a "used bitmask" describing what bits the HW is actually
using based on the V/CFG/etc bits. This flows from the spec language,
typically indicated as IGNORED.
Knowing which bits the HW is using we can update the bits it does not use
and then compute how many QWORDS need to be changed. If only one qword
needs to be updated the hitless algorithm is possible.
Later patches will include CD updates in this mechanism so make the
implementation generic using a struct arm_smmu_entry_writer and struct
arm_smmu_entry_writer_ops to abstract the differences between STE and CD
to be plugged in.
At this point it generates the same sequence of updates as the current
code, except that zeroing the VMID on entry to BYPASS/ABORT will do an
extra sync (this seems to be an existing bug).
Going forward this will use a V=0 transition instead of cycling through
ABORT if a hitfull change is required. This seems more appropriate as ABORT
will fail DMAs without any logging, but dropping a DMA due to transient
V=0 is probably signaling a bug, so the C_BAD_STE is valuable.
Add STRTAB_STE_1_SHCFG_INCOMING to s2_cfg, this was editing the STE in
place and subtly inherited the value of data[1] from abort/bypass.
Signed-off-by: Michael Shavit <mshavit@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/1-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>