[QEMU] Fix QEMU boot issue with new IPP library change

The previoius IPP library updates used UpdateSHA256V8 as default for
SHA256. It works on real platform. However, QEMU's default CPU config
does not support SSE3 instructions and will generate exception. This
patch added the UpdateSHA256Compact as default SHA256 function if no
advanced optimization flags are set. The same is applied for SHA512
functions too.

Signed-off-by: Maurice Ma <maurice.ma@intel.com>
This commit is contained in:
Maurice Ma 2019-12-03 22:37:20 -08:00
parent a3fa16511c
commit b693d9776e
4 changed files with 15 additions and 11 deletions

View File

@ -168,13 +168,13 @@ void UpdateSHA256Compact(void* uniHash, const Ipp8u* mblk, int mlen, const void*
void UpdateSHA256(void* pHash, const Ipp8u* pMsg, int msgLen, const void* pParam) void UpdateSHA256(void* pHash, const Ipp8u* pMsg, int msgLen, const void* pParam)
{ {
#if defined(_SLIMBOOT_OPT) #if defined(_SLIMBOOT_OPT)
#if (FixedPcdGet32 (PcdCryptoShaOptMask) & IPP_CRYPTO_SHA256_NI)
if (FixedPcdGet32 (PcdCryptoShaOptMask) & IPP_CRYPTO_SHA256_NI) {
UpdateSHA256Ni(pHash, pMsg, msgLen, pParam); UpdateSHA256Ni(pHash, pMsg, msgLen, pParam);
} else { #elif (FixedPcdGet32 (PcdCryptoShaOptMask) & IPP_CRYPTO_SHA256_V8)
UpdateSHA256V8(pHash, pMsg, msgLen, pParam); UpdateSHA256V8(pHash, pMsg, msgLen, pParam);
} #else
UpdateSHA256Compact(pHash, pMsg, msgLen, pParam);
#endif
#else #else
#if defined(_ALG_SHA256_COMPACT_) #if defined(_ALG_SHA256_COMPACT_)
UpdateSHA256Compact(pHash, pMsg, msgLen, pParam); UpdateSHA256Compact(pHash, pMsg, msgLen, pParam);

View File

@ -565,13 +565,13 @@ void UpdateSHA512Normal(void* uniHash, const Ipp8u* mblk, int mlen, const void*
void UpdateSHA512(void* uniHash, const Ipp8u* mblk, int mlen, const void* uniPraram) void UpdateSHA512(void* uniHash, const Ipp8u* mblk, int mlen, const void* uniPraram)
{ {
#if defined(_SLIMBOOT_OPT) #if defined(_SLIMBOOT_OPT)
#if (FixedPcdGet32 (PcdCryptoShaOptMask) & IPP_CRYPTO_SHA384_G9)
if (FixedPcdGet32 (PcdCryptoShaOptMask) & IPP_CRYPTO_SHA384_G9) {
UpdateSHA512G9 (uniHash, mblk, mlen, uniPraram); UpdateSHA512G9 (uniHash, mblk, mlen, uniPraram);
} else { #elif (FixedPcdGet32 (PcdCryptoShaOptMask) & IPP_CRYPTO_SHA384_W7)
UpdateSHA512W7 (uniHash, mblk, mlen, uniPraram); UpdateSHA512W7 (uniHash, mblk, mlen, uniPraram);
} #else
UpdateSHA512Compact (uniHash, mblk, mlen, uniPraram);
#endif
#else #else
#if defined(_ALG_SHA512_COMPACT_) #if defined(_ALG_SHA512_COMPACT_)

View File

@ -16,7 +16,8 @@
#if defined(_SLIMBOOT_OPT) #if defined(_SLIMBOOT_OPT)
#define _SHA_NI_ENABLING_ _FEATURE_OFF_ #define _SHA_NI_ENABLING_ _FEATURE_OFF_
#define _DISABLE_ALG_SHA1_ #define _DISABLE_ALG_SHA1_
//#define _ALG_SHA256_COMPACT_ #define _ALG_SHA512_COMPACT_
#define _ALG_SHA256_COMPACT_
#define _ALG_SM3_COMPACT_ #define _ALG_SM3_COMPACT_
#else #else
#define _SHA_NI_ENABLING_ _FEATURE_ON_ #define _SHA_NI_ENABLING_ _FEATURE_ON_

View File

@ -46,12 +46,15 @@ class Board(BaseBoard):
self.ENABLE_FWU = 1 self.ENABLE_FWU = 1
self.ENABLE_GRUB_CONFIG = 1 self.ENABLE_GRUB_CONFIG = 1
self.ENABLE_LINUX_PAYLOAD = 1 self.ENABLE_LINUX_PAYLOAD = 1
self.ENABLE_CRYPTO_SHA_OPT = 0
self.CPU_MAX_LOGICAL_PROCESSOR_NUMBER = 255 self.CPU_MAX_LOGICAL_PROCESSOR_NUMBER = 255
# To enable source debug, set 1 to self.ENABLE_SOURCE_DEBUG # To enable source debug, set 1 to self.ENABLE_SOURCE_DEBUG
# self.ENABLE_SOURCE_DEBUG = 1 # self.ENABLE_SOURCE_DEBUG = 1
# For test purpose # For test purpose
# self.SKIP_STAGE1A_SOURCE_DEBUG = 1 # self.SKIP_STAGE1A_SOURCE_DEBUG = 1