From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: zhichao.gao@intel.com) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by groups.io with SMTP; Sun, 14 Apr 2019 20:07:12 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Apr 2019 20:07:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,351,1549958400"; d="scan'208";a="150867007" Received: from gaozhic-mobl.ccr.corp.intel.com ([10.239.198.173]) by orsmga002.jf.intel.com with ESMTP; 14 Apr 2019 20:07:10 -0700 From: "Gao, Zhichao" To: devel@edk2.groups.io Cc: Bret Barkelew , Jian J Wang , Hao Wu , Ray Ni , Star Zeng , Liming Gao , Sean Brogan , Michael Turner Subject: [PATCH 25/25] MdeModulePkg/ResetUtilityLib: Add a new API ResetSystemWithSubtype Date: Mon, 15 Apr 2019 11:06:11 +0800 Message-Id: <20190415030611.12464-26-zhichao.gao@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: <20190415030611.12464-1-zhichao.gao@intel.com> References: <20190415030611.12464-1-zhichao.gao@intel.com> From: Bret Barkelew BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1458 Implement the new API ResetSystemWithSubtype. Depend on Uefi Spec 2.8 chapter 8.5.1, the ResetData is valid while the ResetStatus is EFI_SUCCESS regardless of the ResetType. Also change the function ResetPlatofrmSpecificGuid to directly call ResetSystemWithSubtype to reduce the duplicated code. Cc: Jian J Wang Cc: Hao Wu Cc: Ray Ni Cc: Star Zeng Cc: Liming Gao Cc: Sean Brogan Cc: Michael Turner Cc: Bret Barkelew Signed-off-by: Zhichao Gao --- .../Library/ResetUtilityLib/ResetUtility.c | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/MdeModulePkg/Library/ResetUtilityLib/ResetUtility.c b/MdeModulePkg/Library/ResetUtilityLib/ResetUtility.c index 59f14edadc..45dbd2a952 100644 --- a/MdeModulePkg/Library/ResetUtilityLib/ResetUtility.c +++ b/MdeModulePkg/Library/ResetUtilityLib/ResetUtility.c @@ -31,16 +31,14 @@ VERIFY_SIZE_OF (RESET_UTILITY_GUID_SPECIFIC_RESET_DATA, 18); no custom data. The subtype will be formatted in such a way that it can be picked up by notification registrations and custom handlers. - NOTE: This call will fail if the architectural ResetSystem underpinnings - are not initialized. For DXE, you can add gEfiResetArchProtocolGuid - to your DEPEX. - + @param[in] ResetType The default EFI_RESET_TYPE of the reset. @param[in] ResetSubtype GUID pointer for the reset subtype to be used. **/ VOID EFIAPI -ResetPlatformSpecificGuid ( +ResetSystemWithSubtype ( + IN EFI_RESET_TYPE ResetType, IN CONST GUID *ResetSubtype ) { @@ -51,7 +49,33 @@ ResetPlatformSpecificGuid ( (GUID *)((UINT8 *)&ResetData + OFFSET_OF (RESET_UTILITY_GUID_SPECIFIC_RESET_DATA, ResetSubtype)), ResetSubtype ); - ResetPlatformSpecific (sizeof (ResetData), &ResetData); + + ResetSystem (ResetType, EFI_SUCCESS, sizeof (ResetData), &ResetData); +} + +/** + This is a shorthand helper function to reset with a subtype so that + the caller doesn't have to bother with a function that has half a dozen + parameters. + + This will generate a reset with status EFI_SUCCESS, a NULL string, and + no custom data. The subtype will be formatted in such a way that it can be + picked up by notification registrations and custom handlers. + + NOTE: This call will fail if the architectural ResetSystem underpinnings + are not initialized. For DXE, you can add gEfiResetArchProtocolGuid + to your DEPEX. + + @param[in] ResetSubtype GUID pointer for the reset subtype to be used. + +**/ +VOID +EFIAPI +ResetPlatformSpecificGuid ( + IN CONST GUID *ResetSubtype + ) +{ + ResetSystemWithSubtype (EfiResetPlatformSpecific, ResetSubtype); } /** -- 2.21.0.windows.1