summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThorsten Leemhuis <fedora@leemhuis.info>2021-07-19 09:16:30 +0200
committerThorsten Leemhuis <fedora@leemhuis.info>2021-07-19 09:16:30 +0200
commit57f04498b96e3b00167dc59571ec752d501f37e9 (patch)
treeb89a1431ddcd0647f539cc11eebdc7187c23b143
parent15d90b54717349a27d605daeb533eb60a786436a (diff)
parent9dd145afd403f614f5bd0391b76544609837b7bc (diff)
downloadkernel-57f04498b96e3b00167dc59571ec752d501f37e9.zip
kernel-57f04498b96e3b00167dc59571ec752d501f37e9.tar.gz
kernel-57f04498b96e3b00167dc59571ec752d501f37e9.tar.xz
merge origin
-rw-r--r--Patchlist.changelog69
-rw-r--r--kernel-aarch64-debug-fedora.config2
-rw-r--r--kernel-aarch64-debug-rhel.config6
-rw-r--r--kernel-aarch64-fedora.config2
-rw-r--r--kernel-aarch64-rhel.config6
-rw-r--r--kernel-armv7hl-debug-fedora.config2
-rw-r--r--kernel-armv7hl-fedora.config2
-rw-r--r--kernel-armv7hl-lpae-debug-fedora.config2
-rw-r--r--kernel-armv7hl-lpae-fedora.config2
-rw-r--r--kernel-i686-debug-fedora.config6
-rw-r--r--kernel-i686-fedora.config6
-rw-r--r--kernel-ppc64le-debug-fedora.config6
-rw-r--r--kernel-ppc64le-fedora.config6
-rw-r--r--kernel-x86_64-debug-fedora.config6
-rw-r--r--kernel-x86_64-fedora.config6
-rwxr-xr-xkernel.spec26
-rw-r--r--patch-5.13-redhat.patch870
-rw-r--r--sources6
18 files changed, 968 insertions, 63 deletions
diff --git a/Patchlist.changelog b/Patchlist.changelog
index 3407a86..dc33eaf 100644
--- a/Patchlist.changelog
+++ b/Patchlist.changelog
@@ -1,3 +1,72 @@
+https://gitlab.com/cki-project/kernel-ark/-/commit/21449ddd0db578d5dbf6eebe54e61e8f34254852
+ 21449ddd0db578d5dbf6eebe54e61e8f34254852 platform/x86: amd-pmc: Use return code on suspend
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/4619b73bd9e896fd14ffff3ff6752691ca49178f
+ 4619b73bd9e896fd14ffff3ff6752691ca49178f ACPI: PM: Only mark EC GPE for wakeup on Intel systems
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/f5c0a0b90aa95f4bcd4fabfef12c858ce6cd2838
+ f5c0a0b90aa95f4bcd4fabfef12c858ce6cd2838 platform/x86: amd-pmc: Add new acpi id for future PMC controllers
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/e3161dd5dc44260f7b92bb9ad86feaef5b4bced3
+ e3161dd5dc44260f7b92bb9ad86feaef5b4bced3 platform/x86: amd-pmc: Add support for ACPI ID AMDI0006
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/916af868cb51f5b4beb69bc89e1c7ae5fedcd2c8
+ 916af868cb51f5b4beb69bc89e1c7ae5fedcd2c8 amd-pmc: Add support for logging s0ix counters
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/69469b9d5e3946ebc32641d839a259adfb102bd5
+ 69469b9d5e3946ebc32641d839a259adfb102bd5 platform/x86: amd-pmc: Add support for logging SMU metrics
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/f247ee06dca20a0077f9ba40e45de203244076d1
+ f247ee06dca20a0077f9ba40e45de203244076d1 platform/x86: amd-pmc: call dump registers only once
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/4461aa443d6fdb8fe144e1c833f1f8041b04b4b0
+ 4461aa443d6fdb8fe144e1c833f1f8041b04b4b0 platform/x86: amd-pmc: Fix SMU firmware reporting mechanism
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/ef4982bb5ef41c72037729525325eb7afaaf5a59
+ ef4982bb5ef41c72037729525325eb7afaaf5a59 platform/x86: amd-pmc: Fix command completion code
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/3764cadafee393f09d9c10d5201de82de183183e
+ 3764cadafee393f09d9c10d5201de82de183183e ACPI: PM: Adjust behavior for field problems on AMD systems
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/7ea3b2567dae3b32f62308051094e9cf54bdb8fa
+ 7ea3b2567dae3b32f62308051094e9cf54bdb8fa ACPI: PM: s2idle: Add support for new Microsoft UUID
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/89872477be26440180dd7cc30c7c7cbdfda175db
+ 89872477be26440180dd7cc30c7c7cbdfda175db ACPI: PM: s2idle: Add support for multiple func mask
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/f231bad21add99d33483a17e28fde17b6b66f116
+ f231bad21add99d33483a17e28fde17b6b66f116 ACPI: PM: s2idle: Refactor common code
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/9c6dce4a57b9f141c3b3c0f2a16db0ffc08b0f76
+ 9c6dce4a57b9f141c3b3c0f2a16db0ffc08b0f76 ACPI: PM: s2idle: Use correct revision id
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/639c93bf40a55f2b2a2fd330854db91c00a68215
+ 639c93bf40a55f2b2a2fd330854db91c00a68215 ACPI: PM: s2idle: Add missing LPS0 functions for AMD
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/ce265e8b0015f8283d5a80d5238e83daded344a6
+ ce265e8b0015f8283d5a80d5238e83daded344a6 ACPI: Add quirks for AMD Renoir/Lucienne CPUs to force the D3 hint
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/87350d62d6fd0ec4c73a864f6528cbba973d7bc8
+ 87350d62d6fd0ec4c73a864f6528cbba973d7bc8 ACPI: Check StorageD3Enable _DSD property in ACPI code
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/78f3f35f89ac19ff2f336a0ece7ef3d3ff71ac22
+ 78f3f35f89ac19ff2f336a0ece7ef3d3ff71ac22 nvme-pci: look for StorageD3Enable on companion ACPI device instead
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/0a243d877fd0326498ac0030543d64b390986eb2
+ 0a243d877fd0326498ac0030543d64b390986eb2 ACPI: processor idle: Fix up C-state latency if not ordered
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/e5bd8b07661bdad460ab096bb87095d9318ea119
+ e5bd8b07661bdad460ab096bb87095d9318ea119 Revert "drm/rockchip: remove existing generic drivers to take over the device"
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/51ceb5f3efa65385feb712687c5749f9ce8b283c
+ 51ceb5f3efa65385feb712687c5749f9ce8b283c tpm_tis_spi: add missing SPI device ID entries
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/d1b159f0d298977cb2feac785c4274022f5ce960
+ d1b159f0d298977cb2feac785c4274022f5ce960 drm/rockchip: remove existing generic drivers to take over the device
+
+https://gitlab.com/cki-project/kernel-ark/-/commit/4db44a6a812dcde9dc3fe981402019aa4785b5b7
+ 4db44a6a812dcde9dc3fe981402019aa4785b5b7 arm64: dts: rockchip: disable USB type-c DisplayPort
+
https://gitlab.com/cki-project/kernel-ark/-/commit/9e2ed248fc44ab379a97547ae9dfa1592add81f2
9e2ed248fc44ab379a97547ae9dfa1592add81f2 can: bcm: delay release of struct bcm_op after synchronize_rcu
diff --git a/kernel-aarch64-debug-fedora.config b/kernel-aarch64-debug-fedora.config
index 68f221b..a157f73 100644
--- a/kernel-aarch64-debug-fedora.config
+++ b/kernel-aarch64-debug-fedora.config
@@ -7234,7 +7234,7 @@ CONFIG_TCG_NSC=m
CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
CONFIG_TCG_TIS_I2C_INFINEON=m
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-aarch64-debug-rhel.config b/kernel-aarch64-debug-rhel.config
index 903074d..5456f15 100644
--- a/kernel-aarch64-debug-rhel.config
+++ b/kernel-aarch64-debug-rhel.config
@@ -5739,10 +5739,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
# CONFIG_TCG_INFINEON is not set
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
# CONFIG_TCG_TIS_SPI is not set
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
diff --git a/kernel-aarch64-fedora.config b/kernel-aarch64-fedora.config
index 07ea629..c6e6940 100644
--- a/kernel-aarch64-fedora.config
+++ b/kernel-aarch64-fedora.config
@@ -7209,7 +7209,7 @@ CONFIG_TCG_NSC=m
CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
CONFIG_TCG_TIS_I2C_INFINEON=m
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-aarch64-rhel.config b/kernel-aarch64-rhel.config
index eb145c8..fa2fc05 100644
--- a/kernel-aarch64-rhel.config
+++ b/kernel-aarch64-rhel.config
@@ -5716,10 +5716,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
# CONFIG_TCG_INFINEON is not set
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
# CONFIG_TCG_TIS_SPI is not set
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
diff --git a/kernel-armv7hl-debug-fedora.config b/kernel-armv7hl-debug-fedora.config
index cc2842a..72053a8 100644
--- a/kernel-armv7hl-debug-fedora.config
+++ b/kernel-armv7hl-debug-fedora.config
@@ -7454,7 +7454,7 @@ CONFIG_TCG_NSC=m
CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
CONFIG_TCG_TIS_I2C_INFINEON=m
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-armv7hl-fedora.config b/kernel-armv7hl-fedora.config
index dfeda9c..98dfffe 100644
--- a/kernel-armv7hl-fedora.config
+++ b/kernel-armv7hl-fedora.config
@@ -7430,7 +7430,7 @@ CONFIG_TCG_NSC=m
CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
CONFIG_TCG_TIS_I2C_INFINEON=m
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-armv7hl-lpae-debug-fedora.config b/kernel-armv7hl-lpae-debug-fedora.config
index 292ec75..4650b46 100644
--- a/kernel-armv7hl-lpae-debug-fedora.config
+++ b/kernel-armv7hl-lpae-debug-fedora.config
@@ -7212,7 +7212,7 @@ CONFIG_TCG_NSC=m
CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
CONFIG_TCG_TIS_I2C_INFINEON=m
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-armv7hl-lpae-fedora.config b/kernel-armv7hl-lpae-fedora.config
index bfbddc7..01840be 100644
--- a/kernel-armv7hl-lpae-fedora.config
+++ b/kernel-armv7hl-lpae-fedora.config
@@ -7188,7 +7188,7 @@ CONFIG_TCG_NSC=m
CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
CONFIG_TCG_TIS_I2C_INFINEON=m
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-i686-debug-fedora.config b/kernel-i686-debug-fedora.config
index e37af99..ea304dc 100644
--- a/kernel-i686-debug-fedora.config
+++ b/kernel-i686-debug-fedora.config
@@ -6486,10 +6486,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
CONFIG_TCG_INFINEON=m
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-i686-fedora.config b/kernel-i686-fedora.config
index 3b08c10..ff10707 100644
--- a/kernel-i686-fedora.config
+++ b/kernel-i686-fedora.config
@@ -6462,10 +6462,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
CONFIG_TCG_INFINEON=m
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-ppc64le-debug-fedora.config b/kernel-ppc64le-debug-fedora.config
index b5cfddd..e7783cf 100644
--- a/kernel-ppc64le-debug-fedora.config
+++ b/kernel-ppc64le-debug-fedora.config
@@ -6084,10 +6084,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
# CONFIG_TCG_INFINEON is not set
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-ppc64le-fedora.config b/kernel-ppc64le-fedora.config
index c50be1f..100cf46 100644
--- a/kernel-ppc64le-fedora.config
+++ b/kernel-ppc64le-fedora.config
@@ -6059,10 +6059,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
# CONFIG_TCG_INFINEON is not set
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-x86_64-debug-fedora.config b/kernel-x86_64-debug-fedora.config
index 888fca3..9b556b3 100644
--- a/kernel-x86_64-debug-fedora.config
+++ b/kernel-x86_64-debug-fedora.config
@@ -6539,10 +6539,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
CONFIG_TCG_INFINEON=m
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel-x86_64-fedora.config b/kernel-x86_64-fedora.config
index 3103ef3..e1e689c 100644
--- a/kernel-x86_64-fedora.config
+++ b/kernel-x86_64-fedora.config
@@ -6515,10 +6515,10 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_CRB=y
CONFIG_TCG_INFINEON=m
CONFIG_TCG_NSC=m
-# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_ATMEL=m
# CONFIG_TCG_TIS_I2C_CR50 is not set
-# CONFIG_TCG_TIS_I2C_INFINEON is not set
-# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_TIS_SPI_CR50=y
CONFIG_TCG_TIS_SPI=m
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
diff --git a/kernel.spec b/kernel.spec
index 8d4dee5..efe1690 100755
--- a/kernel.spec
+++ b/kernel.spec
@@ -2879,6 +2879,32 @@ fi
#
#
%changelog
+* Wed Jul 14 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.13.2-0]
+- platform/x86: amd-pmc: Use return code on suspend (Mario Limonciello)
+- ACPI: PM: Only mark EC GPE for wakeup on Intel systems (Mario Limonciello)
+- platform/x86: amd-pmc: Add new acpi id for future PMC controllers (Shyam Sundar S K)
+- platform/x86: amd-pmc: Add support for ACPI ID AMDI0006 (Shyam Sundar S K)
+- amd-pmc: Add support for logging s0ix counters (Shyam Sundar S K)
+- platform/x86: amd-pmc: Add support for logging SMU metrics (Shyam Sundar S K)
+- platform/x86: amd-pmc: call dump registers only once (Shyam Sundar S K)
+- platform/x86: amd-pmc: Fix SMU firmware reporting mechanism (Shyam Sundar S K)
+- platform/x86: amd-pmc: Fix command completion code (Shyam Sundar S K)
+- ACPI: PM: Adjust behavior for field problems on AMD systems (Mario Limonciello)
+- ACPI: PM: s2idle: Add support for new Microsoft UUID (Pratik Vishwakarma)
+- ACPI: PM: s2idle: Add support for multiple func mask (Pratik Vishwakarma)
+- ACPI: PM: s2idle: Refactor common code (Pratik Vishwakarma)
+- ACPI: PM: s2idle: Use correct revision id (Pratik Vishwakarma)
+- ACPI: PM: s2idle: Add missing LPS0 functions for AMD (Alex Deucher)
+- ACPI: Add quirks for AMD Renoir/Lucienne CPUs to force the D3 hint (Mario Limonciello)
+- ACPI: Check StorageD3Enable _DSD property in ACPI code (Mario Limonciello)
+- nvme-pci: look for StorageD3Enable on companion ACPI device instead (Mario Limonciello)
+- ACPI: processor idle: Fix up C-state latency if not ordered (Mario Limonciello)
+- Revert "drm/rockchip: remove existing generic drivers to take over the device" (Justin M. Forbes)
+- all: unify and cleanup i2c TPM2 modules (Peter Robinson)
+- tpm_tis_spi: add missing SPI device ID entries (Javier Martinez Canillas)
+- drm/rockchip: remove existing generic drivers to take over the device (Javier Martinez Canillas)
+- arm64: dts: rockchip: disable USB type-c DisplayPort (Jian-Hong Pan)
+
* Wed Jul 07 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.13.1-0]
- Don't build bpftool as part of kernel (Justin M. Forbes)
- fedora: arm: Enable some i.MX8 options (Peter Robinson)
diff --git a/patch-5.13-redhat.patch b/patch-5.13-redhat.patch
index bf1bd1c..689f7d4 100644
--- a/patch-5.13-redhat.patch
+++ b/patch-5.13-redhat.patch
@@ -2,6 +2,7 @@
Makefile | 1 +
arch/arm/Kconfig | 4 +-
arch/arm64/Kconfig | 3 +-
+ .../boot/dts/rockchip/rk3399-pinebook-pro.dts | 2 +-
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
arch/arm64/kernel/acpi.c | 2 +-
arch/s390/include/asm/ipl.h | 1 +
@@ -9,8 +10,12 @@
arch/s390/kernel/setup.c | 4 +
arch/x86/kernel/setup.c | 22 +-
drivers/acpi/apei/hest.c | 8 +
+ drivers/acpi/device_pm.c | 32 ++
+ drivers/acpi/internal.h | 9 +
drivers/acpi/irq.c | 17 +-
drivers/acpi/scan.c | 9 +
+ drivers/acpi/x86/s2idle.c | 157 ++++--
+ drivers/acpi/x86/utils.c | 25 +
drivers/ata/libahci.c | 18 +
drivers/char/ipmi/ipmi_dmi.c | 15 +
drivers/char/ipmi/ipmi_msghandler.c | 16 +-
@@ -22,10 +27,13 @@
drivers/input/rmi4/rmi_driver.c | 124 +++--
drivers/iommu/iommu.c | 22 +
drivers/net/wireguard/main.c | 6 +
+ drivers/nvme/host/pci.c | 28 +-
drivers/pci/controller/pcie-rockchip-host.c | 12 +-
drivers/pci/quirks.c | 24 +
+ drivers/platform/x86/amd-pmc.c | 246 +++++++++-
drivers/scsi/smartpqi/smartpqi_init.c | 16 +
drivers/usb/core/hub.c | 7 +
+ include/linux/acpi.h | 5 +
include/linux/efi.h | 22 +-
include/linux/lsm_hook_defs.h | 2 +
include/linux/lsm_hooks.h | 6 +
@@ -34,7 +42,6 @@
init/Kconfig | 2 +-
kernel/crash_core.c | 28 +-
kernel/module_signing.c | 9 +-
- net/can/bcm.c | 6 +
security/integrity/platform_certs/load_uefi.c | 6 +-
security/lockdown/Kconfig | 13 +
security/lockdown/lockdown.c | 1 +
@@ -59,7 +66,7 @@
tools/testing/selftests/bpf/progs/linked_vars2.c | 55 ---
.../selftests/bpf/progs/test_static_linked1.c | 30 --
.../selftests/bpf/progs/test_static_linked2.c | 31 --
- 61 files changed, 517 insertions(+), 2258 deletions(-)
+ 68 files changed, 914 insertions(+), 2359 deletions(-)
diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst
index 75a9dd98e76e..3ff3291551f9 100644
@@ -84,7 +91,7 @@ index 75a9dd98e76e..3ff3291551f9 100644
Boot into System Kernel
diff --git a/Makefile b/Makefile
-index 069607cfe283..740904fbb0fc 100644
+index 31bbcc525535..b69dd0967af7 100644
--- a/Makefile
+++ b/Makefile
@@ -503,6 +503,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE
@@ -132,6 +139,19 @@ index 9f1d8566bbf9..ebb24a713210 100644
default "12" if ARM64_16K_PAGES
default "11"
help
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+index 2b5f001ff4a6..dcdb3cd75be7 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+@@ -386,7 +386,7 @@ mains_charger: dc-charger {
+ };
+
+ &cdn_dp {
+- status = "okay";
++ status = "disabled";
+ };
+
+ &cpu_b0 {
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
index 634a91af8e83..4b854eb21f72 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -184,7 +204,7 @@ index dba04fbc37a2..f809ab6441fd 100644
+ return !!ipl_secure_flag;
+}
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
-index 5aab59ad5688..c53572b81c37 100644
+index 382d73da134c..f5b2b127e24d 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -49,6 +49,7 @@
@@ -195,7 +215,7 @@ index 5aab59ad5688..c53572b81c37 100644
#include <linux/hugetlb.h>
#include <asm/boot_data.h>
-@@ -1113,6 +1114,9 @@ void __init setup_arch(char **cmdline_p)
+@@ -1114,6 +1115,9 @@ void __init setup_arch(char **cmdline_p)
log_component_list();
@@ -271,6 +291,67 @@ index 277f00b288d1..adbce15c273d 100644
hest_hdr = (struct acpi_hest_header *)(hest_tab + 1);
for (i = 0; i < hest_tab->error_source_count; i++) {
len = hest_esrc_len(hest_hdr);
+diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c
+index 9d2d3b9bb8b5..0cfdef2fc3ad 100644
+--- a/drivers/acpi/device_pm.c
++++ b/drivers/acpi/device_pm.c
+@@ -1338,4 +1338,36 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on)
+ return 1;
+ }
+ EXPORT_SYMBOL_GPL(acpi_dev_pm_attach);
++
++/**
++ * acpi_storage_d3 - Check if D3 should be used in the suspend path
++ * @dev: Device to check
++ *
++ * Return %true if the platform firmware wants @dev to be programmed
++ * into D3hot or D3cold (if supported) in the suspend path, or %false
++ * when there is no specific preference. On some platforms, if this
++ * hint is ignored, @dev may remain unresponsive after suspending the
++ * platform as a whole.
++ *
++ * Although the property has storage in the name it actually is
++ * applied to the PCIe slot and plugging in a non-storage device the
++ * same platform restrictions will likely apply.
++ */
++bool acpi_storage_d3(struct device *dev)
++{
++ struct acpi_device *adev = ACPI_COMPANION(dev);
++ u8 val;
++
++ if (force_storage_d3())
++ return true;
++
++ if (!adev)
++ return false;
++ if (fwnode_property_read_u8(acpi_fwnode_handle(adev), "StorageD3Enable",
++ &val))
++ return false;
++ return val == 1;
++}
++EXPORT_SYMBOL_GPL(acpi_storage_d3);
++
+ #endif /* CONFIG_PM */
+diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
+index e21611c9a170..7ac01b03ba67 100644
+--- a/drivers/acpi/internal.h
++++ b/drivers/acpi/internal.h
+@@ -236,6 +236,15 @@ static inline int suspend_nvs_save(void) { return 0; }
+ static inline void suspend_nvs_restore(void) {}
+ #endif
+
++#ifdef CONFIG_X86
++bool force_storage_d3(void);
++#else
++static inline bool force_storage_d3(void)
++{
++ return false;
++}
++#endif
++
+ /*--------------------------------------------------------------------------
+ Device properties
+ -------------------------------------------------------------------------- */
diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c
index c68e694fca26..146cba5ae5bc 100644
--- a/drivers/acpi/irq.c
@@ -315,7 +396,7 @@ index c68e694fca26..146cba5ae5bc 100644
return ctx.rc;
}
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
-index e10d38ac7cf2..684b241e89e9 100644
+index 438df8da6d12..d5343c0075f8 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1641,6 +1641,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
@@ -334,6 +415,298 @@ index e10d38ac7cf2..684b241e89e9 100644
INIT_LIST_HEAD(&resource_list);
acpi_dev_get_resources(device, &resource_list,
acpi_check_serial_bus_slave,
+diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
+index 2d7ddb8a8cb6..1c507804fb10 100644
+--- a/drivers/acpi/x86/s2idle.c
++++ b/drivers/acpi/x86/s2idle.c
+@@ -32,6 +32,9 @@ static const struct acpi_device_id lps0_device_ids[] = {
+ {"", },
+ };
+
++/* Microsoft platform agnostic UUID */
++#define ACPI_LPS0_DSM_UUID_MICROSOFT "11e00d56-ce64-47ce-837b-1f898f9aa461"
++
+ #define ACPI_LPS0_DSM_UUID "c4eb40a0-6cd2-11e2-bcfd-0800200c9a66"
+
+ #define ACPI_LPS0_GET_DEVICE_CONSTRAINTS 1
+@@ -39,6 +42,8 @@ static const struct acpi_device_id lps0_device_ids[] = {
+ #define ACPI_LPS0_SCREEN_ON 4
+ #define ACPI_LPS0_ENTRY 5
+ #define ACPI_LPS0_EXIT 6
++#define ACPI_LPS0_MS_ENTRY 7
++#define ACPI_LPS0_MS_EXIT 8
+
+ /* AMD */
+ #define ACPI_LPS0_DSM_UUID_AMD "e3f32452-febc-43ce-9039-932122d37721"
+@@ -49,7 +54,10 @@ static const struct acpi_device_id lps0_device_ids[] = {
+
+ static acpi_handle lps0_device_handle;
+ static guid_t lps0_dsm_guid;
+-static char lps0_dsm_func_mask;
++static int lps0_dsm_func_mask;
++
++static guid_t lps0_dsm_guid_microsoft;
++static int lps0_dsm_func_mask_microsoft;
+
+ /* Device constraint entry structure */
+ struct lpi_device_info {
+@@ -70,15 +78,7 @@ struct lpi_constraints {
+ int min_dstate;
+ };
+
+-/* AMD */
+-/* Device constraint entry structure */
+-struct lpi_device_info_amd {
+- int revision;
+- int count;
+- union acpi_object *package;
+-};
+-
+-/* Constraint package structure */
++/* AMD Constraint package structure */
+ struct lpi_device_constraint_amd {
+ char *name;
+ int enabled;
+@@ -96,15 +96,15 @@ static void lpi_device_get_constraints_amd(void)
+ int i, j, k;
+
+ out_obj = acpi_evaluate_dsm_typed(lps0_device_handle, &lps0_dsm_guid,
+- 1, ACPI_LPS0_GET_DEVICE_CONSTRAINTS,
++ rev_id, ACPI_LPS0_GET_DEVICE_CONSTRAINTS,
+ NULL, ACPI_TYPE_PACKAGE);
+
+- if (!out_obj)
+- return;
+-
+ acpi_handle_debug(lps0_device_handle, "_DSM function 1 eval %s\n",
+ out_obj ? "successful" : "failed");
+
++ if (!out_obj)
++ return;
++
+ for (i = 0; i < out_obj->package.count; i++) {
+ union acpi_object *package = &out_obj->package.elements[i];
+
+@@ -317,14 +317,15 @@ static void lpi_check_constraints(void)
+ }
+ }
+
+-static void acpi_sleep_run_lps0_dsm(unsigned int func)
++static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, guid_t dsm_guid)
+ {
+ union acpi_object *out_obj;
+
+- if (!(lps0_dsm_func_mask & (1 << func)))
++ if (!(func_mask & (1 << func)))
+ return;
+
+- out_obj = acpi_evaluate_dsm(lps0_device_handle, &lps0_dsm_guid, rev_id, func, NULL);
++ out_obj = acpi_evaluate_dsm(lps0_device_handle, &dsm_guid,
++ rev_id, func, NULL);
+ ACPI_FREE(out_obj);
+
+ acpi_handle_debug(lps0_device_handle, "_DSM function %u evaluation %s\n",
+@@ -336,11 +337,33 @@ static bool acpi_s2idle_vendor_amd(void)
+ return boot_cpu_data.x86_vendor == X86_VENDOR_AMD;
+ }
+
++static int validate_dsm(acpi_handle handle, const char *uuid, int rev, guid_t *dsm_guid)
++{
++ union acpi_object *obj;
++ int ret = -EINVAL;
++
++ guid_parse(uuid, dsm_guid);
++ obj = acpi_evaluate_dsm(handle, dsm_guid, rev, 0, NULL);
++
++ /* Check if the _DSM is present and as expected. */
++ if (!obj || obj->type != ACPI_TYPE_BUFFER || obj->buffer.length == 0 ||
++ obj->buffer.length > sizeof(u32)) {
++ acpi_handle_debug(handle,
++ "_DSM UUID %s rev %d function 0 evaluation failed\n", uuid, rev);
++ goto out;
++ }
++
++ ret = *(int *)obj->buffer.pointer;
++ acpi_handle_debug(handle, "_DSM UUID %s rev %d function mask: 0x%x\n", uuid, rev, ret);
++
++out:
++ ACPI_FREE(obj);
++ return ret;
++}
++
+ static int lps0_device_attach(struct acpi_device *adev,
+ const struct acpi_device_id *not_used)
+ {
+- union acpi_object *out_obj;
+-
+ if (lps0_device_handle)
+ return 0;
+
+@@ -348,28 +371,36 @@ static int lps0_device_attach(struct acpi_device *adev,
+ return 0;
+
+ if (acpi_s2idle_vendor_amd()) {
+- guid_parse(ACPI_LPS0_DSM_UUID_AMD, &lps0_dsm_guid);
+- out_obj = acpi_evaluate_dsm(adev->handle, &lps0_dsm_guid, 0, 0, NULL);
++ /* AMD0004, AMDI0005:
++ * - Should use rev_id 0x0
++ * - function mask > 0x3: Should use AMD method, but has off by one bug
++ * - function mask = 0x3: Should use Microsoft method
++ * AMDI0006:
++ * - should use rev_id 0x0
++ * - function mask = 0x3: Should use Microsoft method
++ */
++ const char *hid = acpi_device_hid(adev);
+ rev_id = 0;
++ lps0_dsm_func_mask = validate_dsm(adev->handle,
++ ACPI_LPS0_DSM_UUID_AMD, rev_id, &lps0_dsm_guid);
++ lps0_dsm_func_mask_microsoft = validate_dsm(adev->handle,
++ ACPI_LPS0_DSM_UUID_MICROSOFT, rev_id,
++ &lps0_dsm_guid_microsoft);
++ if (lps0_dsm_func_mask > 0x3 && (!strcmp(hid, "AMD0004") ||
++ !strcmp(hid, "AMDI0005"))) {
++ lps0_dsm_func_mask = (lps0_dsm_func_mask << 1) | 0x1;
++ acpi_handle_debug(adev->handle, "_DSM UUID %s: Adjusted function mask: 0x%x\n",
++ ACPI_LPS0_DSM_UUID_AMD, lps0_dsm_func_mask);
++ }
+ } else {
+- guid_parse(ACPI_LPS0_DSM_UUID, &lps0_dsm_guid);
+- out_obj = acpi_evaluate_dsm(adev->handle, &lps0_dsm_guid, 1, 0, NULL);
+ rev_id = 1;
++ lps0_dsm_func_mask = validate_dsm(adev->handle,
++ ACPI_LPS0_DSM_UUID, rev_id, &lps0_dsm_guid);
++ lps0_dsm_func_mask_microsoft = -EINVAL;
+ }
+
+- /* Check if the _DSM is present and as expected. */
+- if (!out_obj || out_obj->type != ACPI_TYPE_BUFFER) {
+- acpi_handle_debug(adev->handle,
+- "_DSM function 0 evaluation failed\n");
+- return 0;
+- }
+-
+- lps0_dsm_func_mask = *(char *)out_obj->buffer.pointer;
+-
+- ACPI_FREE(out_obj);
+-
+- acpi_handle_debug(adev->handle, "_DSM function mask: 0x%x\n",
+- lps0_dsm_func_mask);
++ if (lps0_dsm_func_mask < 0 && lps0_dsm_func_mask_microsoft < 0)
++ return 0; //function evaluation failed
+
+ lps0_device_handle = adev->handle;
+
+@@ -386,11 +417,15 @@ static int lps0_device_attach(struct acpi_device *adev,
+ mem_sleep_current = PM_SUSPEND_TO_IDLE;
+
+ /*
+- * Some LPS0 systems, like ASUS Zenbook UX430UNR/i7-8550U, require the
+- * EC GPE to be enabled while suspended for certain wakeup devices to
+- * work, so mark it as wakeup-capable.
++ * Some Intel based LPS0 systems, like ASUS Zenbook UX430UNR/i7-8550U don't
++ * use intel-hid or intel-vbtn but require the EC GPE to be enabled while
++ * suspended for certain wakeup devices to work, so mark it as wakeup-capable.
++ *
++ * Only enable on !AMD as enabling this universally causes problems for a number
++ * of AMD based systems.
+ */
+- acpi_ec_mark_gpe_for_wake();
++ if (!acpi_s2idle_vendor_amd())
++ acpi_ec_mark_gpe_for_wake();
+
+ return 0;
+ }
+@@ -408,12 +443,23 @@ int acpi_s2idle_prepare_late(void)
+ if (pm_debug_messages_on)
+ lpi_check_constraints();
+
+- if (acpi_s2idle_vendor_amd()) {
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD);
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD);
++ if (lps0_dsm_func_mask_microsoft > 0) {
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_EXIT,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ } else if (acpi_s2idle_vendor_amd()) {
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD,
++ lps0_dsm_func_mask, lps0_dsm_guid);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
++ lps0_dsm_func_mask, lps0_dsm_guid);
+ } else {
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF);
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
++ lps0_dsm_func_mask, lps0_dsm_guid);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
++ lps0_dsm_func_mask, lps0_dsm_guid);
+ }
+
+ return 0;
+@@ -424,12 +470,23 @@ void acpi_s2idle_restore_early(void)
+ if (!lps0_device_handle || sleep_no_lps0)
+ return;
+
+- if (acpi_s2idle_vendor_amd()) {
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD);
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD);
++ if (lps0_dsm_func_mask_microsoft > 0) {
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_ENTRY,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ } else if (acpi_s2idle_vendor_amd()) {
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD,
++ lps0_dsm_func_mask, lps0_dsm_guid);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD,
++ lps0_dsm_func_mask, lps0_dsm_guid);
+ } else {
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT);
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
++ lps0_dsm_func_mask, lps0_dsm_guid);
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
++ lps0_dsm_func_mask, lps0_dsm_guid);
+ }
+ }
+
+diff --git a/drivers/acpi/x86/utils.c b/drivers/acpi/x86/utils.c
+index bdc1ba00aee9..f22f23933063 100644
+--- a/drivers/acpi/x86/utils.c
++++ b/drivers/acpi/x86/utils.c
+@@ -135,3 +135,28 @@ bool acpi_device_always_present(struct acpi_device *adev)
+
+ return ret;
+ }
++
++/*
++ * AMD systems from Renoir and Lucienne *require* that the NVME controller
++ * is put into D3 over a Modern Standby / suspend-to-idle cycle.
++ *
++ * This is "typically" accomplished using the `StorageD3Enable`
++ * property in the _DSD that is checked via the `acpi_storage_d3` function
++ * but this property was introduced after many of these systems launched
++ * and most OEM systems don't have it in their BIOS.
++ *
++ * The Microsoft documentation for StorageD3Enable mentioned that Windows has
++ * a hardcoded allowlist for D3 support, which was used for these platforms.
++ *
++ * This allows quirking on Linux in a similar fashion.
++ */
++static const struct x86_cpu_id storage_d3_cpu_ids[] = {
++ X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 96, NULL), /* Renoir */
++ X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 104, NULL), /* Lucienne */
++ {}
++};
++
++bool force_storage_d3(void)
++{
++ return x86_match_cpu(storage_d3_cpu_ids);
++}
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index fec2e9754aed..bea4e2973259 100644
--- a/drivers/ata/libahci.c
@@ -1032,6 +1405,52 @@ index 75dbe77b0b4b..4bd6dd722f44 100644
ret = wg_allowedips_slab_init();
if (ret < 0)
goto err_allowedips;
+diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
+index 42ad75ff1348..5a72bdf5ad03 100644
+--- a/drivers/nvme/host/pci.c
++++ b/drivers/nvme/host/pci.c
+@@ -2828,32 +2828,6 @@ static unsigned long check_vendor_combination_bug(struct pci_dev *pdev)
+ return 0;
+ }
+
+-#ifdef CONFIG_ACPI
+-static bool nvme_acpi_storage_d3(struct pci_dev *dev)
+-{
+- struct acpi_device *adev = ACPI_COMPANION(&dev->dev);
+- u8 val;
+-
+- /*
+- * Look for _DSD property specifying that the storage device on the port
+- * must use D3 to support deep platform power savings during
+- * suspend-to-idle.
+- */
+-
+- if (!adev)
+- return false;
+- if (fwnode_property_read_u8(acpi_fwnode_handle(adev), "StorageD3Enable",
+- &val))
+- return false;
+- return val == 1;
+-}
+-#else
+-static inline bool nvme_acpi_storage_d3(struct pci_dev *dev)
+-{
+- return false;
+-}
+-#endif /* CONFIG_ACPI */
+-
+ static void nvme_async_probe(void *data, async_cookie_t cookie)
+ {
+ struct nvme_dev *dev = data;
+@@ -2903,7 +2877,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+
+ quirks |= check_vendor_combination_bug(pdev);
+
+- if (!noacpi && nvme_acpi_storage_d3(pdev)) {
++ if (!noacpi && acpi_storage_d3(&pdev->dev)) {
+ /*
+ * Some systems use a bios work around to ask for D3 on
+ * platforms that support kernel managed suspend.
diff --git a/drivers/pci/controller/pcie-rockchip-host.c b/drivers/pci/controller/pcie-rockchip-host.c
index f1d08a1b1591..78d04ac29cd5 100644
--- a/drivers/pci/controller/pcie-rockchip-host.c
@@ -1104,6 +1523,398 @@ index 22b2bb1109c9..2131ee5ab7fd 100644
/*
* Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero)
* class code. Fix it.
+diff --git a/drivers/platform/x86/amd-pmc.c b/drivers/platform/x86/amd-pmc.c
+index b9da58ee9b1e..680f94c7e075 100644
+--- a/drivers/platform/x86/amd-pmc.c
++++ b/drivers/platform/x86/amd-pmc.c
+@@ -46,34 +46,79 @@
+ #define AMD_PMC_RESULT_CMD_UNKNOWN 0xFE
+ #define AMD_PMC_RESULT_FAILED 0xFF
+
++/* FCH SSC Registers */
++#define FCH_S0I3_ENTRY_TIME_L_OFFSET 0x30
++#define FCH_S0I3_ENTRY_TIME_H_OFFSET 0x34
++#define FCH_S0I3_EXIT_TIME_L_OFFSET 0x38
++#define FCH_S0I3_EXIT_TIME_H_OFFSET 0x3C
++#define FCH_SSC_MAPPING_SIZE 0x800
++#define FCH_BASE_PHY_ADDR_LOW 0xFED81100
++#define FCH_BASE_PHY_ADDR_HIGH 0x00000000
++
++/* SMU Message Definations */
++#define SMU_MSG_GETSMUVERSION 0x02
++#define SMU_MSG_LOG_GETDRAM_ADDR_HI 0x04
++#define SMU_MSG_LOG_GETDRAM_ADDR_LO 0x05
++#define SMU_MSG_LOG_START 0x06
++#define SMU_MSG_LOG_RESET 0x07
++#define SMU_MSG_LOG_DUMP_DATA 0x08
++#define SMU_MSG_GET_SUP_CONSTRAINTS 0x09
+ /* List of supported CPU ids */
+ #define AMD_CPU_ID_RV 0x15D0
+ #define AMD_CPU_ID_RN 0x1630
+ #define AMD_CPU_ID_PCO AMD_CPU_ID_RV
+ #define AMD_CPU_ID_CZN AMD_CPU_ID_RN
++#define AMD_CPU_ID_YC 0x14B5
+
+-#define AMD_SMU_FW_VERSION 0x0
+ #define PMC_MSG_DELAY_MIN_US 100
+ #define RESPONSE_REGISTER_LOOP_MAX 200
+
++#define SOC_SUBSYSTEM_IP_MAX 12
++#define DELAY_MIN_US 2000
++#define DELAY_MAX_US 3000
+ enum amd_pmc_def {
+ MSG_TEST = 0x01,
+ MSG_OS_HINT_PCO,
+ MSG_OS_HINT_RN,
+ };
+
++struct amd_pmc_bit_map {
++ const char *name;
++ u32 bit_mask;
++};
++
++static const struct amd_pmc_bit_map soc15_ip_blk[] = {
++ {"DISPLAY", BIT(0)},
++ {"CPU", BIT(1)},
++ {"GFX", BIT(2)},
++ {"VDD", BIT(3)},
++ {"ACP", BIT(4)},
++ {"VCN", BIT(5)},
++ {"ISP", BIT(6)},
++ {"NBIO", BIT(7)},
++ {"DF", BIT(8)},
++ {"USB0", BIT(9)},
++ {"USB1", BIT(10)},
++ {"LAPIC", BIT(11)},
++ {}
++};
++
+ struct amd_pmc_dev {
+ void __iomem *regbase;
+- void __iomem *smu_base;
++ void __iomem *smu_virt_addr;
++ void __iomem *fch_virt_addr;
+ u32 base_addr;
+ u32 cpu_id;
++ u32 active_ips;
+ struct device *dev;
++ struct mutex lock; /* generic mutex lock */
+ #if IS_ENABLED(CONFIG_DEBUG_FS)
+ struct dentry *dbgfs_dir;
+ #endif /* CONFIG_DEBUG_FS */
+ };
+
+ static struct amd_pmc_dev pmc;
++static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, bool set, u32 *data, u8 msg, bool ret);
+
+ static inline u32 amd_pmc_reg_read(struct amd_pmc_dev *dev, int reg_offset)
+ {
+@@ -85,18 +130,76 @@ static inline void amd_pmc_reg_write(struct amd_pmc_dev *dev, int reg_offset, u3
+ iowrite32(val, dev->regbase + reg_offset);
+ }
+
++struct smu_metrics {
++ u32 table_version;
++ u32 hint_count;
++ u32 s0i3_cyclecount;
++ u32 timein_s0i2;
++ u64 timeentering_s0i3_lastcapture;
++ u64 timeentering_s0i3_totaltime;
++ u64 timeto_resume_to_os_lastcapture;
++ u64 timeto_resume_to_os_totaltime;
++ u64 timein_s0i3_lastcapture;
++ u64 timein_s0i3_totaltime;
++ u64 timein_swdrips_lastcapture;
++ u64 timein_swdrips_totaltime;
++ u64 timecondition_notmet_lastcapture[SOC_SUBSYSTEM_IP_MAX];
++ u64 timecondition_notmet_totaltime[SOC_SUBSYSTEM_IP_MAX];
++} __packed;
++
+ #ifdef CONFIG_DEBUG_FS
+ static int smu_fw_info_show(struct seq_file *s, void *unused)
+ {
+ struct amd_pmc_dev *dev = s->private;
+- u32 value;
++ struct smu_metrics table;
++ int idx;
++
++ if (dev->cpu_id == AMD_CPU_ID_PCO)
++ return -EINVAL;
++
++ memcpy_fromio(&table, dev->smu_virt_addr, sizeof(struct smu_metrics));
++
++ seq_puts(s, "\n=== SMU Statistics ===\n");
++ seq_printf(s, "Table Version: %d\n", table.table_version);
++ seq_printf(s, "Hint Count: %d\n", table.hint_count);
++ seq_printf(s, "S0i3 Cycle Count: %d\n", table.s0i3_cyclecount);
++ seq_printf(s, "Time (in us) to S0i3: %lld\n", table.timeentering_s0i3_lastcapture);
++ seq_printf(s, "Time (in us) in S0i3: %lld\n", table.timein_s0i3_lastcapture);
++
++ seq_puts(s, "\n=== Active time (in us) ===\n");
++ for (idx = 0 ; idx < SOC_SUBSYSTEM_IP_MAX ; idx++) {
++ if (soc15_ip_blk[idx].bit_mask & dev->active_ips)
++ seq_printf(s, "%-8s : %lld\n", soc15_ip_blk[idx].name,
++ table.timecondition_notmet_lastcapture[idx]);
++ }
+
+- value = ioread32(dev->smu_base + AMD_SMU_FW_VERSION);
+- seq_printf(s, "SMU FW Info: %x\n", value);
+ return 0;
+ }
+ DEFINE_SHOW_ATTRIBUTE(smu_fw_info);
+
++static int s0ix_stats_show(struct seq_file *s, void *unused)
++{
++ struct amd_pmc_dev *dev = s->private;
++ u64 entry_time, exit_time, residency;
++
++ entry_time = ioread32(dev->fch_virt_addr + FCH_S0I3_ENTRY_TIME_H_OFFSET);
++ entry_time = entry_time << 32 | ioread32(dev->fch_virt_addr + FCH_S0I3_ENTRY_TIME_L_OFFSET);
++
++ exit_time = ioread32(dev->fch_virt_addr + FCH_S0I3_EXIT_TIME_H_OFFSET);
++ exit_time = exit_time << 32 | ioread32(dev->fch_virt_addr + FCH_S0I3_EXIT_TIME_L_OFFSET);
++
++ /* It's in 48MHz. We need to convert it */
++ residency = (exit_time - entry_time) / 48;
++
++ seq_puts(s, "=== S0ix statistics ===\n");
++ seq_printf(s, "S0ix Entry Time: %lld\n", entry_time);
++ seq_printf(s, "S0ix Exit Time: %lld\n", exit_time);
++ seq_printf(s, "Residency Time: %lld\n", residency);
++
++ return 0;
++}
++DEFINE_SHOW_ATTRIBUTE(s0ix_stats);
++
+ static void amd_pmc_dbgfs_unregister(struct amd_pmc_dev *dev)
+ {
+ debugfs_remove_recursive(dev->dbgfs_dir);
+@@ -107,6 +210,8 @@ static void amd_pmc_dbgfs_register(struct amd_pmc_dev *dev)
+ dev->dbgfs_dir = debugfs_create_dir("amd_pmc", NULL);
+ debugfs_create_file("smu_fw_info", 0644, dev->dbgfs_dir, dev,
+ &smu_fw_info_fops);
++ debugfs_create_file("s0ix_stats", 0644, dev->dbgfs_dir, dev,
++ &s0ix_stats_fops);
+ }
+ #else
+ static inline void amd_pmc_dbgfs_register(struct amd_pmc_dev *dev)
+@@ -118,6 +223,32 @@ static inline void amd_pmc_dbgfs_unregister(struct amd_pmc_dev *dev)
+ }
+ #endif /* CONFIG_DEBUG_FS */
+
++static int amd_pmc_setup_smu_logging(struct amd_pmc_dev *dev)
++{
++ u32 phys_addr_low, phys_addr_hi;
++ u64 smu_phys_addr;
++
++ if (dev->cpu_id == AMD_CPU_ID_PCO)
++ return -EINVAL;
++
++ /* Get Active devices list from SMU */
++ amd_pmc_send_cmd(dev, 0, &dev->active_ips, SMU_MSG_GET_SUP_CONSTRAINTS, 1);
++
++ /* Get dram address */
++ amd_pmc_send_cmd(dev, 0, &phys_addr_low, SMU_MSG_LOG_GETDRAM_ADDR_LO, 1);
++ amd_pmc_send_cmd(dev, 0, &phys_addr_hi, SMU_MSG_LOG_GETDRAM_ADDR_HI, 1);
++ smu_phys_addr = ((u64)phys_addr_hi << 32 | phys_addr_low);
++
++ dev->smu_virt_addr = devm_ioremap(dev->dev, smu_phys_addr, sizeof(struct smu_metrics));
++ if (!dev->smu_virt_addr)
++ return -ENOMEM;
++
++ /* Start the logging */
++ amd_pmc_send_cmd(dev, 0, NULL, SMU_MSG_LOG_START, 0);
++
++ return 0;
++}
++
+ static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
+ {
+ u32 value;
+@@ -132,15 +263,15 @@ static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
+ dev_dbg(dev->dev, "AMD_PMC_REGISTER_MESSAGE:%x\n", value);
+ }
+
+-static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, bool set)
++static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, bool set, u32 *data, u8 msg, bool ret)
+ {
+ int rc;
+- u8 msg;
+ u32 val;
+
++ mutex_lock(&dev->lock);
+ /* Wait until we get a valid response */
+ rc = readx_poll_timeout(ioread32, dev->regbase + AMD_PMC_REGISTER_RESPONSE,
+- val, val > 0, PMC_MSG_DELAY_MIN_US,
++ val, val != 0, PMC_MSG_DELAY_MIN_US,
+ PMC_MSG_DELAY_MIN_US * RESPONSE_REGISTER_LOOP_MAX);
+ if (rc) {
+ dev_err(dev->dev, "failed to talk to SMU\n");
+@@ -154,34 +285,91 @@ static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, bool set)
+ amd_pmc_reg_write(dev, AMD_PMC_REGISTER_ARGUMENT, set);
+
+ /* Write message ID to message ID register */
+- msg = (dev->cpu_id == AMD_CPU_ID_RN) ? MSG_OS_HINT_RN : MSG_OS_HINT_PCO;
+ amd_pmc_reg_write(dev, AMD_PMC_REGISTER_MESSAGE, msg);
+- return 0;
++
++ /* Wait until we get a valid response */
++ rc = readx_poll_timeout(ioread32, dev->regbase + AMD_PMC_REGISTER_RESPONSE,
++ val, val != 0, PMC_MSG_DELAY_MIN_US,
++ PMC_MSG_DELAY_MIN_US * RESPONSE_REGISTER_LOOP_MAX);
++ if (rc) {
++ dev_err(dev->dev, "SMU response timed out\n");
++ goto out_unlock;
++ }
++
++ switch (val) {
++ case AMD_PMC_RESULT_OK:
++ if (ret) {
++ /* PMFW may take longer time to return back the data */
++ usleep_range(DELAY_MIN_US, 10 * DELAY_MAX_US);
++ *data = amd_pmc_reg_read(dev, AMD_PMC_REGISTER_ARGUMENT);
++ }
++ break;
++ case AMD_PMC_RESULT_CMD_REJECT_BUSY:
++ dev_err(dev->dev, "SMU not ready. err: 0x%x\n", val);
++ rc = -EBUSY;
++ goto out_unlock;
++ case AMD_PMC_RESULT_CMD_UNKNOWN:
++ dev_err(dev->dev, "SMU cmd unknown. err: 0x%x\n", val);
++ rc = -EINVAL;
++ goto out_unlock;
++ case AMD_PMC_RESULT_CMD_REJECT_PREREQ:
++ case AMD_PMC_RESULT_FAILED:
++ default:
++ dev_err(dev->dev, "SMU cmd failed. err: 0x%x\n", val);
++ rc = -EIO;
++ goto out_unlock;
++ }
++
++out_unlock:
++ mutex_unlock(&dev->lock);
++ amd_pmc_dump_registers(dev);
++ return rc;
++}
++
++static int amd_pmc_get_os_hint(struct amd_pmc_dev *dev)
++{
++ switch (dev->cpu_id) {
++ case AMD_CPU_ID_PCO:
++ return MSG_OS_HINT_PCO;
++ case AMD_CPU_ID_RN:
++ case AMD_CPU_ID_YC:
++ return MSG_OS_HINT_RN;
++ }
++ return -EINVAL;
+ }
+
+ static int __maybe_unused amd_pmc_suspend(struct device *dev)
+ {
+ struct amd_pmc_dev *pdev = dev_get_drvdata(dev);
+ int rc;
++ u8 msg;
++
++ /* Reset and Start SMU logging - to monitor the s0i3 stats */
++ amd_pmc_send_cmd(pdev, 0, NULL, SMU_MSG_LOG_RESET, 0);
++ amd_pmc_send_cmd(pdev, 0, NULL, SMU_MSG_LOG_START, 0);
+
+- rc = amd_pmc_send_cmd(pdev, 1);
++ msg = amd_pmc_get_os_hint(pdev);
++ rc = amd_pmc_send_cmd(pdev, 1, NULL, msg, 0);
+ if (rc)
+ dev_err(pdev->dev, "suspend failed\n");
+
+- amd_pmc_dump_registers(pdev);
+- return 0;
++ return rc;
+ }
+
+ static int __maybe_unused amd_pmc_resume(struct device *dev)
+ {
+ struct amd_pmc_dev *pdev = dev_get_drvdata(dev);
+ int rc;
++ u8 msg;
++
++ /* Let SMU know that we are looking for stats */
++ amd_pmc_send_cmd(pdev, 0, NULL, SMU_MSG_LOG_DUMP_DATA, 0);
+
+- rc = amd_pmc_send_cmd(pdev, 0);
++ msg = amd_pmc_get_os_hint(pdev);
++ rc = amd_pmc_send_cmd(pdev, 0, NULL, msg, 0);
+ if (rc)
+ dev_err(pdev->dev, "resume failed\n");
+
+- amd_pmc_dump_registers(pdev);
+ return 0;
+ }
+
+@@ -190,6 +378,7 @@ static const struct dev_pm_ops amd_pmc_pm_ops = {
+ };
+
+ static const struct pci_device_id pmc_pci_ids[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_YC) },
+ { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_CZN) },
+ { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_RN) },
+ { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_PCO) },
+@@ -201,9 +390,8 @@ static int amd_pmc_probe(struct platform_device *pdev)
+ {
+ struct amd_pmc_dev *dev = &pmc;
+ struct pci_dev *rdev;
+- u32 base_addr_lo;
+- u32 base_addr_hi;
+- u64 base_addr;
++ u32 base_addr_lo, base_addr_hi;
++ u64 base_addr, fch_phys_addr;
+ int err;
+ u32 val;
+
+@@ -248,16 +436,25 @@ static int amd_pmc_probe(struct platform_device *pdev)
+ pci_dev_put(rdev);
+ base_addr = ((u64)base_addr_hi << 32 | base_addr_lo);
+
+- dev->smu_base = devm_ioremap(dev->dev, base_addr, AMD_PMC_MAPPING_SIZE);
+- if (!dev->smu_base)
+- return -ENOMEM;
+-
+ dev->regbase = devm_ioremap(dev->dev, base_addr + AMD_PMC_BASE_ADDR_OFFSET,
+ AMD_PMC_MAPPING_SIZE);
+ if (!dev->regbase)
+ return -ENOMEM;
+
+- amd_pmc_dump_registers(dev);
++ mutex_init(&dev->lock);
++
++ /* Use FCH registers to get the S0ix stats */
++ base_addr_lo = FCH_BASE_PHY_ADDR_LOW;
++ base_addr_hi = FCH_BASE_PHY_ADDR_HIGH;
++ fch_phys_addr = ((u64)base_addr_hi << 32 | base_addr_lo);
++ dev->fch_virt_addr = devm_ioremap(dev->dev, fch_phys_addr, FCH_SSC_MAPPING_SIZE);
++ if (!dev->fch_virt_addr)
++ return -ENOMEM;
++
++ /* Use SMU to get the s0i3 debug stats */
++ err = amd_pmc_setup_smu_logging(dev);
++ if (err)
++ dev_err(dev->dev, "SMU debugging info not supported on this platform\n");
+
+ platform_set_drvdata(pdev, dev);
+ amd_pmc_dbgfs_register(dev);
+@@ -269,11 +466,14 @@ static int amd_pmc_remove(struct platform_device *pdev)
+ struct amd_pmc_dev *dev = platform_get_drvdata(pdev);
+
+ amd_pmc_dbgfs_unregister(dev);
++ mutex_destroy(&dev->lock);
+ return 0;
+ }
+
+ static const struct acpi_device_id amd_pmc_acpi_ids[] = {
+ {"AMDI0005", 0},
++ {"AMDI0006", 0},
++ {"AMDI0007", 0},
+ {"AMD0004", 0},
+ { }
+ };
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 5db16509b6e1..5b8b5e3edd39 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
@@ -1156,6 +1967,29 @@ index df8e69e60aaf..fb851c5130e1 100644
/* Lock the device, then check to see if we were
* disconnected while waiting for the lock to succeed. */
usb_lock_device(hdev);
+diff --git a/include/linux/acpi.h b/include/linux/acpi.h
+index c60745f657e9..dd0dafd21e33 100644
+--- a/include/linux/acpi.h
++++ b/include/linux/acpi.h
+@@ -1004,6 +1004,7 @@ int acpi_dev_resume(struct device *dev);
+ int acpi_subsys_runtime_suspend(struct device *dev);
+ int acpi_subsys_runtime_resume(struct device *dev);
+ int acpi_dev_pm_attach(struct device *dev, bool power_on);
++bool acpi_storage_d3(struct device *dev);
+ #else
+ static inline int acpi_subsys_runtime_suspend(struct device *dev) { return 0; }
+ static inline int acpi_subsys_runtime_resume(struct device *dev) { return 0; }
+@@ -1011,6 +1012,10 @@ static inline int acpi_dev_pm_attach(struct device *dev, bool power_on)
+ {
+ return 0;
+ }
++static inline bool acpi_storage_d3(struct device *dev)
++{
++ return false;
++}
+ #endif
+
+ #if defined(CONFIG_ACPI) && defined(CONFIG_PM_SLEEP)
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 6b5d36babfcc..fd4a5d66a9d0 100644
--- a/include/linux/efi.h
@@ -1388,30 +2222,6 @@ index 8723ae70ea1f..fb2d773498c2 100644
+ }
+ return ret;
}
-diff --git a/net/can/bcm.c b/net/can/bcm.c
-index f3e4d9528fa3..c67916020e63 100644
---- a/net/can/bcm.c
-+++ b/net/can/bcm.c
-@@ -785,6 +785,7 @@ static int bcm_delete_rx_op(struct list_head *ops, struct bcm_msg_head *mh,
- bcm_rx_handler, op);
-
- list_del(&op->list);
-+ synchronize_rcu();
- bcm_remove_op(op);
- return 1; /* done */
- }
-@@ -1533,6 +1534,11 @@ static int bcm_release(struct socket *sock)
- REGMASK(op->can_id),
- bcm_rx_handler, op);
-
-+ }
-+
-+ synchronize_rcu();
-+
-+ list_for_each_entry_safe(op, next, &bo->rx_ops, list) {
- bcm_remove_op(op);
- }
-
diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c
index f290f78c3f30..d3e7ae04f5be 100644
--- a/security/integrity/platform_certs/load_uefi.c
diff --git a/sources b/sources
index 0620529..02cf358 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (linux-5.13.1.tar.xz) = 362d0651ad3de313fb7495b01056c49e5e29d7206e2ebb581d2ad71d736db4e2f5c0b3d50c41af0509df7af92446764a91999a8c8be4987437d415244c8568b5
-SHA512 (kernel-abi-whitelists-5.13.1-300.tar.bz2) = a051d52c7ebef7e0835a18e457358f94aca59246c1edc7882f99bd4f8ca9c4ca5c30d4349294118c7da45c6fc245d616990202007f322ecd22ee216dbafdc80e
-SHA512 (kernel-kabi-dw-5.13.1-300.tar.bz2) = ef817adfa46a2e6587ef07e207aceb8026d2fc442916e5c2ddb8b3b56acdb35c693e3cfe95f88c5d78ae234d3ad9c702c6f2775c2658f59840832f21018e4dd8
+SHA512 (linux-5.13.2.tar.xz) = 48abf1f4a1f92c36931046111deb3689f651c15b59c2b398561b2aa44d61288e70b61173f7e4abf122d6890c631e0d4459a4880e1711c36e39b335d68b1a4cb0
+SHA512 (kernel-abi-whitelists-5.13.2-300.tar.bz2) = f528c4359e7ef27f9f9275a2643c411024e42be6973b3b9a0c2e66e7d08417f50213fcdd65e3f66207792f8d15bfdf5696771980c34f469ce0ee8a6c6ed18228
+SHA512 (kernel-kabi-dw-5.13.2-300.tar.bz2) = 6c065c0a0ab30f76fedeef16f89ee83945f4a9b31767048d4f8f7198466cde96e1a4b524f6105d749f9080821792d4070bec110a00224a10dd2ee96a11f02809