From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by groups.io with SMTP; Wed, 07 Aug 2019 08:52:28 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Aug 2019 08:52:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,357,1559545200"; d="scan'208";a="176231276" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga007.fm.intel.com with ESMTP; 07 Aug 2019 08:52:28 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.177]) by ORSMSX102.amr.corp.intel.com ([169.254.3.11]) with mapi id 14.03.0439.000; Wed, 7 Aug 2019 08:52:28 -0700 From: "Michael D Kinney" To: "Wu, Hao A" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Justen, Jordan L" , Andrew Fish , "Ni, Ray" Subject: Re: [edk2-devel] [Patch 1/3] EmulatorPkg: Fix VS20xx IA32 boot failure Thread-Topic: [edk2-devel] [Patch 1/3] EmulatorPkg: Fix VS20xx IA32 boot failure Thread-Index: AQHVTNd3QX7TMSSraUKWbiOYqiOnlabvq4kA//+hkJCAAH8XAIAACeSA Date: Wed, 7 Aug 2019 15:52:27 +0000 Message-ID: References: <20190807042028.21988-1-michael.d.kinney@intel.com> <20190807042028.21988-2-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.139] MIME-Version: 1.0 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hao Wu, I agree that the exception is not an expected result at all. I will debug a bit more to see why the mapping was allowed to pass. The expected result should be an error message with normal app exit if the address can not be mapped. Mike > -----Original Message----- > From: Wu, Hao A > Sent: Wednesday, August 7, 2019 1:15 AM > To: Kinney, Michael D ; > devel@edk2.groups.io > Cc: Justen, Jordan L ; > Andrew Fish ; Ni, Ray > > Subject: RE: [edk2-devel] [Patch 1/3] EmulatorPkg: Fix > VS20xx IA32 boot failure >=20 > > -----Original Message----- > > From: Kinney, Michael D > > Sent: Wednesday, August 07, 2019 3:43 PM > > To: Wu, Hao A; devel@edk2.groups.io; Kinney, Michael > D > > Cc: Justen, Jordan L; Andrew Fish; Ni, Ray > > Subject: RE: [edk2-devel] [Patch 1/3] EmulatorPkg: > Fix VS20xx IA32 > > boot failure > > > > I observed 2 failure modes > > > > 1) The range could not be mapped at the request > address > > And an error message was displayed and the app > exited. > > 2) The mapping passed, but when it was accessed by > the > > Sec module, the app generated an exception. >=20 >=20 > Thanks for the additional information. >=20 > For case 2), even though it might not be directly > related with this issue. > I think it would be the best to ensure WinNtOpenFile() > returns with success only when the map operation takes > effect. >=20 > For this patch: > Reviewed-by: Hao A Wu >=20 > Best Regards, > Hao Wu >=20 >=20 > > > > Mike > > > > > -----Original Message----- > > > From: Wu, Hao A > > > Sent: Tuesday, August 6, 2019 11:19 PM > > > To: devel@edk2.groups.io; Kinney, Michael D > > > > > > Cc: Justen, Jordan L ; > Andrew Fish > > > ; Ni, Ray > > > Subject: RE: [edk2-devel] [Patch 1/3] EmulatorPkg: > Fix VS20xx IA32 > > > boot failure > > > > > > > -----Original Message----- > > > > From: devel@edk2.groups.io > > > [mailto:devel@edk2.groups.io] On Behalf Of > > > > Michael D Kinney > > > > Sent: Wednesday, August 07, 2019 12:20 PM > > > > To: devel@edk2.groups.io > > > > Cc: Justen, Jordan L; Andrew Fish; Ni, Ray > > > > Subject: [edk2-devel] [Patch 1/3] EmulatorPkg: > Fix > > > VS20xx IA32 boot > > > > failure > > > > > > > > > https://bugzilla.tianocore.org/show_bug.cgi?id=3D2056 > > > > > > > > The IA32 build of the EmulatorPkg for VS20xx does > not > > > boot because the > > > > default value of PCD PcdPeiServicesTablePage is > set > > > for X64 Windows > > > > Host environments. If the EmulatorPkg is build > for > > > an IA32 Windows > > > > Host environment, then set this PCD to 0x13000000 > > > that can be mapped > > > > into a 32-bit user process. > > > > > > > > > Hello Mike, > > > > > > I have a question for this patch. > > > > > > For the main() function within file > > > EmulatorPkg/Win/Host/WinHost.c, I saw the below > codes: > > > > > > EmuMagicPage =3D (VOID *)(UINTN)(FixedPcdGet64 > > > (PcdPeiServicesTablePage) & MAX_UINTN); > > > if (EmuMagicPage !=3D NULL) { > > > UINT64 Size; > > > Status =3D WinNtOpenFile ( > > > NULL, > > > SIZE_4KB, > > > 0, > > > &EmuMagicPage, > > > &Size > > > ); > > > if (EFI_ERROR (Status)) { > > > SecPrint ("ERROR : Could not allocate > PeiServicesTablePage @ > > > %p\n", EmuMagicPage); > > > return EFI_DEVICE_ERROR; > > > } > > > } > > > > > > My understanding is that the WinNtOpenFile() > function call is > > > attempting to map the address specified by > 'EmuMagicPage'. For IA32 > > > case, the value in 'EmuMagicPage' here has already > been truncated > > > (0x03000000). If the > > > WinNtOpenFile() call returned successfully, the > address should be > > > mapped. > > > > > > Is it the case that even if WinNtOpenFile() returns > with no error, > > > the specified address (0x03000000) is not actually > being mapped? > > > > > > Best Regards, > > > Hao Wu > > > > > > > > > > > > > > Cc: Jordan Justen > > > > Cc: Andrew Fish > > > > Cc: Ray Ni > > > > Signed-off-by: Michael D Kinney > > > > > > > --- > > > > EmulatorPkg/EmulatorPkg.dsc | 6 +++++- > > > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/EmulatorPkg/EmulatorPkg.dsc > > > b/EmulatorPkg/EmulatorPkg.dsc > > > > index ea8b6ce76e..c4ec10d1d8 100644 > > > > --- a/EmulatorPkg/EmulatorPkg.dsc > > > > +++ b/EmulatorPkg/EmulatorPkg.dsc > > > > @@ -4,7 +4,7 @@ > > > > # The Emulation Platform can be used to debug > > > individual modules, > > > > prior to creating # a real platform. This also > > > provides an example > > > > for how an DSC is created. > > > > # > > > > -# Copyright (c) 2006 - 2018, Intel Corporation. > All > > > rights > > > > reserved.
> > > > +# Copyright (c) 2006 - 2019, Intel Corporation. > All > > > rights > > > > +reserved.
> > > > # Portions copyright (c) 2010 - 2011, Apple Inc. > All > > > rights > > > > reserved.
# # SPDX-License-Identifier: BSD- > 2- > > > Clause-Patent @@ > > > > -225,6 +225,10 @@ [PcdsFixedAtBuild] > > > > # 0-PCANSI, 1-VT100, 2-VT00+, 3-UTF8, 4- > TTYTERM > > > > > gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|1 > > > > > > > > +!if "IA32" in $(ARCH) && "MSFT" in $(FAMILY) > > > > + > > > > gEmulatorPkgTokenSpaceGuid.PcdPeiServicesTablePage|0x13 > > > 000000 > > > > +!endif > > > > + > > > > [PcdsDynamicDefault.common.DEFAULT] > > > > > > > > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpar > > > eBase64|0 > > > > > > > > > > > > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWork > > > ingBase64| > > > > 0 > > > > -- > > > > 2.21.0.windows.1 > > > > > > > > > > > >=20