Commit graph

1042671 commits

Author SHA1 Message Date
Arnd Bergmann
aadf2b3857 ARM: tegra: Device tree changes for v5.15-rc1
The majority of this is temperature sensor additions for various devices
 and fixes to the trigger type of the thermal interrupts.
 
 Other than that there are various minor fixes across the board.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmEWmI8THHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zoUMWD/9wdd5/zlOG3XHYGlo30TzoHLW6nO6E
 VmZm5RlJ7JB7XRxFLrB22d0Kt9L6fm8UW5GOGCK4sG47I/+YyNUFDtn+TpQJeUvM
 iQ7ImX9X4bFqVn7ul6xWhdCEN+p3ZTRcqTAtgEjJevs9i86EIZzYNtLaIHRqvxwT
 9S7/6jtESZNRSVoH0/wQay0lOHoBoHhSzJTGSS61yGak/NAQDRdU0xNkvTarZbVb
 VCojDx8uNuAuEUqvPxY9BRdhHy6PAPebSem60Akm+S76HUQ4CIea9A/SExsOfq0/
 Zv07nMVKHjxAkKp+Mr8QWCpbJpdrf6snUU1nuGsOvnOwvgHQtatVlsYs81HlByGu
 lI3mdajL8XSkxCIHnl2uXOXMuOnlh7BBuE6ie0/S3QN6yOMEI17kAJUnoB2eYitx
 wfswrH3sVlJ5xFhb9oqhfz3VfjG69PPBLudm2YGLVs4pYVfvGS88Pqes//6jKfsT
 1TgRmJEAwYaFCrhPJXjwnZniHc4tc6SowQ9XsPyhV9LepwbAQKF6VMzVOOqU9UW/
 2fGlemi4aKWRmQRAlLT8kA2IS8fip7NOXSl/ffcGGnpqM5o38kikZsYRWgS+7kxT
 M24mNefKwTy7FQjnfPPXfRo2xBTqXKNRmdUEHFdMwCTxNnVF8bf3I96IO8zsb408
 vH6+nkJ/Ty7HaA==
 =8RvP
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmEa0YAACgkQmmx57+YA
 GNlbRA/8CvbB9v0CzVxIyEZQHEsTP3FZAu5kDUFxjG32yqNxmWTfGV197wQ7xLdI
 R80L3LMf2kfWwwVi66dUiYpOVdUSg7Z+vZmieZhX4Z2rjtDdWzHYZYHF45Sc2UUr
 yvJa41pCAx1GzI7vyfPVSRnIRpoc1GHumJzEQT8K4K7w9owImboZfgwufwkd7zB/
 Y6XdAaFUiZjYsddAaiEE6NFAGAP/QSWQLRYmJB923P7kCKytS4zQp/bcUH+CrrrE
 mr4ATkvrW5mclmaDhWjFsIHVUmpFUPiooCqy4eEg65muLm1MS30+6LO2U3F3+Vtt
 hvAYIDtaI5WBrgwYVBnWMJuPtP4UZdybdmWJnHXKH+jVU3a7jjOo/59uI2ZKapYj
 yOImKxJFMkJh/qPEDIyECtNXrbc+hqy5Pj3PryztEKx0lW8okl8eqDUN3JtUNkQc
 AP5oMP36vdOhP2nZkfy8LlPz/1woQOlC2cPbP9mVU74kw2t2eybbinNLnU0pgAm/
 bNh7In09ivbC9LUNoP63c1gS+ZF4yzdzomHNqzqIIy2i+RLrccPiIWg7DgMwX5ze
 MtRHbuGNmMqoGgSzQx5u5PMPaw8aSRnNuoUiD7EjfydIqI90/0NLQ0lDrqMD/ctV
 ftrlkNTVM6Y3OdGTyWFhmVAUjLeljY0yEaqBaIb+2YHS2icAYmI=
 =zHxH
 -----END PGP SIGNATURE-----

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

ARM: tegra: Device tree changes for v5.15-rc1

The majority of this is temperature sensor additions for various devices
and fixes to the trigger type of the thermal interrupts.

Other than that there are various minor fixes across the board.

* tag 'tegra-for-5.15-arm-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  ARM: tegra: tamonten: Fix UART pad setting
  ARM: tegra: nexus7: Improve thermal zones
  ARM: tegra: acer-a500: Improve thermal zones
  ARM: tegra: acer-a500: Use verbose variant of atmel,wakeup-method value
  ARM: tegra: acer-a500: Add power supplies to accelerometer
  ARM: tegra: acer-a500: Remove bogus USB VBUS regulators
  ARM: tegra: jetson-tk1: Correct interrupt trigger type of temperature sensor
  ARM: tegra: dalmore: Correct interrupt trigger type of temperature sensor
  ARM: tegra: cardhu: Correct interrupt trigger type of temperature sensor
  ARM: tegra: apalis: Correct interrupt trigger type of temperature sensor
  ARM: tegra: nyan: Correct interrupt trigger type of temperature sensor
  ARM: tegra: acer-a500: Add interrupt to temperature sensor node
  ARM: tegra: nexus7: Add interrupt to temperature sensor node
  ARM: tegra: paz00: Add interrupt to temperature sensor node
  ARM: tegra: ouya: Add interrupt to temperature sensor node
  ARM: tegra: Add SoC thermal sensor to Tegra30 device-trees

Link: https://lore.kernel.org/r/20210813162157.2820913-4-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-08-16 22:58:40 +02:00
Arnd Bergmann
b05cff9f4d dt-bindings: Changes for v5.15-rc1
This contains a single patch that adds the compatible string for the
 NVIDIA Jetson TX2 NX developer kit.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmEWlQYTHHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zoUSKD/4rO/NndVWcEa/xIDZ4B2OVtl9p/mFm
 m35ZFNFGrI1cmvMjLfSkxZAgwe755K529yz2d28rRkvoba5EgR6A7GR3nmxIq7v8
 IYlsVEPObtbQfDBEcveGQEfWsP9kJMytEts60elJGP6N8EdVbSEgvtKLoqU0cvT+
 0C8zmY7RvfXeLITk38kI/K1nBTS6pb5r0EKY+vfxYsRrQ44Er4DvOnGeeCbsE7D4
 xMNXtAFM7nNxULi++eQds2Z1mkmB4Q/9UD9E6qigkzfJCwlB5CQ5VwSU4GrgylW1
 3PcvyoU7rFNrjbm8w9aBqQ+BIcQ8utzab6P5JWJDHj0qcIjroQb/9nFAL0Abx500
 zQbXMq7kMMwxVtW5jO6mEIPGb/54cWJxeF62+IQdY6mwbjjsUXKvruYrk5ciV0IW
 w5yU51NnZPOaWzUMeMN9hp7yDI+2aYUK2UTfy5G3sDpgd5oQuSzInkPSaznUzqb/
 ydU0YGBiYWDZyLiPHmrSnkFIDpkw46fUcKtF1zSbhGwxK3wHfN1/4vbFSOgINLQ8
 /ubaW9Xts70minY43kzumTU+kxW3ym/afkyzuRjw/FsIQLqAvV3jMIXBVb/3+nTK
 PlbcIceRDDt/ueqtHaDqkl2ki5FFfHAPoxMqNeP9b5gjbnJkB64TwNliaTxAGKDE
 6NVhIdDzmDKeQg==
 =g0AO
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmEa0OcACgkQmmx57+YA
 GNlu4w//WHQN+bJqAzMwLXqG2A9NtHEpk6VMjyesgS+I10zL2ddnge/3tz3m4NKV
 5hjjbLiH+AtinqROx9pLn1zu79IAeT9Gsp6kG9bUfrmsdCG7mN3bMJdIkZn2dXXN
 pkiulBds5kYZcL9DTf299Lb6QQvpClCI0PIxndFMtPoP1jJduMVAZ/uurj2oY3x0
 koB+OqQzFrm012nrHe4MTZUOm2KRGTf3hxpIzxpSnID4FVlyeZwwLbSGz2RJIrfG
 JKXazXBl5mE3iEx+IFcoeQQoG851iv+/TPqBndQSqy/fyu6zge3DYbopcHho7QlK
 ooJ0fCKH44U84kW2A9Y2sAEjQK1IibpnCTLfOQWJF/Tow1nz7B9lEERJ83994ZAp
 opfXpc7q9sRzQzTi77LwJbFDo5uRRcAi0Gf9e2rsvVTQJbdhvEhIcpGnFJZO4ZYQ
 MRy8azyRbdj/ofY4fdsbqiy/3gEV3hjr2V2zECLvNKQ0DuJFFW4wJqIFLlfcXigY
 YC2CROFXPYOgEEg2glStL2qdg8YwE2xZiYwSQo/frBN9Oq1SzfypByQ/oX0QtS5m
 vLx/94p2Q80eXMaPF8+sE6eyT1Q7oEix5eYxb47WnP2vu8Bvk4bRndXyVthUc1k7
 A70wV5A9eZBxN0YRhk/bYNhXL96hKtfMFTxbWHNsF02ioGqUvSs=
 =6jxr
 -----END PGP SIGNATURE-----

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

dt-bindings: Changes for v5.15-rc1

This contains a single patch that adds the compatible string for the
NVIDIA Jetson TX2 NX developer kit.

* tag 'tegra-for-5.15-dt-bindings' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  dt-bindings: tegra: Document NVIDIA Jetson TX2 NX developer kit

Link: https://lore.kernel.org/r/20210813162157.2820913-1-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-08-16 22:56:07 +02:00
Arnd Bergmann
fba65f104e Amlogic ARM64 DT changes for v5.15 part 2:
- add audio to nodes vega-s95
 - add audio to nodes nexbox-a1
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEPVPGJshWBf4d9CyLd9zb2sjISdEFAmEWfZUACgkQd9zb2sjI
 SdFznA/+Ou5ss4Iuzk5Nnxxv8S386+6t9ThRsvZCH971EWzqrq9i3X/z2fO1+9J6
 OqMZhUB9VjEKhsn3dsM4uYGu0uVJYUPProAP9g2tcnHXxUDEshEzTSJXNYNldFoL
 3xJ1g3gGDEkslrhqmWYy9FPnhpvfRu0u6QTv8KncBEqinkQnLqplbVkLUbsNZJAm
 aa5vJdfksVHO90KXyGOy2o28hqZDR9DxigsA6NVLqaqW6/R4gUApLZEO0ONtC6Nu
 4GSldPuRt/XmjsERuBNthdRuro5R+GpSasDcAQOWDDVQttmrrBHy9lpCyJzAx5sj
 7wn/fHUDw+gIjUwhHl1ChVhUWp/NYRUDX844lPyQXkXMgxVwnTSCZClv0Q22hV8F
 nHODhNlJTMlysFTywRTCgtsUiZOS8IYsbd/MQlu0G2qYF+Ake4VnJ/R/HMNK9PzW
 eM53h7bBA2qTsxXqnUGnCO6VDq33SEUdAxXXskSd2UEn+2CaFVWO9jiB/gNXXeBU
 XotuV3ksO7c0oYnTS5bUQuhw9gkK93lsg+XmwMbYeGyW5kJ7uZds2v4hPTQxHZnv
 VafFryQS7xeGmWVjE5deq6GW8Ba1kqWmHukY4TLHGqPIctyzoghYf0iaLoITMF7B
 ccfj66/RnMo6bgnOJLK2HJQ2lIza99qBvtSqmsJTf1y6I2RaYbw=
 =KfXM
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmEa0F4ACgkQmmx57+YA
 GNmVAA//UdMuXmFidiXOH3VY4GLPtmzIDLounnMqI0k1F/x9OY0IPQTfB1euu/D2
 JC/YweqRXZhqn1E2PFMrsTBFOTTdByCbW0esz/Sq0VIO7vVoLghs6/3TZhjFkxWG
 Z2GvCVDcQLoMcD9Yi79UvhU255M6anSpZjMHDc9GSNFCUnvaSizjMyXtHrrxNZXg
 ZUd2OuCvji0h79WveLP8MLU91rQidP28jL+YTl7a3JdsBG7BKbinnoM3AnBj7bWr
 F/QVeTXrN6AIUeVeXiyACoOBK4BQSJLVQhgDHoAHV1xqHjkQ+360LKkAwDxNqoZl
 lobTYPhRaMnpOBUQbjxBeF3O+YvvGkBI9wVCO/1cV8Tm+E8ZkgPvYTIf7uQZDwld
 tGzRs0pcn1Rby2RHnsgB4++XrR10v4OASMSoy+MLk0yxAr3q39PmO/PPYm9VSAo4
 YqHCPPIZXv3LD7pfRKGVobX0l89S0GsWreYg2jgDK54sBRoEV04CxhfWDuZr1xCl
 bBOiVRI+1nrR50/07gJs3yyw27Bicp3gayN9S6+SgppjYucRawJb5bpfQ9Q51dmx
 vQdnb86/mOefE0bGNnaWx13n6SYZo1ENeAgcJ4n+dysiFnYW2M1MHo3DB6MsDE72
 LjZXu0c9tJBDNTY/i6bVT9qQ6ajFoGpRLO9s1f1JUJQMSuZKPuI=
 =WKc3
 -----END PGP SIGNATURE-----

Merge tag 'amlogic-arm64-dt-for-v5.15-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into arm/dt

Amlogic ARM64 DT changes for v5.15 part 2:
- add audio to nodes vega-s95
- add audio to nodes nexbox-a1

* tag 'amlogic-arm64-dt-for-v5.15-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux:
  arm64: dts: meson: add audio playback to vega-s95 dtsi
  arm64: dts: meson: add audio playback to nexbox-a1

Link: https://lore.kernel.org/r/47d77095-eee7-bbd9-d3aa-1dabeea3f0b9@baylibre.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-08-16 22:53:50 +02:00
Arnd Bergmann
d5aa024586 Renesas ARM DT updates for v5.15 (take two)
- Pin control, ADC, and CANFD support for the RZ/G2L SoC,
   - Add interrupt-names properties to the Renesas RZ/A and RZ/G2L I2C
     Bus Interface.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCYRZA2gAKCRCKwlD9ZEnx
 cP+wAP48/ypbNOcvVxg1l7HuR0R+k3OtpSSUNmUBJhOAIYqQ2wD/Ta8Oq5jn5kLX
 c9+OIXtlRNkHiALWVPPkzZDXW9d+5AM=
 =XzWX
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmEaz9wACgkQmmx57+YA
 GNllmxAAmYFQ71HJlJ04t42aZrcr30ccoCHtbTHzbVN26dGCTxYeyk2YmtCENC+Z
 dcMTAi+hnyFNgMebzd3Ic9C9tOPkkrAqkh/NE5ULIHOeqSrFMPltvfWecjKi6J0S
 v4AgpOQD2H5CxqDHHSkC4cU6EHMfDpetkdNQ9XM41n+l3EWkA407J7h9RiWsuAJL
 Wui8HnCqvOL0YYUSAsCVBo7yVyV296NIIeUWJ9RBztc9zKH3CEAc2y6Kbgt+QUqF
 VqbFF0FlnJZYxOs6cdeWVeSux9FkQQm/3x7AOb+VLLFTui2aCf4lXPpniUtarevs
 +6M/ZkBumWh3T7rc2T1Rybcv8b81MFzxJwZrcEWXN+BtoKYqfzCIQaBNCExrVGmp
 3/ovQet2dAIBNfeW0J7vCVG+RdWKCKSUn+bpxJtWiwzfpKRwcPApl0uZAhDgQJND
 5OO42lIEcidDwpgou46/YE5bD3/ZGCYN5qODxZPt2q0Xhy5kCf4cWmM7zU75TyeQ
 uDcxsKbBMIFo6Xw0Y2h1ywKnF+VqRyGb4FgkoLxAD5nWClTDAxxqUvIW/d89iqLc
 2jU1qJi/xqqJTXd5KlUnO7OMyBHr0DqEBEwbRejoH/WzozeCrcFQEyLev9r0iLEq
 Xy/YKTjvcQP2vDh/WZ6R0/toHk6pzdPRfBeP4+ncncY7XI+xVvw=
 =91R9
 -----END PGP SIGNATURE-----

Merge tag 'renesas-arm-dt-for-v5.15-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into arm/dt

Renesas ARM DT updates for v5.15 (take two)

  - Pin control, ADC, and CANFD support for the RZ/G2L SoC,
  - Add interrupt-names properties to the Renesas RZ/A and RZ/G2L I2C
    Bus Interface.

* tag 'renesas-arm-dt-for-v5.15-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel:
  dt-bindings: i2c: renesas,riic: Make interrupt-names required
  arm64: dts: renesas: r9a07g044: Add I2C interrupt-names
  ARM: dts: rza: Add I2C interrupt-names
  dt-bindings: i2c: renesas,riic: Add interrupt-names
  arm64: dts: renesas: r9a07g044: Add CANFD node
  arm64: dts: renesas: r9a07g044: Add ADC node
  arm64: dts: renesas: r9a07g044: Add pinctrl node
  dt-bindings: clock: r9a07g044-cpg: Add entry for P0_DIV2 core clock

Link: https://lore.kernel.org/r/cover.1628849623.git.geert+renesas@glider.be
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-08-16 22:51:40 +02:00
Arnd Bergmann
df97e5f3b2 NXP/FSL SoC driver fixes for v5.14
QE interrupt controller driver
 - Convert it to platform_device driver to make it work with fw_devlink
 - Fix static analysis issue
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEhb3UXAyxp6UQ0v6khtxQDvusFVQFAmEW7oAACgkQhtxQDvus
 FVThVA//fIMVH7UkdvFT1ZsHlho6JJ6H3McVNVjYkIC8z9Rg0iboUFv6RSg3pF4a
 7SJLxboK0bHtLpioA2/e/dP/3MwDEj9OgQGmOa2GLWdgPl0/md27BIuu/VfhRne9
 3XKzcCKsQcnpPWHQ4Na7YvGsGD74uPxW3RAbwiOAk/JCC0a51N3Fmqwpxq4hIeop
 d23EwUo4ihafVRqzkx6NloiX0OfUQiGtjYHIgXKa9wnuOq5y/xKsCeJVMcA6jpfs
 U9zy5oChGxJpDTpnCJiWhIMM406WNPinlRJKeO+SmDkarax0d9MpUIIdcz2sOUX9
 Q0mfmHO4ZJNZKSYiIx0ZbCGLYNzCCtIslp75htIbM3baaBkBsi+QWYX9nLZ8F4Og
 fvetghv6pkz1jiVFOLss9FCyq9F2K+wGbMqu2teDDSvIn9F2e4owiT62aUtyEkXn
 eJCw0LRxUdDPsfxxU/WZZJ/O0tm1cOQF3guGXl5NPR+INPUwMmmFq8+S0bn1rJZr
 +WhW2+3B/RbS5BiHyY+FSRjaj6miOcv2qY1S70e1lOmvyIGuCVI5mUPAA+HG8E9p
 JIdqsX9Sj6s4CqjtGoWEREu7Cl0XTHPG2PM2MPb9HzTfLO7vSTj6zIm8eIuRHc8t
 JckcNPLD7v2b4H1HCMzMEpegmv6n0bNlZanz/X9Tj+j9dpFsXP8=
 =N7Ax
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmEazZoACgkQmmx57+YA
 GNlJFA/+NRXC6B2u9TmiTpdxNvtJLnLJB/uwDdQfnUKyS8K69IJ7V+qdia0xdM2C
 IHB+NvQ8+aU5o/F30x9ge2IICPLGetDjTl2Y7J8Xd3hbpj9DncoXiWXgnv5abfxo
 tPg5Wl1ttvskRFE+lVDJiZmy1dLnv8w2yObpBV7iUFaEDBf4vYtM1SPiLxfcxlcn
 U4IMf2qCTjFbozYuBz8/34dewOAktAgTe0inHAiJKfWqVy2ndxVhxIUEMJcLc8HW
 jyLUVzDqjYLP9FizgPlCK54NIgwP2PF+rfB/8eHhJQTXmqlJMig+9GVHPX3OaEN3
 dPBVoj/LxyDnmyU6O979LT5qMNtjy1WFOx8MCTcX2xgNs87AcAfY9tRN8HYLv5Ks
 rjQiTfCCC64VDmM92dnlS6h5C3Vr+ZG1BNM5mt4QF7mISKy8tLzFtBbXzrO31kI/
 xHimb6tgsDHsvmNf5mLTarPI6AS1ozkpsdXRxIjW3IXDLwT+QGE6D3aP3lgffiZu
 dxjQzND3sltR8EPK08/GzOGeShkC1HVcGF5tUXnHm/njBDidpU/0yTCdy37HLrL5
 xJl7cV71dfudlm1Bph3eU4p7FwUSDmRIma+4Qq8fPN4ePSjHumDwTCUcnhJtbyWl
 CD42Mbo6cpbh555U83sOD8fB0IxChAJGyY7cP2vRDeNcG7ZcYlQ=
 =NTE1
 -----END PGP SIGNATURE-----

Merge tag 'soc-fsl-fix-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/leo/linux into arm/fixes

NXP/FSL SoC driver fixes for v5.14

QE interrupt controller driver
- Convert it to platform_device driver to make it work with fw_devlink
- Fix static analysis issue

* tag 'soc-fsl-fix-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/leo/linux:
  soc: fsl: qe: fix static checker warning
  soc: fsl: qe: convert QE interrupt controller to platform_device

Link: https://lore.kernel.org/r/20210813222305.13663-1-leoyang.li@nxp.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-08-16 22:42:02 +02:00
Mauro Carvalho Chehab
78e29356d6 dt-bindings: PCI: kirin: Convert kirin-pcie.txt to yaml
Convert the file into a JSON description at the yaml format.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/081c179ef2e0ddf11566144cd5967b15268565b4.1628061310.git.mchehab+huawei@kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
2021-08-16 15:37:33 -05:00
Nathan Chancellor
3a6e4106a8 drm/radeon: Add break to switch statement in radeonfb_create_pinned_object()
Clang + -Wimplicit-fallthrough warns:

drivers/gpu/drm/radeon/radeon_fb.c:170:2: warning: unannotated
fall-through between switch labels [-Wimplicit-fallthrough]
        default:
        ^
drivers/gpu/drm/radeon/radeon_fb.c:170:2: note: insert 'break;' to avoid
fall-through
        default:
        ^
        break;
1 warning generated.

Clang's version of this warning is a little bit more pedantic than
GCC's. Add the missing break to satisfy it to match what has been done
all over the kernel tree.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 16:14:12 -04:00
Aric Cyr
571ca8de53 drm/amd/display: 3.2.149
This version brings along following fixes:
- Ensure DCN save init registers after VM setup
- Fix multi-display support for idle opt workqueue
- Use vblank control events for PSR enable/disable
- Create default dc_sink when fail reading EDID under MST

Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Aric Cyr <aric.cyr@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 16:14:12 -04:00
Anthony Koo
01934c30c0 drm/amd/display: [FW Promotion] Release 0.0.79
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 16:14:12 -04:00
Nicholas Kazlauskas
961606872a drm/amd/display: Guard vblank wq flush with DCN guards
[Why]
Compilation of the workqueue fails if not building with the DCN config
option set.

[How]
Guard calls to the flush with the DCN config option to fix the build.

Reviewed-by: Roman Li <Roman.Li@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 16:14:12 -04:00
Jake Wang
f586fea897 drm/amd/display: Ensure DCN save after VM setup
[Why]
DM initializes VM context after DMCUB initialization.
This results in loss of DCN_VM_CONTEXT registers after z10.

[How]
Notify DMCUB when VM setup is complete, and have DMCUB
save init registers.

v2: squash in CONFIG_DRM_AMD_DC_DCN3_1 fix

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Jake Wang <haonan.wang2@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 16:14:12 -04:00
Jake Wang
71ae580f31 drm/amd/display: Ensure DCN save after VM setup
[Why]
DM initializes VM context after DMCUB initialization.
This results in loss of DCN_VM_CONTEXT registers after z10.

[How]
Notify DMCUB when VM setup is complete, and have DMCUB
save init registers.

v2: squash in CONFIG_DRM_AMD_DC_DCN3_1 fix

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Jake Wang <haonan.wang2@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 16:04:24 -04:00
Yifan Zhang
f924f3a1f0 drm/amdkfd: fix random KFDSVMRangeTest.SetGetAttributesTest test failure
KFDSVMRangeTest.SetGetAttributesTest randomly fails in stress test.

Note: Google Test filter = KFDSVMRangeTest.*
[==========] Running 18 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 18 tests from KFDSVMRangeTest
[ RUN      ] KFDSVMRangeTest.BasicSystemMemTest
[       OK ] KFDSVMRangeTest.BasicSystemMemTest (30 ms)
[ RUN      ] KFDSVMRangeTest.SetGetAttributesTest
[          ] Get default atrributes
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:154: Failure
Value of: expectedDefaultResults[i]
  Actual: 4294967295
Expected: outputAttributes[i].value
Which is: 0
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:154: Failure
Value of: expectedDefaultResults[i]
  Actual: 4294967295
Expected: outputAttributes[i].value
Which is: 0
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:152: Failure
Value of: expectedDefaultResults[i]
  Actual: 4
Expected: outputAttributes[i].type
Which is: 2
[          ] Setting/Getting atrributes
[  FAILED  ]

the root cause is that svm work queue has not finished when svm_range_get_attr is called, thus
some garbage svm interval tree data make svm_range_get_attr get wrong result. Flush work queue before
iterate svm interval tree.

Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:59:41 -04:00
Kenneth Feng
93c5701b00 drm/amd/pm: change the workload type for some cards
change the workload type for some cards as it is needed.

Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:58:57 -04:00
Kenneth Feng
2fd31689f9 Revert "drm/amd/pm: fix workload mismatch on vega10"
This reverts commit 0979d43259.
Revert this because it does not apply to all the cards.

Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:58:44 -04:00
Nicholas Kazlauskas
58aa1c50e5 drm/amd/display: Use vblank control events for PSR enable/disable
[Why]
PSR can disable the HUBP along with the OTG when PSR is active.

We'll hit a pageflip timeout when the OTG is disable because we're no
longer updating the CRTC vblank counter and the pflip high IRQ will
not fire on the flip.

In order to flip the page flip timeout occur we should modify the
enter/exit conditions to match DRM requirements.

[How]
Use our deferred handlers for DRM vblank control to notify DMCU(B)
when it can enable or disable PSR based on whether vblank is disabled or
enabled respectively.

We'll need to pass along the stream with the notification now because
we want to access the CRTC state while the CRTC is locked to get the
stream state prior to the commit.

Retain a reference to the stream so it remains safe to continue to
access and release that reference once we're done with it.

Enable/disable logic follows what we were previously doing in
update_planes.

The workqueue has to be flushed before programming streams or planes
to ensure that we exit out of idle optimizations and PSR before
these events occur if necessary.

To keep the skip count logic the same to avoid FBCON PSR enablement
requires copying the allow condition onto the DM IRQ parameters - a
field that we can actually access from the worker.

Reviewed-by: Roman Li <Roman.Li@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Nicholas Kazlauskas
09a5df6c44 drm/amd/display: Fix multi-display support for idle opt workqueue
[Why]
The current implementation for idle optimization support only has a
single work item that gets reshuffled into the system workqueue
whenever we receive an enable or disable event.

We can have mismatched events if the work hasn't been processed or if
we're getting control events from multiple displays at once.

This fixes this issue and also makes the implementation usable for
PSR control - which will be addressed in another patch.

[How]
We need to be able to flush remaining work out on demand for driver stop
and psr disable so create a driver specific workqueue instead of using
the system one. The workqueue will be single threaded to guarantee the
ordering of enable/disable events.

Refactor the queue to allocate the control work and deallocate it
after processing it.

Pass the acrtc directly to make it easier to handle psr enable/disable
in a later patch.

Rename things to indicate that it's not just MALL specific.

Reviewed-by: Roman Li <Roman.Li@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Wayne Lin
58de0ef214 drm/amd/display: Create dc_sink when EDID fail
[Why]
While reading remote EDID via Startech 1-to-4 hub, occasionally we
won't get response in time and won't light up corresponding monitor.

Ideally, we can still add generic modes for userspace to choose to try
to light up the monitor and which is done in
drm_helper_probe_single_connector_modes(). So the main problem here is
that we fail .mode_valid since we don't create remote dc_sink for this
case.

[How]
Also add default dc_sink if we can't get the EDID.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Evan Quan
b64625a303 drm/amd/pm: correct the address of Arcturus fan related registers
These registers have different address from other SMU V11 ASICs.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Evan Quan
bc08cab690 drm/amd/pm: drop unnecessary manual mode check
As the fan control was guarded under manual mode before fan speed
RPM/PWM setting. Thus the extra check is totally redundant.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Evan Quan
0d8318e112 drm/amd/pm: drop the unnecessary intermediate percent-based transition
Currently, the readout of fan speed pwm is transited into percent-based
and then pwm-based. However, the transition into percent-based is totally
unnecessary and make the final output less accurate.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Evan Quan
d9ca7567b8 drm/amd/pm: correct the fan speed RPM retrieving
The relationship "PWM = RPM / smu->fan_max_rpm" between fan speed
PWM and RPM is not true for SMU11 ASICs. So, we need a new way to
retrieving the fan speed RPM.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Evan Quan
fb1f667e71 drm/amd/pm: correct the fan speed PWM retrieving
The relationship "PWM = RPM / smu->fan_max_rpm" between fan speed
PWM and RPM is not true for SMU11 ASICs. So, we need a new way to
retrieving the fan speed PWM.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Evan Quan
96401f7c21 drm/amd/pm: record the RPM and PWM based fan speed settings
As the relationship "PWM = RPM / smu->fan_max_rpm" between fan speed
PWM and RPM is not true for SMU11 ASICs. So, both the RPM and PWM
settings need to be saved.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Evan Quan
f3289d0497 drm/amd/pm: correct the fan speed RPM setting
The relationship "PWM = RPM / smu->fan_max_rpm" between fan speed
PWM and RPM is not true for SMU11 ASICs. So, we need a new way to
perform the fan speed RPM setting.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
Candice Li
893cf382c0 drm/amd/amdgpu: remove unnecessary RAS context field
Delete ras_if->name in the RAS ctx structure and remove related lines.

Signed-off-by: Candice Li <candice.li@amd.com>
Reviewed-by: John Clements <john.clements@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:55 -04:00
Andy Shevchenko
d0ef631d40 gpio: mlxbf2: Use DEFINE_RES_MEM_NAMED() helper macro
Use DEFINE_RES_MEM_NAMED() to save a couple of lines of code, which makes
the code a bit shorter and easier to read.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Asmaa Mnebhi <asmaa@nvidia.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2021-08-16 21:21:24 +02:00
Andy Shevchenko
4e6864f856 gpio: mlxbf2: Use devm_platform_ioremap_resource()
Simplify the platform_get_resource() and devm_ioremap_resource()
calls with devm_platform_ioremap_resource().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Asmaa Mnebhi <asmaa@nvidia.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2021-08-16 21:21:07 +02:00
Andy Shevchenko
603607e70e gpio: mlxbf2: Drop wrong use of ACPI_PTR()
ACPI_PTR() is more harmful than helpful. For example, in this case
if CONFIG_ACPI=n, the ID table left unused which is not what we want.

Instead of adding ifdeffery here and there, drop ACPI_PTR() and
replace acpi.h with mod_devicetable.h.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Asmaa Mnehi <asmaa@nvidia.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2021-08-16 21:20:55 +02:00
Andy Shevchenko
dabe57c3a3 gpio: mlxbf2: Convert to device PM ops
Convert driver to use modern device PM ops interface.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Asmaa Mnebhi <asmaa@nvidia.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2021-08-16 21:19:20 +02:00
Yifan Zhang
2bbab7ce7c drm/amdkfd: fix random KFDSVMRangeTest.SetGetAttributesTest test failure
KFDSVMRangeTest.SetGetAttributesTest randomly fails in stress test.

Note: Google Test filter = KFDSVMRangeTest.*
[==========] Running 18 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 18 tests from KFDSVMRangeTest
[ RUN      ] KFDSVMRangeTest.BasicSystemMemTest
[       OK ] KFDSVMRangeTest.BasicSystemMemTest (30 ms)
[ RUN      ] KFDSVMRangeTest.SetGetAttributesTest
[          ] Get default atrributes
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:154: Failure
Value of: expectedDefaultResults[i]
  Actual: 4294967295
Expected: outputAttributes[i].value
Which is: 0
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:154: Failure
Value of: expectedDefaultResults[i]
  Actual: 4294967295
Expected: outputAttributes[i].value
Which is: 0
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:152: Failure
Value of: expectedDefaultResults[i]
  Actual: 4
Expected: outputAttributes[i].type
Which is: 2
[          ] Setting/Getting atrributes
[  FAILED  ]

the root cause is that svm work queue has not finished when svm_range_get_attr is called, thus
some garbage svm interval tree data make svm_range_get_attr get wrong result. Flush work queue before
iterate svm interval tree.

Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:19:08 -04:00
Kenneth Feng
3919a48518 drm/amd/pm: change the workload type for some cards
change the workload type for some cards as it is needed.

Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:18:58 -04:00
Kenneth Feng
fe122ee542 Revert "drm/amd/pm: fix workload mismatch on vega10"
This reverts commit 0979d43259.
Revert this because it does not apply to all the cards.

Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:18:13 -04:00
Candice Li
6457205c07 drm/amd/amdgpu: consolidate PSP TA context
Signed-off-by: Candice Li <candice.li@amd.com>
Reviewed-by: John Clements <john.clements@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:18:04 -04:00
Jiange Zhao
3e183e2fae drm/amdgpu: Add MB_REQ_MSG_READY_TO_RESET response when VF get FLR notification.
When guest received FLR notification from host, it would
lock adapter into reset state. There will be no more
job submission and hardware access after that.

Then it should send a response to host that it has prepared
for host reset.

Signed-off-by: Jiange Zhao <Jiange.Zhao@amd.com>
Signed-off-by: Peng Ju Zhou <PengJu.Zhou@amd.com>
Reviewed-by: Emily.Deng <Emily.Deng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:17:57 -04:00
Kevin Wang
1d0e622f8d drm/amd/pm: change pp_dpm_sclk/mclk/fclk attribute is RO for aldebaran
the following clock is only support voltage DPM, change attribute to RO:
1. pp_dpm_sclk
2. pp_dpm_mclk
3. pp_dpm_fclk

Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:17:51 -04:00
Kevin Wang
becf6c9552 drm/amd/pm: change smu msg's attribute to allow working under sriov
the following message is allowed in sriov mode:
1. GetEnabledSmuFeaturesLow
2. GetEnabledSmuFeaturesHigh

Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:17:44 -04:00
Kevin Wang
cb5da84a5f drm/amd/pm: change return value in aldebaran_get_power_limit()
v1:
1. change return value to avoid smu driver probe fails when FEATURE_PPT is
not enabled.
2. if FEATURE_PPT is not enabled, set power limit value to 0.

v2:
instead dev_err with dev_warn

Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:17:35 -04:00
Kevin Wang
4a1cac2559 drm/amd/pm: skip to load smu microcode on sriov for aldebaran
v1:
1. skip to load smu firmware in sriov mode for aldebaran chip
2. using vbios pptable if in sriov mode.

v2:
clean up smu driver code in sriov code path

Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:17:29 -04:00
Kevin Wang
19838cbae7 drm/amd/pm: correct DPM_XGMI/VCN_DPM feature name
the following feature is wrong, it will cause sysnode of pp_features show error:
1. DPM_XGMI
2. VCN_DPM

Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:17:17 -04:00
Jack Zhang
c530b02f39 drm/amd/amdgpu embed hw_fence into amdgpu_job
Why: Previously hw fence is alloced separately with job.
It caused historical lifetime issues and corner cases.
The ideal situation is to take fence to manage both job
and fence's lifetime, and simplify the design of gpu-scheduler.

How:
We propose to embed hw_fence into amdgpu_job.
1. We cover the normal job submission by this method.
2. For ib_test, and submit without a parent job keep the
legacy way to create a hw fence separately.
v2:
use AMDGPU_FENCE_FLAG_EMBED_IN_JOB_BIT to show that the fence is
embedded in a job.
v3:
remove redundant variable ring in amdgpu_job
v4:
add tdr sequence support for this feature. Add a job_run_counter to
indicate whether this job is a resubmit job.
v5
add missing handling in amdgpu_fence_enable_signaling

Signed-off-by: Jingwen Chen <Jingwen.Chen2@amd.com>
Signed-off-by: Jack Zhang <Jack.Zhang7@hotmail.com>
Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed by: Monk Liu <monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:16:58 -04:00
Darrick J. Wong
b69eea82d3 iomap: pass writeback errors to the mapping
Modern-day mapping_set_error has the ability to squash the usual
negative error code into something appropriate for long-term storage in
a struct address_space -- ENOSPC becomes AS_ENOSPC, and everything else
becomes EIO.  iomap squashes /everything/ to EIO, just as XFS did before
that, but this doesn't make sense.

Fix this by making it so that we can pass ENOSPC to userspace when
writeback fails due to space problems.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
2021-08-16 12:12:52 -07:00
Dave Chinner
33c0dd7898 xfs: move the CIL workqueue to the CIL
We only use the CIL workqueue in the CIL, so it makes no sense to
hang it off the xfs_mount and have to walk multiple pointers back up
to the mount when we have the CIL structures right there.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:30 -07:00
Dave Chinner
39823d0fac xfs: CIL work is serialised, not pipelined
Because we use a single work structure attached to the CIL rather
than the CIL context, we can only queue a single work item at a
time. This results in the CIL being single threaded and limits
performance when it becomes CPU bound.

The design of the CIL is that it is pipelined and multiple commits
can be running concurrently, but the way the work is currently
implemented means that it is not pipelining as it was intended. The
critical work to switch the CIL context can take a few milliseconds
to run, but the rest of the CIL context flush can take hundreds of
milliseconds to complete. The context switching is the serialisation
point of the CIL, once the context has been switched the rest of the
context push can run asynchrnously with all other context pushes.

Hence we can move the work to the CIL context so that we can run
multiple CIL pushes at the same time and spread the majority of
the work out over multiple CPUs. We can keep the per-cpu CIL commit
state on the CIL rather than the context, because the context is
pinned to the CIL until the switch is done and we aggregate and
drain the per-cpu state held on the CIL during the context switch.

However, because we no longer serialise the CIL work, we can have
effectively unlimited CIL pushes in progress. We don't want to do
this - not only does it create contention on the iclogs and the
state machine locks, we can run the log right out of space with
outstanding pushes. Instead, limit the work concurrency to 4
concurrent works being processed at a time. This is enough
concurrency to remove the CIL from being a CPU bound bottleneck but
not enough to create new contention points or unbound concurrency
issues.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:30 -07:00
Dave Chinner
0020a190cf xfs: AIL needs asynchronous CIL forcing
The AIL pushing is stalling on log forces when it comes across
pinned items. This is happening on removal workloads where the AIL
is dominated by stale items that are removed from AIL when the
checkpoint that marks the items stale is committed to the journal.
This results is relatively few items in the AIL, but those that are
are often pinned as directories items are being removed from are
still being logged.

As a result, many push cycles through the CIL will first issue a
blocking log force to unpin the items. This can take some time to
complete, with tracing regularly showing push delays of half a
second and sometimes up into the range of several seconds. Sequences
like this aren't uncommon:

....
 399.829437:  xfsaild: last lsn 0x11002dd000 count 101 stuck 101 flushing 0 tout 20
<wanted 20ms, got 270ms delay>
 400.099622:  xfsaild: target 0x11002f3600, prev 0x11002f3600, last lsn 0x0
 400.099623:  xfsaild: first lsn 0x11002f3600
 400.099679:  xfsaild: last lsn 0x1100305000 count 16 stuck 11 flushing 0 tout 50
<wanted 50ms, got 500ms delay>
 400.589348:  xfsaild: target 0x110032e600, prev 0x11002f3600, last lsn 0x0
 400.589349:  xfsaild: first lsn 0x1100305000
 400.589595:  xfsaild: last lsn 0x110032e600 count 156 stuck 101 flushing 30 tout 50
<wanted 50ms, got 460ms delay>
 400.950341:  xfsaild: target 0x1100353000, prev 0x110032e600, last lsn 0x0
 400.950343:  xfsaild: first lsn 0x1100317c00
 400.950436:  xfsaild: last lsn 0x110033d200 count 105 stuck 101 flushing 0 tout 20
<wanted 20ms, got 200ms delay>
 401.142333:  xfsaild: target 0x1100361600, prev 0x1100353000, last lsn 0x0
 401.142334:  xfsaild: first lsn 0x110032e600
 401.142535:  xfsaild: last lsn 0x1100353000 count 122 stuck 101 flushing 8 tout 10
<wanted 10ms, got 10ms delay>
 401.154323:  xfsaild: target 0x1100361600, prev 0x1100361600, last lsn 0x1100353000
 401.154328:  xfsaild: first lsn 0x1100353000
 401.154389:  xfsaild: last lsn 0x1100353000 count 101 stuck 101 flushing 0 tout 20
<wanted 20ms, got 300ms delay>
 401.451525:  xfsaild: target 0x1100361600, prev 0x1100361600, last lsn 0x0
 401.451526:  xfsaild: first lsn 0x1100353000
 401.451804:  xfsaild: last lsn 0x1100377200 count 170 stuck 22 flushing 122 tout 50
<wanted 50ms, got 500ms delay>
 401.933581:  xfsaild: target 0x1100361600, prev 0x1100361600, last lsn 0x0
....

In each of these cases, every AIL pass saw 101 log items stuck on
the AIL (pinned) with very few other items being found. Each pass, a
log force was issued, and delay between last/first is the sleep time
+ the sync log force time.

Some of these 101 items pinned the tail of the log. The tail of the
log does slowly creep forward (first lsn), but the problem is that
the log is actually out of reservation space because it's been
running so many transactions that stale items that never reach the
AIL but consume log space. Hence we have a largely empty AIL, with
long term pins on items that pin the tail of the log that don't get
pushed frequently enough to keep log space available.

The problem is the hundreds of milliseconds that we block in the log
force pushing the CIL out to disk. The AIL should not be stalled
like this - it needs to run and flush items that are at the tail of
the log with minimal latency. What we really need to do is trigger a
log flush, but then not wait for it at all - we've already done our
waiting for stuff to complete when we backed off prior to the log
force being issued.

Even if we remove the XFS_LOG_SYNC from the xfs_log_force() call, we
still do a blocking flush of the CIL and that is what is causing the
issue. Hence we need a new interface for the CIL to trigger an
immediate background push of the CIL to get it moving faster but not
to wait on that to occur. While the CIL is pushing, the AIL can also
be pushing.

We already have an internal interface to do this -
xlog_cil_push_now() - but we need a wrapper for it to be used
externally. xlog_cil_force_seq() can easily be extended to do what
we need as it already implements the synchronous CIL push via
xlog_cil_push_now(). Add the necessary flags and "push current
sequence" semantics to xlog_cil_force_seq() and convert the AIL
pushing to use it.

One of the complexities here is that the CIL push does not guarantee
that the commit record for the CIL checkpoint is written to disk.
The current log force ensures this by submitting the current ACTIVE
iclog that the commit record was written to. We need the CIL to
actually write this commit record to disk for an async push to
ensure that the checkpoint actually makes it to disk and unpins the
pinned items in the checkpoint on completion. Hence we need to pass
down to the CIL push that we are doing an async flush so that it can
switch out the commit_iclog if necessary to get written to disk when
the commit iclog is finally released.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:30 -07:00
Dave Chinner
68a74dcae6 xfs: order CIL checkpoint start records
Because log recovery depends on strictly ordered start records as
well as strictly ordered commit records.

This is a zero day bug in the way XFS writes pipelined transactions
to the journal which is exposed by fixing the zero day bug that
prevents the CIL from pipelining checkpoints. This re-introduces
explicit concurrent commits back into the on-disk journal and hence
out of order start records.

The XFS journal commit code has never ordered start records and we
have relied on strict commit record ordering for correct recovery
ordering of concurrently written transactions. Unfortunately, root
cause analysis uncovered the fact that log recovery uses the LSN of
the start record for transaction commit processing. Hence, whilst
the commits are processed in strict order by recovery, the LSNs
associated with the commits can be out of order and so recovery may
stamp incorrect LSNs into objects and/or misorder intents in the AIL
for later processing. This can result in log recovery failures
and/or on disk corruption, sometimes silent.

Because this is a long standing log recovery issue, we can't just
fix log recovery and call it good. This still leaves older kernels
susceptible to recovery failures and corruption when replaying a log
from a kernel that pipelines checkpoints. There is also the issue
that in-memory ordering for AIL pushing and data integrity
operations are based on checkpoint start LSNs, and if the start LSN
is incorrect in the journal, it is also incorrect in memory.

Hence there's really only one choice for fixing this zero-day bug:
we need to strictly order checkpoint start records in ascending
sequence order in the log, the same way we already strictly order
commit records.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:30 -07:00
Dave Chinner
caa80090d1 xfs: attach iclog callbacks in xlog_cil_set_ctx_write_state()
Now that we have a mechanism to guarantee that the callbacks
attached to an iclog are owned by the context that attaches them
until they drop their reference to the iclog via
xlog_state_release_iclog(), we can attach callbacks to the iclog at
any time we have an active reference to the iclog.

xlog_state_get_iclog_space() always guarantees that the commit
record will fit in the iclog it returns, so we can move this IO
callback setting to xlog_cil_set_ctx_write_state(), record the
commit iclog in the context and remove the need for the commit iclog
to be returned by xlog_write() altogether.

This, in turn, allows us to move the wakeup for ordered commit
record writes up into xlog_cil_set_ctx_write_state(), too, because
we have been guaranteed that this commit record will be physically
located in the iclog before any waiting commit record at a higher
sequence number will be granted iclog space.

This further cleans up the post commit record write processing in
the CIL push code, especially as xlog_state_release_iclog() will now
clean up the context when shutdown errors occur.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:30 -07:00
Dave Chinner
bf034bc827 xfs: factor out log write ordering from xlog_cil_push_work()
So we can use it for start record ordering as well as commit record
ordering in future.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:29 -07:00
Dave Chinner
c45aba40cf xfs: pass a CIL context to xlog_write()
Pass the CIL context to xlog_write() rather than a pointer to a LSN
variable. Only the CIL checkpoint calls to xlog_write() need to know
about the start LSN of the writes, so rework xlog_write to directly
write the LSNs into the CIL context structure.

This removes the commit_lsn variable from xlog_cil_push_work(), so
now we only have to issue the commit record ordering wakeup from
there.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:29 -07:00
Dave Chinner
2ce82b722d xfs: move xlog_commit_record to xfs_log_cil.c
It is only used by the CIL checkpoints, and is the counterpart to
start record formatting and writing that is already local to
xfs_log_cil.c.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2021-08-16 12:09:29 -07:00