kernel-5.13.8-100

* Wed Aug 04 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.13.8-100]
- kernel-5.13.8-0 (Justin M. Forbes)
- Re-enable sermouse for x86 (rhbz 1974002) (Justin M. Forbes)
- Revert CRYPTO_ECDH and CRYPTO_ECDA from builtin to module to fix fips (Justin M. Forbes)
- drm/rockchip: remove existing generic drivers to take over the device (Javier Martinez Canillas)
- powerpc/pseries: Fix regression while building external modules (Srikar Dronamraju)
Resolves: rhbz# 1966245 1974002 1989771

Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
Justin M. Forbes 2021-08-04 08:51:28 -05:00
parent 0af3289191
commit db89967185
No known key found for this signature in database
GPG Key ID: B8FA7924A4B1C140
22 changed files with 117 additions and 142 deletions

View File

@ -1,3 +1,9 @@
https://gitlab.com/cki-project/kernel-ark/-/commit/558c3d6b47a25f6af07e3fc967e16cc66f694cb0
558c3d6b47a25f6af07e3fc967e16cc66f694cb0 powerpc/pseries: Fix regression while building external modules
https://gitlab.com/cki-project/kernel-ark/-/commit/29c0325a98bbdbfa3d569e858e221db9d3d7c217
29c0325a98bbdbfa3d569e858e221db9d3d7c217 drm/rockchip: remove existing generic drivers to take over the device
https://gitlab.com/cki-project/kernel-ark/-/commit/e833c34e56563b0292493c62921e7132a16ceef0
e833c34e56563b0292493c62921e7132a16ceef0 iwlwifi Add support for ax201 in Samsung Galaxy Book Flex2 Alpha

View File

@ -1363,8 +1363,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1363,8 +1363,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1363,8 +1363,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1363,8 +1363,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1333,8 +1333,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1333,8 +1333,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1075,8 +1075,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m
@ -3706,7 +3706,7 @@ CONFIG_MOUSE_PS2_SENTELIC=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_PS2_VMMOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_SYNAPTICS_I2C=m
CONFIG_MOUSE_SYNAPTICS_USB=m
# CONFIG_MOUSE_VSXXXAA is not set

View File

@ -1074,8 +1074,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m
@ -3684,7 +3684,7 @@ CONFIG_MOUSE_PS2_SENTELIC=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_PS2_VMMOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_SYNAPTICS_I2C=m
CONFIG_MOUSE_SYNAPTICS_USB=m
# CONFIG_MOUSE_VSXXXAA is not set

View File

@ -1014,8 +1014,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -855,7 +855,7 @@ CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECHAINIV=m
# CONFIG_CRYPTO_ECRDSA is not set

View File

@ -1013,8 +1013,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -855,7 +855,7 @@ CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECHAINIV=m
# CONFIG_CRYPTO_ECRDSA is not set

View File

@ -1016,8 +1016,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1015,8 +1015,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m

View File

@ -1104,8 +1104,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m
@ -3753,7 +3753,7 @@ CONFIG_MOUSE_PS2_SENTELIC=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_PS2_VMMOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_SYNAPTICS_I2C=m
CONFIG_MOUSE_SYNAPTICS_USB=m
# CONFIG_MOUSE_VSXXXAA is not set

View File

@ -907,7 +907,7 @@ CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECHAINIV=m
# CONFIG_CRYPTO_ECRDSA is not set

View File

@ -1103,8 +1103,8 @@ CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_ECRDSA=m
CONFIG_CRYPTO_ESSIV=m
@ -3731,7 +3731,7 @@ CONFIG_MOUSE_PS2_SENTELIC=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_PS2_VMMOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_SYNAPTICS_I2C=m
CONFIG_MOUSE_SYNAPTICS_USB=m
# CONFIG_MOUSE_VSXXXAA is not set

View File

@ -907,7 +907,7 @@ CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_ECDSA=y
CONFIG_CRYPTO_ECHAINIV=m
# CONFIG_CRYPTO_ECRDSA is not set

View File

@ -116,7 +116,7 @@ Summary: The Linux kernel
# The kernel tarball/base version
%define kversion 5.13
%define rpmversion 5.13.7
%define rpmversion 5.13.8
%define stableversion 5.13
%define pkgrelease 100
@ -646,7 +646,7 @@ BuildRequires: clang
# exact git commit you can run
#
# xzcat -qq ${TARBALL} | git get-tar-commit-id
Source0: linux-5.13.7.tar.xz
Source0: linux-5.13.8.tar.xz
Source1: Makefile.rhelver
@ -1315,8 +1315,8 @@ ApplyOptionalPatch()
fi
}
%setup -q -n kernel-5.13.7 -c
mv linux-5.13.7 linux-%{KVERREL}
%setup -q -n kernel-5.13.8 -c
mv linux-5.13.8 linux-%{KVERREL}
cd linux-%{KVERREL}
cp -a %{SOURCE1} .
@ -2886,18 +2886,12 @@ fi
#
#
%changelog
* Sat Jul 31 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.13.7-100]
- kernel-5.13.7-0 (Justin M. Forbes)
- kernel-5.13.6-0 (Justin M. Forbes)
- kernel-5.13.5-0 (Justin M. Forbes)
- iwlwifi Add support for ax201 in Samsung Galaxy Book Flex2 Alpha (Justin M. Forbes)
- Revert "usb: renesas-xhci: Fix handling of unknown ROM state" (Justin M. Forbes)
- RHEL configs need this too (Justin M. Forbes)
- kernel-5.13.4-0 (Justin M. Forbes)
- Config update for 5.13.4 (Justin M. Forbes)
- kernel-5.13.3-0 (Justin M. Forbes)
- Don't tag a release as [redhat] (Justin M. Forbes)
- platform/x86: amd-pmc: Fix missing unlock on error in amd_pmc_send_cmd() (Yang Yingliang)
* Wed Aug 04 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.13.8-100]
- kernel-5.13.8-0 (Justin M. Forbes)
- Re-enable sermouse for x86 (rhbz 1974002) (Justin M. Forbes)
- Revert CRYPTO_ECDH and CRYPTO_ECDA from builtin to module to fix fips (Justin M. Forbes)
- drm/rockchip: remove existing generic drivers to take over the device (Javier Martinez Canillas)
- powerpc/pseries: Fix regression while building external modules (Srikar Dronamraju)
* Sat Jul 31 2021 Justin M. Forbes <jforbes@fedoraproject.org> [5.13.7-0]
- kernel-5.13.6-0 (Justin M. Forbes)

View File

@ -21,6 +21,7 @@
drivers/firmware/efi/Makefile | 1 +
drivers/firmware/efi/efi.c | 124 +++--
drivers/firmware/efi/secureboot.c | 38 ++
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 11 +
drivers/hid/hid-rmi.c | 64 ---
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
drivers/input/rmi4/rmi_driver.c | 124 +++--
@ -29,7 +30,7 @@
drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 1 +
drivers/nvme/host/pci.c | 28 +-
drivers/pci/quirks.c | 24 +
drivers/platform/x86/amd-pmc.c | 248 +++++++++-
drivers/platform/x86/amd-pmc.c | 204 +++++++-
drivers/scsi/smartpqi/smartpqi_init.c | 16 +
drivers/usb/core/hub.c | 7 +
include/linux/acpi.h | 5 +
@ -65,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 --
67 files changed, 909 insertions(+), 2353 deletions(-)
68 files changed, 887 insertions(+), 2342 deletions(-)
diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst
index 75a9dd98e76e..3ff3291551f9 100644
@ -90,7 +91,7 @@ index 75a9dd98e76e..3ff3291551f9 100644
Boot into System Kernel
diff --git a/Makefile b/Makefile
index 614327400aea..15c6acda836e 100644
index fdb4e2fd9d8f..d8efc35bad77 100644
--- a/Makefile
+++ b/Makefile
@@ -508,6 +508,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE
@ -984,6 +985,28 @@ index 000000000000..de0a3714a5d4
+ }
+ }
+}
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 212bd87c0c4a..b8b066938e48 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -114,6 +114,17 @@ static int rockchip_drm_bind(struct device *dev)
struct rockchip_drm_private *private;
int ret;
+ /* Remove existing drivers that may own the framebuffer memory. */
+ ret = drm_fb_helper_remove_conflicting_framebuffers(NULL,
+ "rockchip-drm-fb",
+ false);
+ if (ret) {
+ DRM_DEV_ERROR(dev,
+ "Failed to remove existing framebuffers - %d.\n",
+ ret);
+ return ret;
+ }
+
drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev);
if (IS_ERR(drm_dev))
return PTR_ERR(drm_dev);
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
index 311eee599ce9..2460c6bd46f8 100644
--- a/drivers/hid/hid-rmi.c
@ -1485,10 +1508,10 @@ index 6d74386eadc2..2333c1e4ae05 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..663a4ca0580d 100644
index ca95c2a52e26..e38e8288468f 100644
--- a/drivers/platform/x86/amd-pmc.c
+++ b/drivers/platform/x86/amd-pmc.c
@@ -46,34 +46,79 @@
@@ -46,26 +46,70 @@
#define AMD_PMC_RESULT_CMD_UNKNOWN 0xFE
#define AMD_PMC_RESULT_FAILED 0xFF
@ -1516,7 +1539,6 @@ index b9da58ee9b1e..663a4ca0580d 100644
#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
@ -1559,10 +1581,9 @@ index b9da58ee9b1e..663a4ca0580d 100644
u32 cpu_id;
+ u32 active_ips;
struct device *dev;
+ struct mutex lock; /* generic mutex lock */
struct mutex lock; /* generic mutex lock */
#if IS_ENABLED(CONFIG_DEBUG_FS)
struct dentry *dbgfs_dir;
#endif /* CONFIG_DEBUG_FS */
@@ -74,6 +118,7 @@ struct amd_pmc_dev {
};
static struct amd_pmc_dev pmc;
@ -1570,7 +1591,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
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
@@ -85,13 +130,76 @@ static inline void amd_pmc_reg_write(struct amd_pmc_dev *dev, int reg_offset, u3
iowrite32(val, dev->regbase + reg_offset);
}
@ -1594,8 +1615,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
#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 amd_pmc_dev *dev = s->private;
+ struct smu_metrics table;
+ int idx;
+
@ -1617,9 +1637,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
+ 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);
@ -1650,7 +1668,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
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)
@@ -102,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);
@ -1659,7 +1677,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
}
#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)
@@ -113,6 +223,32 @@ static inline void amd_pmc_dbgfs_unregister(struct amd_pmc_dev *dev)
}
#endif /* CONFIG_DEBUG_FS */
@ -1692,7 +1710,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
{
u32 value;
@@ -132,19 +263,19 @@ static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
@@ -127,10 +263,9 @@ static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
dev_dbg(dev->dev, "AMD_PMC_REGISTER_MESSAGE:%x\n", value);
}
@ -1703,66 +1721,38 @@ index b9da58ee9b1e..663a4ca0580d 100644
- 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");
- return rc;
+ goto out_unlock;
}
/* Write zero to response register */
@@ -154,34 +285,91 @@ static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, bool set)
mutex_lock(&dev->lock);
@@ -150,8 +285,8 @@ 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;
+ }
/* 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,
@@ -163,6 +298,12 @@ static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, bool set)
switch (val) {
case AMD_PMC_RESULT_OK:
+
+ 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);
break;
case AMD_PMC_RESULT_CMD_REJECT_BUSY:
dev_err(dev->dev, "SMU not ready. err: 0x%x\n", val);
@@ -182,32 +323,54 @@ static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, bool set)
out_unlock:
mutex_unlock(&dev->lock);
+ amd_pmc_dump_registers(dev);
+ return rc;
+}
+
return rc;
}
+static int amd_pmc_get_os_hint(struct amd_pmc_dev *dev)
+{
+ switch (dev->cpu_id) {
@ -1773,8 +1763,8 @@ index b9da58ee9b1e..663a4ca0580d 100644
+ 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);
@ -1815,7 +1805,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
return 0;
}
@@ -190,6 +378,7 @@ static const struct dev_pm_ops amd_pmc_pm_ops = {
@@ -216,6 +379,7 @@ static const struct dev_pm_ops amd_pmc_pm_ops = {
};
static const struct pci_device_id pmc_pci_ids[] = {
@ -1823,7 +1813,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
{ 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)
@@ -227,9 +391,8 @@ static int amd_pmc_probe(struct platform_device *pdev)
{
struct amd_pmc_dev *dev = &pmc;
struct pci_dev *rdev;
@ -1835,16 +1825,7 @@ index b9da58ee9b1e..663a4ca0580d 100644
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);
@@ -279,7 +442,20 @@ static int amd_pmc_probe(struct platform_device *pdev)
if (!dev->regbase)
return -ENOMEM;
@ -1864,15 +1845,9 @@ index b9da58ee9b1e..663a4ca0580d 100644
+ if (err)
+ dev_err(dev->dev, "SMU debugging info not supported on this platform\n");
mutex_init(&dev->lock);
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;
}
@@ -298,6 +474,8 @@ static int amd_pmc_remove(struct platform_device *pdev)
static const struct acpi_device_id amd_pmc_acpi_ids[] = {
{"AMDI0005", 0},

View File

@ -1,3 +1,3 @@
SHA512 (linux-5.13.7.tar.xz) = 63e05770b3a9287c1e6f855c34e37c5ce50dfb42b42c500f647e4860e92bd89697ce571e57377b00dbf954e854259e3e9fd1dddfc4b0fb9eb88f5bd04fa9a487
SHA512 (kernel-abi-whitelists-5.13.7-100.tar.bz2) = ae3b3de2b67bbd052bc226fa0ca65c33321027346bff87fbf830a59f244560e5697e77dad7eec5bb66b13a296869068e8303028f39f2d9f855d3e04950e53810
SHA512 (kernel-kabi-dw-5.13.7-100.tar.bz2) = 796acd53da0cb495d9d7701d0cbb1edb6431a87d07e8fade2105babdaa74aa99111dc4f342fa19c14d07a1b8fc8b360aa5e07739a5c144387eebc63582d44300
SHA512 (linux-5.13.8.tar.xz) = 54f5ea04f594d88b8608ceb0e8ccc521c17a6e8d3b26640c5b6b376f05e3eb4f062968426af0cba81c58c83ff72ed82fec5c42a8f31de3685a9a2ce673f92f48
SHA512 (kernel-abi-whitelists-5.13.8-100.tar.bz2) = 9e10a9699f3af378ec5dbe26c740634197f7326f985e0448e732c1a683ddbdb9476a842ffa97fec28c7bc2b6e641ec2746395a50bbec86e3ea506fcb17533a53
SHA512 (kernel-kabi-dw-5.13.8-100.tar.bz2) = fd027df65e292ef9f98e386611f7ab73dff3be92ea26d28bc50bf4973d66275eb3d0b876f0ea479c08b53331cbaf85d309fc0aae2fc6a85f270f43dbbb918e84