Home Home > GIT Browse > SLE12-SP4
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Hocko <mhocko@suse.com>2019-07-15 15:59:20 +0200
committerMichal Hocko <mhocko@suse.com>2019-07-15 15:59:20 +0200
commit2db3aee56f4811a5b654410002bf3f51790794a6 (patch)
treece2833bb532d2d32b6780c08392b7e5167cc83e7
parentb5fb8e44ee5b131d48ac57ec9cd096f554d3228e (diff)
parent10483b0f9e0d1291bdb53811623b8ef6c2ba122c (diff)
Merge branch 'users/mhocko/SLE12-SP4/bnc1136896' into users/mhocko/SLE12-SP4/for-next
-rw-r--r--patches.fixes/0001-crypto-ccp-fix-the-SEV-probe-in-kexec-boot-path.patch63
-rw-r--r--series.conf1
2 files changed, 64 insertions, 0 deletions
diff --git a/patches.fixes/0001-crypto-ccp-fix-the-SEV-probe-in-kexec-boot-path.patch b/patches.fixes/0001-crypto-ccp-fix-the-SEV-probe-in-kexec-boot-path.patch
new file mode 100644
index 0000000000..7d3b751265
--- /dev/null
+++ b/patches.fixes/0001-crypto-ccp-fix-the-SEV-probe-in-kexec-boot-path.patch
@@ -0,0 +1,63 @@
+From f8903b3ead5191d450f21c7388ddc245f76cec0f Mon Sep 17 00:00:00 2001
+From: "Singh, Brijesh" <brijesh.singh@amd.com>
+Date: Wed, 30 Jan 2019 20:57:52 +0000
+Subject: [PATCH] crypto: ccp - fix the SEV probe in kexec boot path
+Git-commit: f8903b3ead5191d450f21c7388ddc245f76cec0f
+Patch-mainline: v5.1-rc1
+References: bsc#1136896
+
+A kexec reboot may leave the firmware in INIT or WORKING state.
+Currently, we issue PLATFORM_INIT command during the probe without
+checking the current state. The PLATFORM_INIT command fails if the
+FW is already in INIT state. Lets check the current state, if FW
+is not in UNINIT state then transition it to UNINIT before
+initializing or upgrading the FW.
+
+Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
+Cc: Tom Lendacky <thomas.lendacky@amd.com>
+Cc: Gary Hook <gary.hook@amd.com>
+Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Michal Hocko <mhocko@suse.com>
+
+---
+ drivers/crypto/ccp/psp-dev.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c
+index 66566547feff..638f138debd7 100644
+--- a/drivers/crypto/ccp/psp-dev.c
++++ b/drivers/crypto/ccp/psp-dev.c
+@@ -437,6 +437,7 @@ static int sev_get_api_version(void)
+ psp_master->api_major = status->api_major;
+ psp_master->api_minor = status->api_minor;
+ psp_master->build = status->build;
++ psp_master->sev_state = status->state;
+
+ return 0;
+ }
+@@ -964,6 +965,21 @@ void psp_pci_init(void)
+ if (sev_get_api_version())
+ goto err;
+
++ /*
++ * If platform is not in UNINIT state then firmware upgrade and/or
++ * platform INIT command will fail. These command require UNINIT state.
++ *
++ * In a normal boot we should never run into case where the firmware
++ * is not in UNINIT state on boot. But in case of kexec boot, a reboot
++ * may not go through a typical shutdown sequence and may leave the
++ * firmware in INIT or WORKING state.
++ */
++
++ if (psp_master->sev_state != SEV_STATE_UNINIT) {
++ sev_platform_shutdown(NULL);
++ psp_master->sev_state = SEV_STATE_UNINIT;
++ }
++
+ if (SEV_VERSION_GREATER_OR_EQUAL(0, 15) &&
+ sev_update_firmware(psp_master->dev) == 0)
+ sev_get_api_version();
+--
+2.12.3
+
diff --git a/series.conf b/series.conf
index 5b74dd4315..03d5ab26a1 100644
--- a/series.conf
+++ b/series.conf
@@ -21764,6 +21764,7 @@
patches.fixes/crypto-testmgr-skip-crc32c-context-test-for-ahash-al.patch
patches.fixes/crypto-arm64-aes-ccm-fix-logical-bug-in-AAD-MAC-hand.patch
patches.fixes/crypto-arm-crct10dif-revert-to-C-code-for-short-inpu.patch
+ patches.fixes/0001-crypto-ccp-fix-the-SEV-probe-in-kexec-boot-path.patch
patches.fixes/crypto-caam-fixed-handling-of-sg-list.patch
patches.fixes/crypto-ahash-fix-another-early-termination-in-hash-w.patch
patches.fixes/crypto-cavium-zip-fix-collision-with-generic-cra_dri.patch