Commit graph

1,169,205 commits

Author SHA1 Message Date
Jia-Ju Bai
c91a5b1c22 platform/x86: huawei-wmi: check the return value of device_create_file()
The function device_create_file() in huawei_wmi_battery_add() can fail,
so its return value should be checked.

Fixes: 355a070b09 ("platform/x86: huawei-wmi: Add battery charging thresholds")
Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Link: https://lore.kernel.org/r/20220303022421.313-1-baijiaju1990@gmail.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2022-03-08 16:33:15 +01:00
Arnd Bergmann
7b4fc7c6f9 This pull request contains Broadcom ARM64-based SoCs Device Tree updates
for 5.18, please pull the following:
 
 - Krzysztof aligns the PL330 DMA controller node name to the schema
 
 - Rafal corrects the TWD (Timer/Watchdog) block, adds the watchdog node,
   I2C controller node and the pinctrl node for the 4908 SoC
 
 - Kuldeep fixes the Northstar 2 SPI properties as well as the PL022 SPI
   controller clock names
 
 - Frank fixes the SATA node names to conform to the AHCI controller
   schema
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAmImX64ACgkQh9CWnEQH
 BwRKhQ//RUIUtJqWOZNMkvspu2VaIOa4DeDFXHQ2F8X7hoRsRw93mksxk90xBuIG
 Oz4UdzF5D0cKwXdlNWeJ3V8er6qSkl5V37Z0iBUft6n1vYiqPzQHAG7lvI3r0ZNX
 Ial9H1TLuT36CeubcUlb88ztPvMZYDPoUDFQv8GKoavGldwMithoHe6SZ3SFGFVh
 /lzRyqJImJR3wITZJboLdyqkUvksj1lofR0kRM25bNZ1QeDxzEdA48svZYnexnGh
 PNPGvuhNlT63CBSdteXs5lU2pmt6OhaxUH6Vl9dWE5LznqCrEPAlSy6jiNsymgHp
 GqijueWGQyVQYqCE2T0VNowCTLY1a3bl7rFQUigZLCurbqYr932GwZP+r/1/xfqI
 pP96QjA/Fz4fjuH9yZ30dTCB3xe69GurM80V3udNi1nr8ExDjOY/3rmrEmKVLKDR
 Y94wgzjgzy1Wopvnzu9CtlabixQ7sv0NLJB6YjSSqc+ziBZsnJOl0+b7hWaBTuno
 UxBY3pIsekBg4MP6evPHs8muUHO9STXijDwnny6tNj5o/usGrfWIBtilNYnAYg/1
 /3UWnDArcV+/zpRhIwsAwYb19pUBOQCpKFLdZYw4yNss12KLqxvmA3fe6JXAu9HF
 bmCUEjAwuf3mtEN41V8Tjyp3ftuh7rO3VVjDuT72VfYiEh2QtKU=
 =nJaL
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmIndl0ACgkQmmx57+YA
 GNk5PhAAxL+CTTI8nidIhzO5kO/KZ4NIb7LO/QnMWknn+HeUdXPl0GDRyIpsXml9
 X5qcIzL4Npj0U8+UAHYarT6ngDcj8EZDWv+H5zRmt5qXSNhpfnlm+1OEgicy8Y1u
 XwgIfLtGbdE9w05i9fPPtSIjoAjMQpJEplOkKKzex3k8GN653dT8bLm/manevoL7
 7Sn27jxfQUcRM10QOJcWmF1fqgdl542J31bE4xl1axXww1Fa6aoZAXeeh+XlO8KB
 oXJhcw4HLW7LKpZUESCwTiXS7fymSgp73U2bRhr41g40BPzt8wJbmS5MMsY7eiLP
 9+kgfswtDrNt5NBDHFye71bU1YXvIAdcWkexlJfio8bsv8HweS+hU61+jpULpbtp
 EzttCHoljyyAIpnjOMe7mrQKsm4hTnTcB0vKBgZqpxAlLZaoKcrkknfZz57nwcHL
 xLtkug5lEp6jIXtAAQAYZ5ZwkQCUo4oaHlN16DypGvAsvSUd3UjQbLJBtfb7joac
 wQ8stJQGhMcSzjyiOAEwSHqJeau9uJ03xWHrKNYPAx8aj5eVtNLMXxNcq69mzMvb
 BbDUt8SMedxxficxteZfC3tkoH6CQ+zOHSEAzm/A+Q0GvJkxOkyDt6IW+BE30bGE
 vDzfJmwBrf2N8FhnkbJsob+vlWZuAz4ezM5q8i4zHx6U2MoSc3I=
 =B+QM
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-5.18/devicetree-arm64' of https://github.com/Broadcom/stblinux into arm/dt

This pull request contains Broadcom ARM64-based SoCs Device Tree updates
for 5.18, please pull the following:

- Krzysztof aligns the PL330 DMA controller node name to the schema

- Rafal corrects the TWD (Timer/Watchdog) block, adds the watchdog node,
  I2C controller node and the pinctrl node for the 4908 SoC

- Kuldeep fixes the Northstar 2 SPI properties as well as the PL022 SPI
  controller clock names

- Frank fixes the SATA node names to conform to the AHCI controller
  schema

* tag 'arm-soc/for-5.18/devicetree-arm64' of https://github.com/Broadcom/stblinux:
  arm64: dts: stingray: Fix spi clock name
  arm64: dts: ns2: Fix spi clock name
  arm64: dts: broadcom: Fix sata nodename
  arm64: dts: ns2: Fix spi-cpol and spi-cpha property
  arm64: dts: broadcom: bcm4908: add I2C block
  arm64: dts: broadcom: bcm4908: add watchdog block
  arm64: dts: broadcom: bcm4908: add pinctrl binding
  arm64: dts: broadcom: bcm4908: use proper TWD binding
  arm64: dts: broadcom: align pl330 node name with dtschema

Link: https://lore.kernel.org/r/20220307194817.3754107-3-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-03-08 16:29:33 +01:00
Arnd Bergmann
dd5d787f48 This pull request contains Broadcom ARM-based SoCs Device Tree changes
for 5.18, please pull the following:
 
 - Arinc defines the switch ports of the RTL8365MB switch on the Asus
   RT-AC88U
 
 - Richard provides cache information for the BCM2835/36/37 and BCM2711
   SoCs such that tools like "lscpu -C" can report it when supported
 
 - Stefan adds support for the Raspberry Pi Zero 2 W (wireless)
 
 - Matthew defines the MAC address NVMEM cells for the Cisco Meraki
   MX64/MX65 devices, he also fixes the LED for these platforms.
 
 - Rafal adds the MAC addres NVMEM cell for the Luxul XWR-3150
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAmImXvIACgkQh9CWnEQH
 BwTVXxAAoyyP5yDDRysvcEoK0bgNnInp2RyVbYPgI/lMCkn5Ngs/9jTPEveVO3hq
 UOljI3uqmi4h+K+bLp7NpqybiueFH/92t26J2V+mqRQ7G1ivKnHXh08B3LBv5OU0
 IeOQgUwe+lQLlb6boH4O7dvju/3cnBpJUGW4KZpAzjxtmyRjekutmd+dIlkJr7zM
 jvNT+MLvpapCECWgXYo0km7TP1SnIB9TG1EWFPvf7YjYfBhroLEeKQS7K1VANtjG
 sVP0FVAuiXRx4cs751EnGoIR2Nla+XrbYrJxZBya81xAZ3rCzwjxbGztdCFDqm5j
 gf4D3Ww4NZHVIONOJOWGy7c6KIU1aiSGPzNaqK8rNGyxRH6cmavh5QEIEb6fSQOH
 9Gyg0aEbxxaH/j75pa4e60pbivise7+TI1yN23aJDTaIKTEYtkSADVZw3PW++il6
 kIOaCGmOaYHMQRCByjTxg6soqbaaSuUZ/A1Frh1Ox/EpfU+6N04+RC+D2OPuSPT/
 yuN0P3gYo8/Le1Zv1RB2+0CmNsgrAiRFy9kbD//6WEOaa7r7t3z4RTfFduGrZF2R
 XtxDatKKqIkNpWmHp0s2g28QXcDow1mnM/x6g6aA2UR8rCj7mg/odULZyxqStGxj
 ehh0M7gZo1P92HVf+HT5A6t/jXk+HEw0xddRh+xdzzrd+JHwTUo=
 =ZPvV
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmIndXEACgkQmmx57+YA
 GNm+zA//RCHiiWwfAgJXPquuZcdcioZw2R451MmvgfVA1ST2hTZexL2jkHym6X/b
 UE01YttV0A82JNWy+4zxMVkTefjhbp+rSNSSlMHN+Z3SXIXOZSIEW3eWc+D6UCqw
 /XQx8wthJUDCPdGw+e1sW8GqcagY6uwa2xyrBGlhQu9uv7Waor+Q6rbUOKRCr9oD
 j4o3wFdBFrMRCg6AzGhchDJ7454C87Nc6hC5xpst9za2O+4uU6LE3GOMuWEHQmTz
 hsqkuOPvMNW+6dXicC6nihRUdRS6Km781VFtc5+7xRvPRqpzdAhi83dJz0KmL/Aq
 mucnIn+hfPvL6DMGUzSLh+fGR3e2m7586RA7IeRA2Bd/xyJsEBZr59iXg+qhde3V
 0odwGqRNWPR5XKOhkSTBW5+JJZveCk7QcLvIYdfPMiNMSEBCSt8M46golgWTmbgA
 RB7cOzp5OPUjNmKKN2io4VO6pmnsFUT5ygR652x7LgpX/5t5nanjrOAOQJbObEid
 kgO8lFd2arOBW530x6xAyW/RGNZ7rbrCQVoa1jXD5lP1V3isGl32weNp5+dC1OeF
 IvEeU7chZli0dXpmKuD8tKU4M0XStBmMYQJHu44UArjYeB4gSR/aYztkaUhX01Aj
 jWILMQPMgfvEXb6NYqqxgJhmNpbscwLfhUHDu0gUJ2IhBwRKwTw=
 =8qCg
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-5.18/devicetree' of https://github.com/Broadcom/stblinux into arm/dt

This pull request contains Broadcom ARM-based SoCs Device Tree changes
for 5.18, please pull the following:

- Arinc defines the switch ports of the RTL8365MB switch on the Asus
  RT-AC88U

- Richard provides cache information for the BCM2835/36/37 and BCM2711
  SoCs such that tools like "lscpu -C" can report it when supported

- Stefan adds support for the Raspberry Pi Zero 2 W (wireless)

- Matthew defines the MAC address NVMEM cells for the Cisco Meraki
  MX64/MX65 devices, he also fixes the LED for these platforms.

- Rafal adds the MAC addres NVMEM cell for the Luxul XWR-3150

* tag 'arm-soc/for-5.18/devicetree' of https://github.com/Broadcom/stblinux:
  ARM: dts: BCM5301X: Add Ethernet MAC address to Luxul XWR-3150
  ARM: dts: NSP: MX6X: correct LED function types
  ARM: dts: NSP: MX6X: get mac-address from eeprom
  arm64: dts: broadcom: Add reference to RPi Zero 2 W
  ARM: dts: Add Raspberry Pi Zero 2 W
  dt-bindings: arm: bcm2835: Add Raspberry Pi Zero 2 W
  ARM: dts: bcm2835/6: Add the missing L1/L2 cache information
  ARM: dts: bcm2711: Add the missing L1/L2 cache information
  ARM: dts: bcm2837: Add the missing L1/L2 cache information
  ARM: dts: BCM5301X: define RTL8365MB switch on Asus RT-AC88U

Link: https://lore.kernel.org/r/20220307194817.3754107-2-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-03-08 16:25:37 +01:00
Arnd Bergmann
e8f022f9ec Minor cleanup of ARM64 DTS for v5.18
The DT schema expects DMA controller nodes to follow certain node naming
 and having dma-cells property.  Adjust the DTS files to pass DT schema
 checks.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmImQd0QHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD15hhD/99coMYC+XVBpdu79/HtEv86ALj15ydibAZ
 /uvhf/DuVooZYw1QBX4wVjJN6nBF9UYHmxy25bnOx6Ufs1l961FjM5vguClgkZwJ
 aCF7vbLRtkGnPWqDtdhRhxwf4XXW0kIMy58HvRxXzpo2i6xWwx+GRluvAWHaqrL+
 Fn5Q35NxJWAKovGI7DXU4xQfC0vvY8MSArcHmz6CbQqwPx9GouFXb6n9olUmcW3d
 wQj7SsuOsvMrhF6mWr4uO39tOR9JO8CdAZjoUkM1EoV4lP4zDMWJ20p4Ocmg+HXG
 s153aMXKWC5QbV2x7cU5NRX0D/a3M5bxUPJ6h633iB2yZ0GArOlKr/te0qPf+cV/
 7LBfLymQmAufd5I5UVrWURcWgx1LgD01MsSifnPs5YR9yykPeKCDeCwJrysK1zHc
 q3aBfWSXsZ0OtFi44a9leJiEkwa67gRAzK0UvKVYJHkd2hRIPlymA2ZTW8NxM6TD
 RCsGjxQz5imvAPR64vKeIpfzWNzAZd2KOaNn0maz0ej3JyFdRaVjgszaGOPfmP9u
 2UqqFeQfv8UGpXdvC8nbc29szqRPYANmXNKZwJZ8ztFnteJx4I+cJcw3SE1u192T
 ulhHGvwh1TZFZrUjGU052bINM1S3QXvsD/kHhDg+sJzfAetcSM9mlIgnEjPF9vg1
 l/vuEeolxw==
 =/7Y4
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmIndUEACgkQmmx57+YA
 GNmauxAAptI+unmLKDUClEJHKhSITUh8Eh3qdKJKKN4LbaGce7Abu5Utp6eLILvH
 trhxv3/4AXMGRkrl5JATyks2OYVaOvwhQJs5iQyMnkJ/6W8Y/q4DdCPbSB+tywmo
 neuUCfovsW6Y2Bt6+jMxVYm0LuA7/szC3+9HwX3i3tD35ceWFSWfTatGqCSuSveB
 TxdAU3GfA+KyL/czxjvOdwgB2omSfuOs6dDvm/qT0bwEUBJI/0djXn209cRylcSx
 d/oU3G2Cb3SHtTAQfFVrzHENLPpyiZsVgfc6FutRaGjnXI0cUH7TM8k8KtwztCcE
 QMadmK1JLQUoIruj5Gf3eNjTOaqc3nDk5m+6R/bK3lMLtEhg8Qx5UhTCRI2OE8F8
 wURjGsww/eK26ucUwD8i+X4KzVJlrUrYGslRO3z984vCfIRtH49d9RcsiAwsd8+o
 6O/KH//otebn7AAfUHwmsODTuq97j/5Y52gJAMOoz03CwNC6wS5o4g2eK9vpPZSO
 fLhKMMPyEeakg/Lal71KJ/ZYD0HuRoWoCzqZr0dWQIWd2hY/SuOKGhgxAKo+S2zt
 ZPTRsaLoS9cJydpd3+p5EWMsQJt6CvPaM1lz5PgxYMTFHsx+SUNOxERsqHpH6YTb
 jYD2O0jpxbLKvAqrrkkr5mqQTnu5RYKKnyy/3dP1vyuYtGvbctU=
 =7PmD
 -----END PGP SIGNATURE-----

Merge tag 'dt64-cleanup-5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/dt

Minor cleanup of ARM64 DTS for v5.18

The DT schema expects DMA controller nodes to follow certain node naming
and having dma-cells property.  Adjust the DTS files to pass DT schema
checks.

* tag 'dt64-cleanup-5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  arm64: dts: lg: align pl330 node name with dtschema
  arm64: dts: lg: add dma-cells to pl330 node
  arm64: dts: juno: align pl330 node name with dtschema

Link: https://lore.kernel.org/r/20220307173614.157884-1-krzysztof.kozlowski@canonical.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-03-08 16:24:49 +01:00
Arnd Bergmann
1a38f961c4 AT91 DT #2 for 5.18:
- Align one sam9x60ek regulator with reality at vdd_1v15
 - Clean sama7g5 i2c nodes
 - Add EIC and NAND nodes to sama7g5
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQQ5TRCVIBiyi/S+BG4fOrpwrNPNDAUCYiIzawAKCRAfOrpwrNPN
 DCk9AQCT+C8zZhkLzAxocmVpCFof63J9Rqu56ZGcK2AhSkGj3gD/UmNizVT9KRdT
 gKLHL3mxiU8Hw0sZZvyfKlYPaJwxFQ4=
 =m0+u
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmIndLQACgkQmmx57+YA
 GNm3nA/+NhFxbecEs8Lv2WMsMKNrJ+tG4I0o993nP1AjMKhl8WYeYe81JHjkLIeo
 zKaIXvNdSeZ2f7hDIWgKOr34jwjLtuyEJVe/GFvg1T25UG1rsfMbD+lpS28/jUwY
 BoZv3fwKijjXML1lSRGQxfYVrJypQXExdS0XkJL3WMBdeiICvZUcVuJVcjOUWrLk
 jEUjUDyzulpwxowI0DOKFZBydO2GvT6YTGaCe6MbaLErRGc3wF6PjyzZTHz4Kfmw
 4/OAuikvRF8nL0WU3fnlZAj/iMW35258WdbkF1JhjeDvSQ6uvQm7GaT/AKyWvDBu
 Jh/wsgRNt5GSdbSKJs3EOMpm+oGt/FBuZLVRoQB2HI0thwUWvpK2WJg7iCyzH5zF
 TD286uC6ZYqICIcexghnPJ8EBNAgptaetfQwRMh6J7fK83lW3lDENg80BJ19/tGC
 EVeC5wdz05QIPnW7tYcPzqWTKKP/fVeNf8LAoMlpXnGCGdahtkzWIM6OamECiGYC
 Cbf5cBbswlJkv/qVJuAeDoKZeDEKU1LjW1OchS7yW4UBZD/nyrMJBTSktfMf1U3+
 13Mm9vSlaNgBrA+sLTTwH+ShACKvN+w3K4MS933DLnTmN/stqzrf2DxKRQrpPs1t
 PwaEP50X6vKlaZzcf7Bd0Q643YaKr3De4UazwNig0Kr9wXMXSuw=
 =SwNp
 -----END PGP SIGNATURE-----

Merge tag 'at91-dt-5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into arm/dt

AT91 DT #2 for 5.18:

- Align one sam9x60ek regulator with reality at vdd_1v15
- Clean sama7g5 i2c nodes
- Add EIC and NAND nodes to sama7g5

* tag 'at91-dt-5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux:
  ARM: dts: at91: sama7g5: Add NAND support
  ARM: dts: at91: sama7g5: add eic node
  ARM: dts: at91: sama7g5: Remove unused properties in i2c nodes
  ARM: dts: at91: sam9x60ek: modify vdd_1v5 regulator to vdd_1v15

Link: https://lore.kernel.org/r/20220304160036.27392-1-nicolas.ferre@microchip.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-03-08 16:22:28 +01:00
K Prateek Nayak
7f434dff76 sched/topology: Remove redundant variable and fix incorrect type in build_sched_domains
While investigating the sparse warning reported by the LKP bot [1],
observed that we have a redundant variable "top" in the function
build_sched_domains that was introduced in the recent commit
e496132ebe ("sched/fair: Adjust the allowed NUMA imbalance when
SD_NUMA spans multiple LLCs")

The existing variable "sd" suffices which allows us to remove the
redundant variable "top" while annotating the other variable "top_p"
with the "__rcu" annotation to silence the sparse warning.

[1] https://lore.kernel.org/lkml/202202170853.9vofgC3O-lkp@intel.com/

Fixes: e496132ebe ("sched/fair: Adjust the allowed NUMA imbalance when SD_NUMA spans multiple LLCs")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Link: https://lore.kernel.org/r/20220218162743.1134-1-kprateek.nayak@amd.com
2022-03-08 16:08:40 +01:00
Dietmar Eggemann
821aecd09e sched/deadline,rt: Remove unused parameter from pick_next_[rt|dl]_entity()
The `struct rq *rq` parameter isn't used. Remove it.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Link: https://lore.kernel.org/r/20220302183433.333029-7-dietmar.eggemann@arm.com
2022-03-08 16:08:40 +01:00
Dietmar Eggemann
71d29747b0 sched/deadline,rt: Remove unused functions for !CONFIG_SMP
The need_pull_[rt|dl]_task() and pull_[rt|dl]_task() functions are not
used on a !CONFIG_SMP system. Remove them.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Link: https://lore.kernel.org/r/20220302183433.333029-6-dietmar.eggemann@arm.com
2022-03-08 16:08:39 +01:00
Dietmar Eggemann
f4478e7c85 sched/deadline: Use __node_2_[pdl|dle]() and rb_first_cached() consistently
Deploy __node_2_pdl(node), __node_2_dle(node) and rb_first_cached()
consistently throughout the sched class source file which makes the
code at least easier to read.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Link: https://lore.kernel.org/r/20220302183433.333029-5-dietmar.eggemann@arm.com
2022-03-08 16:08:39 +01:00
Dietmar Eggemann
772b6539fd sched/deadline: Merge dl_task_can_attach() and dl_cpu_busy()
Both functions are doing almost the same, that is checking if admission
control is still respected.

With exclusive cpusets, dl_task_can_attach() checks if the destination
cpuset (i.e. its root domain) has enough CPU capacity to accommodate the
task.
dl_cpu_busy() checks if there is enough CPU capacity in the cpuset in
case the CPU is hot-plugged out.

dl_task_can_attach() is used to check if a task can be admitted while
dl_cpu_busy() is used to check if a CPU can be hotplugged out.

Make dl_cpu_busy() able to deal with a task and use it instead of
dl_task_can_attach() in task_can_attach().

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Link: https://lore.kernel.org/r/20220302183433.333029-4-dietmar.eggemann@arm.com
2022-03-08 16:08:39 +01:00
Dietmar Eggemann
f1304ecbef sched/deadline: Move bandwidth mgmt and reclaim functions into sched class source file
Move the deadline bandwidth management (admission control) functions
__dl_add(), __dl_sub() and __dl_overflow() as well as the bandwidth
reclaim function __dl_update() from private task scheduler header file
to the deadline sched class source file.
The functions are only used internally so they don't have to be
exported.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Link: https://lore.kernel.org/r/20220302183433.333029-3-dietmar.eggemann@arm.com
2022-03-08 16:08:39 +01:00
Dietmar Eggemann
eb77cf1c15 sched/deadline: Remove unused def_dl_bandwidth
Since commit 1724813d9f ("sched/deadline: Remove the sysctl_sched_dl
knobs") the default deadline bandwidth control structure has no purpose.
Remove it.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Link: https://lore.kernel.org/r/20220302183433.333029-2-dietmar.eggemann@arm.com
2022-03-08 16:08:38 +01:00
Arnd Bergmann
756f4ae145 arm64: dts: ZynqMP DT changes for v5.18
- Dropping #stream-id-cells
 - Add missing dma-cells and change dma node names
 -----BEGIN PGP SIGNATURE-----
 
 iF0EABECAB0WIQQbPNTMvXmYlBPRwx7KSWXLKUoMIQUCYiDcywAKCRDKSWXLKUoM
 IcGaAJwKIckkfXL3q1BwYtd5TWz+Cxb/OQCZAdumbjGsl20YiLl70W5R82pS0Is=
 =gb7o
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmIncPUACgkQmmx57+YA
 GNmNfw//USkXcgjQFbKRPPJj7BaSNSBOZQ7439ReGN+39FpRcdlCLH+cdG+0qLLg
 ntacDpglzx6K2hg5KvPLHRQgMsxXV3mooxBj8OHMUYt98zjiMtjNtlrIZmQEvtqM
 OG7s3aXB9xldSYa3kCMV7jKYy2bwhFeOe9qcTVFF09vUN+Hq5vB+n+H0FP13bnIE
 I/galZvks0AcimyGjUQrvz8ACGTF3vTrV3Hup6wNI1tYvGBPRYnPFCddXHeIqO5K
 zjf/jxGZ/iIP43e8mkhiAvq4Nq3pJm1E2PrZv5p333wW1e9Tk1XeXeOc+1asGgAU
 Tl3+EriL44OAXuqml2cWtBEcd+HBWfNwEod7qmsWw/MvG8KIWNy/SI9yROTwQwht
 BMewg5d9Bn3dR3vaVoUcCEWHi4r+b+hkNt/8R3zwLI5BdofbRVjhXwWHYKeuPIL0
 yeFwr6YcS9QZs3Qh9OK4ARczD7cUqTTGQWovQPcEzfgVwbjuAoz3PNUg+y6zmSBi
 bCR58cgMq5OOpWv9MquvNY+lNT3asXKupSRze53p8i+AviDTMo61kAKbBkZgFF2U
 fAFGwlnMjaYt9/Ha5bjQTmD9KO8W7R7RKYXhEejxwWC+etdIJuK66sSuwlDg2LLd
 5ua1at5vou0XNStqTANR2o058xC8u9/a11NDPVS3aPEEyK7F0gg=
 =5iZX
 -----END PGP SIGNATURE-----

Merge tag 'zynqmp-dt-for-v5.18' of https://github.com/Xilinx/linux-xlnx into arm/dt

arm64: dts: ZynqMP DT changes for v5.18

- Dropping #stream-id-cells
- Add missing dma-cells and change dma node names

* tag 'zynqmp-dt-for-v5.18' of https://github.com/Xilinx/linux-xlnx:
  arm64: zynqmp: Rename dma to dma-controller
  arm64: zynqmp: Add missing #dma-cells property
  arm64: xilinx: dts: drop legacy property #stream-id-cells

Link: https://lore.kernel.org/r/19464dc6-eca9-f9a7-8aba-43af094d7c37@xilinx.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-03-08 16:06:29 +01:00
Felix Maurer
d23a872032 selftests/bpf: Make test_lwt_ip_encap more stable and faster
In test_lwt_ip_encap, the ingress IPv6 encap test failed from time to
time. The failure occured when an IPv4 ping through the IPv6 GRE
encapsulation did not receive a reply within the timeout. The IPv4 ping
and the IPv6 ping in the test used different timeouts (1 sec for IPv4
and 6 sec for IPv6), probably taking into account that IPv6 might need
longer to successfully complete. However, when IPv4 pings (with the
short timeout) are encapsulated into the IPv6 tunnel, the delays of IPv6
apply.

The actual reason for the long delays with IPv6 was that the IPv6
neighbor discovery sometimes did not complete in time. This was caused
by the outgoing interface only having a tentative link local address,
i.e., not having completed DAD for that lladdr. The ND was successfully
retried after 1 sec but that was too late for the ping timeout.

The IPv6 addresses for the test were already added with nodad. However,
for the lladdrs, DAD was still performed. We now disable DAD in the test
netns completely and just assume that the two lladdrs on each veth pair
do not collide. This removes all the delays for IPv6 traffic in the
test.

Without the delays, we can now also reduce the delay of the IPv6 ping to
1 sec. This makes the whole test complete faster because we don't need
to wait for the excessive timeout for each IPv6 ping that is supposed
to fail.

Fixes: 0fde56e438 ("selftests: bpf: add test_lwt_ip_encap selftest")
Signed-off-by: Felix Maurer <fmaurer@redhat.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/4987d549d48b4e316cd5b3936de69c8d4bc75a4f.1646305899.git.fmaurer@redhat.com
2022-03-08 16:03:58 +01:00
Russell King (Oracle)
25875aa71d ARM: include unprivileged BPF status in Spectre V2 reporting
The mitigations for Spectre-BHB are only applied when an exception
is taken, but when unprivileged BPF is enabled, userspace can
load BPF programs that can be used to exploit the problem.

When unprivileged BPF is enabled, report the vulnerable status via
the spectre_v2 sysfs file.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2022-03-08 14:46:08 +00:00
Hans de Goede
4fecb1e93e ACPI / x86: Add skip i2c clients quirk for Lenovo Yoga Tablet 1050F/L
The Yoga Tablet 1050F/L is a x86 ACPI tablet which ships with Android x86
as factory OS. Its DSDT contains a bunch of I2C devices which are not
actually there, causing various resource conflicts (the Android x86
kernel fork ignores I2C devices described in the DSDT).

Add a ACPI_QUIRK_SKIP_I2C_CLIENTS for the Nextbook Ares 8 to the
acpi_quirk_skip_dmi_ids table to woraround this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2022-03-08 15:41:27 +01:00
Hans de Goede
f38312c9b5 ACPI / x86: Add skip i2c clients quirk for Nextbook Ares 8
The Nextbook Ares 8 is a x86 ACPI tablet which ships with Android x86
as factory OS. Its DSDT contains a bunch of I2C devices which are not
actually there, causing various resource conflicts (the Android x86
kernel fork ignores I2C devices described in the DSDT).

Add a ACPI_QUIRK_SKIP_I2C_CLIENTS for the Nextbook Ares 8 to the
acpi_quirk_skip_dmi_ids table to woraround this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2022-03-08 15:41:27 +01:00
Claudiu Beznea
8e842f02af clk: at91: clk-master: remove dead code
Commit facb87ad75 ("clk: at91: sama7g5: remove prescaler part of master
clock") removed the master clock's prescaler from clock tree of SAMA7G5
as it has been discovered that there is a hardware bug when trying to
change it at run-time (bug is described in description of
commit facb87ad75 ("clk: at91: sama7g5: remove prescaler part of master
clock")). This was previously changed at CPUFreq driver request. Thus, with
commit facb87ad75 ("clk: at91: sama7g5: remove prescaler part of master
clock") there is no need of code that handles run-time changes of master
clock's prescaler, thus remove this code.

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20220203110202.18329-1-claudiu.beznea@microchip.com
2022-03-08 15:37:08 +01:00
Shung-Hsi Yu
44e9a741ca bpf: Determine buf_info inside check_buffer_access()
Instead of determining buf_info string in the caller of check_buffer_access(),
we can determine whether the register type is read-only through
type_is_rdonly_mem() helper inside check_buffer_access() and construct
buf_info, making the code slightly cleaner.

Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/YiWYLnAkEZXBP/gH@syu-laptop
2022-03-08 15:36:45 +01:00
Codrin Ciubotariu
1a944729d8 clk: at91: sama7g5: fix parents of PDMCs' GCLK
Audio PLL can be used as parent by the GCLKs of PDMCs.

Fixes: cb783bbbcf ("clk: at91: sama7g5: add clock support for sama7g5")
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20220304182616.1920392-1-codrin.ciubotariu@microchip.com
2022-03-08 15:35:35 +01:00
Sean Christopherson
bb95dfb9e2 KVM: x86/mmu: Defer TLB flush to caller when freeing TDP MMU shadow pages
Defer TLB flushes to the caller when freeing TDP MMU shadow pages instead
of immediately flushing.  Because the shadow pages are freed in an RCU
callback, so long as at least one CPU holds RCU, all CPUs are protected.
For vCPUs running in the guest, i.e. consuming TLB entries, KVM only
needs to ensure the caller services the pending TLB flush before dropping
its RCU protections.  I.e. use the caller's RCU as a proxy for all vCPUs
running in the guest.

Deferring the flushes allows batching flushes, e.g. when installing a
1gb hugepage and zapping a pile of SPs.  And when zapping an entire root,
deferring flushes allows skipping the flush entirely (because flushes are
not needed in that case).

Avoiding flushes when zapping an entire root is especially important as
synchronizing with other CPUs via IPI after zapping every shadow page can
cause significant performance issues for large VMs.  The issue is
exacerbated by KVM zapping entire top-level entries without dropping
RCU protection, which can lead to RCU stalls even when zapping roots
backing relatively "small" amounts of guest memory, e.g. 2tb.  Removing
the IPI bottleneck largely mitigates the RCU issues, though it's likely
still a problem for 5-level paging.  A future patch will further address
the problem by zapping roots in multiple passes to avoid holding RCU for
an extended duration.

Reviewed-by: Ben Gardon <bgardon@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220226001546.360188-20-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:57 -05:00
Sean Christopherson
bd29677952 KVM: x86/mmu: Do remote TLB flush before dropping RCU in TDP MMU resched
When yielding in the TDP MMU iterator, service any pending TLB flush
before dropping RCU protections in anticipation of using the caller's RCU
"lock" as a proxy for vCPUs in the guest.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-19-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:56 -05:00
Sean Christopherson
cf3e26427c KVM: x86/mmu: Zap only TDP MMU leafs in kvm_zap_gfn_range()
Zap only leaf SPTEs in the TDP MMU's zap_gfn_range(), and rename various
functions accordingly.  When removing mappings for functional correctness
(except for the stupid VFIO GPU passthrough memslots bug), zapping the
leaf SPTEs is sufficient as the paging structures themselves do not point
at guest memory and do not directly impact the final translation (in the
TDP MMU).

Note, this aligns the TDP MMU with the legacy/full MMU, which zaps only
the rmaps, a.k.a. leaf SPTEs, in kvm_zap_gfn_range() and
kvm_unmap_gfn_range().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-18-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:56 -05:00
Sean Christopherson
acbda82a81 KVM: x86/mmu: Require mmu_lock be held for write to zap TDP MMU range
Now that all callers of zap_gfn_range() hold mmu_lock for write, drop
support for zapping with mmu_lock held for read.  That all callers hold
mmu_lock for write isn't a random coincidence; now that the paths that
need to zap _everything_ have their own path, the only callers left are
those that need to zap for functional correctness.  And when zapping is
required for functional correctness, mmu_lock must be held for write,
otherwise the caller has no guarantees about the state of the TDP MMU
page tables after it has run, e.g. the SPTE(s) it zapped can be
immediately replaced by a vCPU faulting in a page.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-17-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:55 -05:00
Sean Christopherson
e2b5b21d3a KVM: x86/mmu: Add dedicated helper to zap TDP MMU root shadow page
Add a dedicated helper for zapping a TDP MMU root, and use it in the three
flows that do "zap_all" and intentionally do not do a TLB flush if SPTEs
are zapped (zapping an entire root is safe if and only if it cannot be in
use by any vCPU).  Because a TLB flush is never required, unconditionally
pass "false" to tdp_mmu_iter_cond_resched() when potentially yielding.

Opportunistically document why KVM must not yield when zapping roots that
are being zapped by kvm_tdp_mmu_put_root(), i.e. roots whose refcount has
reached zero, and further harden the flow to detect improper KVM behavior
with respect to roots that are supposed to be unreachable.

In addition to hardening zapping of roots, isolating zapping of roots
will allow future simplification of zap_gfn_range() by having it zap only
leaf SPTEs, and by removing its tricky "zap all" heuristic.  By having
all paths that truly need to free _all_ SPs flow through the dedicated
root zapper, the generic zapper can be freed of those concerns.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-16-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:55 -05:00
Sean Christopherson
77c8cd6b85 KVM: x86/mmu: Skip remote TLB flush when zapping all of TDP MMU
Don't flush the TLBs when zapping all TDP MMU pages, as the only time KVM
uses the slow version of "zap everything" is when the VM is being
destroyed or the owning mm has exited.  In either case, KVM_RUN is
unreachable for the VM, i.e. the guest TLB entries cannot be consumed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-15-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:54 -05:00
Sean Christopherson
c10743a182 KVM: x86/mmu: Zap only the target TDP MMU shadow page in NX recovery
When recovering a potential hugepage that was shattered for the iTLB
multihit workaround, precisely zap only the target page instead of
iterating over the TDP MMU to find the SP that was passed in.  This will
allow future simplification of zap_gfn_range() by having it zap only
leaf SPTEs.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220226001546.360188-14-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:54 -05:00
Sean Christopherson
626808d137 KVM: x86/mmu: Refactor low-level TDP MMU set SPTE helper to take raw values
Refactor __tdp_mmu_set_spte() to work with raw values instead of a
tdp_iter objects so that a future patch can modify SPTEs without doing a
walk, and without having to synthesize a tdp_iter.

No functional change intended.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-13-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:53 -05:00
Sean Christopherson
966da62ada KVM: x86/mmu: WARN if old _or_ new SPTE is REMOVED in non-atomic path
WARN if the new_spte being set by __tdp_mmu_set_spte() is a REMOVED_SPTE,
which is called out by the comment as being disallowed but not actually
checked.  Keep the WARN on the old_spte as well, because overwriting a
REMOVED_SPTE in the non-atomic path is also disallowed (as evidence by
lack of splats with the existing WARN).

Fixes: 08f07c800e ("KVM: x86/mmu: Flush TLBs after zap in TDP MMU PF handler")
Cc: Ben Gardon <bgardon@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-12-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:53 -05:00
Sean Christopherson
0e587aa733 KVM: x86/mmu: Add helpers to read/write TDP MMU SPTEs and document RCU
Add helpers to read and write TDP MMU SPTEs instead of open coding
rcu_dereference() all over the place, and to provide a convenient
location to document why KVM doesn't exempt holding mmu_lock for write
from having to hold RCU (and any future changes to the rules).

No functional change intended.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-11-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:52 -05:00
Sean Christopherson
a151aceca1 KVM: x86/mmu: Drop RCU after processing each root in MMU notifier hooks
Drop RCU protection after processing each root when handling MMU notifier
hooks that aren't the "unmap" path, i.e. aren't zapping.  Temporarily
drop RCU to let RCU do its thing between roots, and to make it clear that
there's no special behavior that relies on holding RCU across all roots.

Currently, the RCU protection is completely superficial, it's necessary
only to make rcu_dereference() of SPTE pointers happy.  A future patch
will rely on holding RCU as a proxy for vCPUs in the guest, e.g. to
ensure shadow pages aren't freed before all vCPUs do a TLB flush (or
rather, acknowledge the need for a flush), but in that case RCU needs to
be held until the flush is complete if and only if the flush is needed
because a shadow page may have been removed.  And except for the "unmap"
path, MMU notifier events cannot remove SPs (don't toggle PRESENT bit,
and can't change the PFN for a SP).

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-10-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:52 -05:00
Sean Christopherson
93fa50f644 KVM: x86/mmu: Batch TLB flushes from TDP MMU for MMU notifier change_spte
Batch TLB flushes (with other MMUs) when handling ->change_spte()
notifications in the TDP MMU.  The MMU notifier path in question doesn't
allow yielding and correcty flushes before dropping mmu_lock.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-9-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:51 -05:00
Sean Christopherson
c8e5a0d0e9 KVM: x86/mmu: Check for !leaf=>leaf, not PFN change, in TDP MMU SP removal
Look for a !leaf=>leaf conversion instead of a PFN change when checking
if a SPTE change removed a TDP MMU shadow page.  Convert the PFN check
into a WARN, as KVM should never change the PFN of a shadow page (except
when its being zapped or replaced).

From a purely theoretical perspective, it's not illegal to replace a SP
with a hugepage pointing at the same PFN.  In practice, it's impossible
as that would require mapping guest memory overtop a kernel-allocated SP.
Either way, the check is odd.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-8-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:51 -05:00
Paolo Bonzini
614f6970aa KVM: x86/mmu: do not allow readers to acquire references to invalid roots
Remove the "shared" argument of for_each_tdp_mmu_root_yield_safe, thus ensuring
that readers do not ever acquire a reference to an invalid root.  After this
patch, all readers except kvm_tdp_mmu_zap_invalidated_roots() treat
refcount=0/valid, refcount=0/invalid and refcount=1/invalid in exactly the
same way.  kvm_tdp_mmu_zap_invalidated_roots() is different but it also
does not acquire a reference to the invalid root, and it cannot see
refcount=0/invalid because it is guaranteed to run after
kvm_tdp_mmu_invalidate_all_roots().

Opportunistically add a lockdep assertion to the yield-safe iterator.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:50 -05:00
Paolo Bonzini
7c554d8e51 KVM: x86/mmu: only perform eager page splitting on valid roots
Eager page splitting is an optimization; it does not have to be performed on
invalid roots.  It is also the only case in which a reader might acquire
a reference to an invalid root, so after this change we know that readers
will skip both dying and invalid roots.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:50 -05:00
Sean Christopherson
226b8c8f85 KVM: x86/mmu: Require mmu_lock be held for write in unyielding root iter
Assert that mmu_lock is held for write by users of the yield-unfriendly
TDP iterator.  The nature of a shared walk means that the caller needs to
play nice with other tasks modifying the page tables, which is more or
less the same thing as playing nice with yielding.  Theoretically, KVM
could gain a flow where it could legitimately take mmu_lock for read in
a non-preemptible context, but that's highly unlikely and any such case
should be viewed with a fair amount of scrutiny.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-7-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:47 -05:00
Sean Christopherson
7ae5840e6f KVM: x86/mmu: Document that zapping invalidated roots doesn't need to flush
Remove the misleading flush "handling" when zapping invalidated TDP MMU
roots, and document that flushing is unnecessary for all flavors of MMUs
when zapping invalid/obsolete roots/pages.  The "handling" in the TDP MMU
is dead code, as zap_gfn_range() is called with shared=true, in which
case it will never return true due to the flushing being handled by
tdp_mmu_zap_spte_atomic().

No functional change intended.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-6-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:36 -05:00
Sean Christopherson
db01416b22 KVM: x86/mmu: Formalize TDP MMU's (unintended?) deferred TLB flush logic
Explicitly ignore the result of zap_gfn_range() when putting the last
reference to a TDP MMU root, and add a pile of comments to formalize the
TDP MMU's behavior of deferring TLB flushes to alloc/reuse.  Note, this
only affects the !shared case, as zap_gfn_range() subtly never returns
true for "flush" as the flush is handled by tdp_mmu_zap_spte_atomic().

Putting the root without a flush is ok because even if there are stale
references to the root in the TLB, they are unreachable because KVM will
not run the guest with the same ASID without first flushing (where ASID
in this context refers to both SVM's explicit ASID and Intel's implicit
ASID that is constructed from VPID+PCID+EPT4A+etc...).

Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220226001546.360188-5-seanjc@google.com>
Reviewed-by: Mingwei Zhang <mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:23 -05:00
Sean Christopherson
f28e9c7fce KVM: x86/mmu: Fix wrong/misleading comments in TDP MMU fast zap
Fix misleading and arguably wrong comments in the TDP MMU's fast zap
flow.  The comments, and the fact that actually zapping invalid roots was
added separately, strongly suggests that zapping invalid roots is an
optimization and not required for correctness.  That is a lie.

KVM _must_ zap invalid roots before returning from kvm_mmu_zap_all_fast(),
because when it's called from kvm_mmu_invalidate_zap_pages_in_memslot(),
KVM is relying on it to fully remove all references to the memslot.  Once
the memslot is gone, KVM's mmu_notifier hooks will be unable to find the
stale references as the hva=>gfn translation is done via the memslots.
If KVM doesn't immediately zap SPTEs and userspace unmaps a range after
deleting a memslot, KVM will fail to zap in response to the mmu_notifier
due to not finding a memslot corresponding to the notifier's range, which
leads to a variation of use-after-free.

The other misleading comment (and code) explicitly states that roots
without a reference should be skipped.  While that's technically true,
it's also extremely misleading as it should be impossible for KVM to
encounter a defunct root on the list while holding mmu_lock for write.
Opportunistically add a WARN to enforce that invariant.

Fixes: b7cccd397f ("KVM: x86/mmu: Fast invalidation for TDP MMU")
Fixes: 4c6654bd16 ("KVM: x86/mmu: Tear down roots before kvm_mmu_zap_all_fast returns")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-4-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:18 -05:00
Sean Christopherson
3354ef5a59 KVM: x86/mmu: Check for present SPTE when clearing dirty bit in TDP MMU
Explicitly check for present SPTEs when clearing dirty bits in the TDP
MMU.  This isn't strictly required for correctness, as setting the dirty
bit in a defunct SPTE will not change the SPTE from !PRESENT to PRESENT.
However, the guarded MMU_WARN_ON() in spte_ad_need_write_protect() would
complain if anyone actually turned on KVM's MMU debugging.

Fixes: a6a0b05da9 ("kvm: x86/mmu: Support dirty logging for the TDP MMU")
Cc: Ben Gardon <bgardon@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220226001546.360188-3-seanjc@google.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:31:17 -05:00
Paolo Bonzini
37b2a6510a KVM: use __vcalloc for very large allocations
Allocations whose size is related to the memslot size can be arbitrarily
large.  Do not use kvzalloc/kvcalloc, as those are limited to "not crazy"
sizes that fit in 32 bits.

Cc: stable@vger.kernel.org
Fixes: 7661809d49 ("mm: don't allow oversized kvmalloc() calls")
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:30:57 -05:00
Paolo Bonzini
3000f2e2fc mm: use vmalloc_array and vcalloc for array allocations
Instead of using array_size or just a multiply, use a function that
takes care of both the multiplication and the overflow checks.

Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:30:46 -05:00
Paolo Bonzini
a8749a35c3 mm: vmalloc: introduce array allocation functions
Linux has dozens of occurrences of vmalloc(array_size()) and
vzalloc(array_size()).  Allow to simplify the code by providing
vmalloc_array and vcalloc, as well as the underscored variants that let
the caller specify the GFP flags.

Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-08 09:30:17 -05:00
Robert Foss
d3258737af
Revert "arm64: dts: mt8183: jacuzzi: Fix bus properties in anx's DSI endpoint"
This reverts commit 32568ae375.

Signed-off-by: Robert Foss <robert.foss@linaro.org>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Matthias Brugger <matthias.bgg@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-03-08 15:20:17 +01:00
Robert Foss
979452fbc4
dt-bindings: drm/bridge: anx7625: Revert DPI support
Revert DPI support from binding.

DPI support relies on the bus-type enum which does not yet support
Mipi DPI, since no v4l2_fwnode_bus_type has been defined for this
bus type.

When DPI for anx7625 was initially added, it assumed that
V4L2_FWNODE_BUS_TYPE_PARALLEL was the correct bus type for
representing DPI, which it is not.

In order to prevent adding this mis-usage to the ABI, let's revert
the support.

Signed-off-by: Robert Foss <robert.foss@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-03-08 15:20:16 +01:00
Miaoqian Lin
6ae0a4d8fe
ASoC: mxs: Fix error handling in mxs_sgtl5000_probe
This function only calls of_node_put() in the regular path.
And it will cause refcount leak in error paths.
For example, when codec_np is NULL, saif_np[0] and saif_np[1]
are not NULL, it will cause leaks.

of_node_put() will check if the node pointer is NULL, so we can
call it directly to release the refcount of regular pointers.

Fixes: e968194b45 ("ASoC: mxs: add device tree support for mxs-sgtl5000")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Link: https://lore.kernel.org/r/20220308020146.26496-1-linmq006@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-03-08 13:41:15 +00:00
Codrin Ciubotariu
50291652af
ASoC: atmel: mchp-pdmc: add PDMC driver
The Pulse Density Microphone Controller (PDMC) interfaces up to 4 digital
microphones having Pulse Density Modulated (PDM) outputs. It generates a
single clock line and samples 1 or 2 data lines. The signal path includes
an audio grade programmable decimation filter and outputs 24-bit audio
words on the APB bus.

Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Link: https://lore.kernel.org/r/20220307122202.2251639-4-codrin.ciubotariu@microchip.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-03-08 13:38:59 +00:00
Codrin Ciubotariu
015044e961
ASoC: dt-bindings: Document Microchip's PDMC
Add DT bindings for the new Microchip PDMC embedded in sama7g5 SoCs.

Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Link: https://lore.kernel.org/r/20220307122202.2251639-3-codrin.ciubotariu@microchip.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-03-08 13:38:58 +00:00
Codrin Ciubotariu
9a1e13440a
ASoC: dmaengine: do not use a NULL prepare_slave_config() callback
Even if struct snd_dmaengine_pcm_config is used, prepare_slave_config()
callback might not be set. Check if this callback is set before using it.

Fixes: fa654e0853 ("ASoC: dmaengine-pcm: Provide default config")
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Link: https://lore.kernel.org/r/20220307122202.2251639-2-codrin.ciubotariu@microchip.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-03-08 13:38:56 +00:00
Will Deacon
0162052214 Merge branch 'for-next/perf-m1' into for-next/perf
Support for the CPU PMUs on the Apple M1.

* for-next/perf-m1:
  drivers/perf: Add Apple icestorm/firestorm CPU PMU driver
  drivers/perf: arm_pmu: Handle 47 bit counters
  irqchip/apple-aic: Move PMU-specific registers to their own include file
  arm64: dts: apple: Add t8303 PMU nodes
  arm64: dts: apple: Add t8103 PMU interrupt affinities
  irqchip/apple-aic: Wire PMU interrupts
  irqchip/apple-aic: Parse FIQ affinities from device-tree
  dt-bindings: apple,aic: Add affinity description for per-cpu pseudo-interrupts
  dt-bindings: apple,aic: Add CPU PMU per-cpu pseudo-interrupts
  dt-bindings: arm-pmu: Document Apple PMU compatible strings
2022-03-08 13:33:34 +00:00