From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from g4t3427.houston.hpe.com (g4t3427.houston.hpe.com [15.241.140.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BE1E521E47D6E for ; Tue, 29 Aug 2017 10:09:30 -0700 (PDT) Received: from G2W6310.americas.hpqcorp.net (g2w6310.austin.hp.com [16.197.64.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g4t3427.houston.hpe.com (Postfix) with ESMTPS id A0B3364 for ; Tue, 29 Aug 2017 17:12:10 +0000 (UTC) Received: from G9W8454.americas.hpqcorp.net (2002:10d8:a104::10d8:a104) by G2W6310.americas.hpqcorp.net (2002:10c5:4034::10c5:4034) with Microsoft SMTP Server (TLS) id 15.0.1178.4; Tue, 29 Aug 2017 17:12:08 +0000 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (15.241.52.13) by G9W8454.americas.hpqcorp.net (16.216.161.4) with Microsoft SMTP Server (TLS) id 15.0.1178.4 via Frontend Transport; Tue, 29 Aug 2017 17:12:08 +0000 Received: from DF4PR84MB0155.NAMPRD84.PROD.OUTLOOK.COM (10.162.192.29) by DF4PR84MB0009.NAMPRD84.PROD.OUTLOOK.COM (10.162.192.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1385.9; Tue, 29 Aug 2017 17:12:06 +0000 Received: from DF4PR84MB0155.NAMPRD84.PROD.OUTLOOK.COM ([10.162.192.29]) by DF4PR84MB0155.NAMPRD84.PROD.OUTLOOK.COM ([10.162.192.29]) with mapi id 15.01.1385.014; Tue, 29 Aug 2017 17:12:06 +0000 From: "Johnson, Brian (EXL - Eagan)" To: "Kinney, Michael D" , "Yao, Jiewen" , "Wang, Jian J" , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH 0/2] Implement NULL pointer detection feature Thread-Index: AQHTH6iYqSMZzfKr2UKq1NoCvUgNjKKZFvgAgAAD+YCAAAQggIACRs+QgAAbMQCAABEPcA== Date: Tue, 29 Aug 2017 17:12:06 +0000 Message-ID: References: <20170828025109.5032-1-jian.j.wang@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503A9A0884@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503A9A09CB@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=brian.johnson@hpe.com; x-originating-ip: [192.48.192.5] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DF4PR84MB0009; 6:tgwnZGynm5t7d6o3rQ9cqDK+r8GJZi8D1TAcpU3PhCs/rKFfD9mQfSNNuMTDJo2B2ZR8dqytEBUBtFNdIrkknugPiJETKeItKpmM+Ald76JpbqWxDKFySlL13QngqL/gf+sxrnRLhkAm/gZmNy+ldTi9DeymD6ZJkOIvymY17kdelJzrLreukEcdeR832IgJn8Qrpn2QzWqrt7uBaAZFp5oITH4MP4ggeaKKD136gXgpgmErCgpo70X79L5lfr72nCmS3ZwhQfzUsCIEBF6Zgdowjk8xIAb2LmPAVxbqbWTl1jBf3RanQhwv9RCp/otd3bVAniWO/LueuA0c5DGYXg==; 5:NRMLYf7waGMwng8jKK+DoaRAy5J1Z5qYxBwnMQSFzsSjSSuIKFj+LoV31Ryo/kCLal5MX3jnbHbSYFumjWX240Ax7iCruOsQkwUVh7H1UJrWi1oIFwjfk4W2Wc0Tz21wHGB9LsNWQuVcdmI396vIig==; 24:ij694POvhJqW0RSdYc8ociKpNErHA/WGfFcWxBZ+dQoZnpUQucdYFSPgcKdLUhclCFLzOyeUrv0EBjeIXyi0A/ldXwld+UBF3ecXZvgF47c=; 7:lBFZuotxwcQmiUyiSIkHXkrOVWO4BuB0kTyqJfFspzqwQYZtMcYK9yyPB99sDmiTrPVlcT9jN0786xx8DEfgA6AGFfnY4/g7cYPqi2xjGyEmjuiCj3tZr+mjKO/ipVKyULuoFP9+p+MnA61hvKpLVdAGgWQQvLEFuLe6e4So6mRJAQVohteWhdqQTTZmeufGZPCKvp17JgqZYa/WMeBiwj5zP/aNJk14bPayv7AdUSE= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 4869a6e7-70b8-4d51-afab-08d4ef01137d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DF4PR84MB0009; x-ms-traffictypediagnostic: DF4PR84MB0009: x-exchange-antispam-report-test: UriScan:(227479698468861)(162533806227266)(228905959029699); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DF4PR84MB0009; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DF4PR84MB0009; x-forefront-prvs: 0414DF926F x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(39860400002)(189002)(377454003)(13464003)(57704003)(199003)(189998001)(2501003)(55016002)(66066001)(305945005)(101416001)(7736002)(5660300001)(97736004)(7696004)(3280700002)(3660700001)(345774005)(6506006)(81166006)(8676002)(6246003)(86362001)(6436002)(53936002)(6306002)(77096006)(8936002)(74316002)(2906002)(2900100001)(9686003)(81156014)(76176999)(105586002)(106356001)(2950100002)(54356999)(53546010)(25786009)(50986999)(14454004)(68736007)(93886005)(6116002)(102836003)(3846002)(229853002)(478600001)(33656002)(966005)(19627235001); DIR:OUT; SFP:1102; SCL:1; SRVR:DF4PR84MB0009; H:DF4PR84MB0155.NAMPRD84.PROD.OUTLOOK.COM; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: hpe.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2017 17:12:06.4904 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR84MB0009 X-OriginatorOrg: hpe.com Subject: Re: [PATCH 0/2] Implement NULL pointer detection feature X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Aug 2017 17:09:31 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable It makes no difference to me. But it sounds more flexible and less cumbers= ome to use 4 PCDs. That way you don't have to define the meanings of indiv= idual bits, in the code or in the .dec file. And you could use different P= CD types for the different PCDs, eg. FeatureFlag or FixedAtBuild for PcdNul= lPointerDetectionPei (since the GCDs are built at compile time, and it woul= d take quite a bit of recoding to change that) but Dynamic for PcdNullPoint= erDetectionDxe, as Jiewen requested. But I'm good either way. Brian Johnson -----Original Message----- From: Kinney, Michael D [mailto:michael.d.kinney@intel.com]=20 Sent: Tuesday, August 29, 2017 11:02 AM To: Johnson, Brian (EXL - Eagan) ; Yao, Jiewen ; Wang, Jian J ; edk2-devel@lists.0= 1.org; Kinney, Michael D Subject: RE: [edk2] [PATCH 0/2] Implement NULL pointer detection feature Brian, Do you prefer 4 new PCDs or one new PCD with a bitmask to enable detection in different phases? Mike > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On > Behalf Of Johnson, Brian (EXL - Eagan) > Sent: Tuesday, August 29, 2017 8:17 AM > To: Yao, Jiewen ; Wang, Jian J > ; edk2-devel@lists.01.org > Subject: Re: [edk2] [PATCH 0/2] Implement NULL pointer > detection feature >=20 > Thank you for implementing this feature! It is very helpful > for catching pointer-related problems. We have used a similar > scheme on our systems for years, and caught several important > bugs. Some comments: >=20 > * It's possible to implement similar protections in PEI (IA32) > by modifying the GDT descriptors. >=20 > * For flexibility, I'd like NULL pointer protection to be > controlled independently in PEI, DXE, and SMM, using separate > PCDs. >=20 > * We have seen various option ROMs and OS boot loaders which > have NULL pointer issues, but are outside of our control. It > is useful to enable NULL pointer protection during as much of > the boot as possible, but disable it before running these other > executables. So I'd suggest adding another PCD, perhaps > PcdNullPointerDetectionPostDxe, to control NULL pointer > protection late in boot. If PcdNullPointerDetection !=3D > PcdNullPointerDetectionPostDxe, install an end-of-DXE event > (gEfiEndOfDxeEventGroupGuid) which changes the protection of > page 0 using a call to EFI_CPU_ARCH_PROTOCOL. > SetMemoryAttributes(CpuArch, 0, EFI_PAGE_SIZE, 0). >=20 > So ideally I'd like to have 4 PCDs: >=20 > PcdNullPointerDetectionPei > PcdNullPointerDetectionDxe > PcdNullPointerDetectionSmm > PcdNullPointerDetectionPostDxe >=20 > Thanks, > Brian Johnson > HPE >=20 > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On > Behalf Of Yao, Jiewen > Sent: Sunday, August 27, 2017 10:39 PM > To: Wang, Jian J ; edk2- > devel@lists.01.org > Subject: Re: [edk2] [PATCH 0/2] Implement NULL pointer > detection feature >=20 > Comment in line. >=20 > From: Wang, Jian J > Sent: Monday, August 28, 2017 11:24 AM > To: Yao, Jiewen ; edk2-devel@lists.01.org > Subject: RE: [edk2] [PATCH 0/2] Implement NULL pointer > detection feature >=20 >=20 > 1) I think this feature should be 'FALSE' by default. I > forgot to reset its default value. This feature makes use of > page mechanism to detect NULL pointer. So any ARCH doesn't > support paging in EDK-II can't use it. Currently validated > platform includes VLV2 and Denlow. Let me know if all platform > must be validated or not. >=20 > [Jiewen] Yes, I am OK to set to be FALSE to provide best > compatibility. > I suggest we validate all open source IA platforms, such as > Quark, and OVMF with TRUE. >=20 >=20 > 2) It's hard to make it a dynamic feature because we need > to setup page table for physical address 0-4095 in advance. If > there's no memory alloc/free action after enabling this > feature, there's no chance to make those change in page table. > Then the usage of feature will be limited in such case. >=20 > [Jiewen] Dynamic means the initial value is dynamic. I am not > saying we need modify the page table. >=20 > An implementation could be: > A platform can set this PCD in PEI phase based upon a setup > variable to choose CSM enable or disable. >=20 > The IPL sets page table based upon this PCD value. The DXE Core > cannot consume PCD directly, because it might be dynamic. But > we can pass the information from IPL via HOB. All the DXE > module just checks the value based upon HOB. >=20 >=20 >=20 >=20 > From: Yao, Jiewen > Sent: Monday, August 28, 2017 11:10 AM > To: Wang, Jian J > >; edk2- > devel@lists.01.org > Subject: RE: [edk2] [PATCH 0/2] Implement NULL pointer > detection feature >=20 > Thank you to enable this feature. >=20 > I have 2 comments, after a very quick review. >=20 >=20 > 1) I notice it is enabled by default > "gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetection|TRUE". >=20 > Would you please provide the information on how many open > source platforms are validated? > Such as, IA platform (VLV2, Quark), emu platform (OVMF, NT32)? > Or do we need validate any ARM platform? >=20 >=20 >=20 > 2) I am thinking about CSM platform. Do you think we can > make it dynamic, as such, a platform may set the validate based > upon CSM enable/disable? >=20 >=20 > Or if we need update the CSM module to patch the page table > automatically? Once this is feature is ON. >=20 >=20 > Thank you > Yao Jiewen >=20 >=20 > > -----Original Message----- > > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On > Behalf Of Wang, > > Jian J > > Sent: Monday, August 28, 2017 10:51 AM > > To: edk2-devel@lists.01.org > > Subject: [edk2] [PATCH 0/2] Implement NULL pointer detection > feature > > > > This patch is the implementation of NULL pointer detection > feature, > > which is one of the small features of Special Pool. > > > > Wang, Jian J (2): > > Implement NULL pointer detection for EDK-II Core > > Implement NULL pointer detection for EDK-II SMM Core and > driver > > > > MdeModulePkg/Core/Dxe/DxeMain.inf | 3 ++- > > MdeModulePkg/Core/Dxe/Mem/Page.c | 5 +++-- > > MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 1 + > > MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c | 6 ++++-- > > MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c | 26 > > ++++++++++++++++-------- > > MdeModulePkg/MdeModulePkg.dec | 7 > +++++++ > > UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c | 12 > +++++++++++ > > UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 25 > > ++++++++++++++++++++++- > > UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 1 + > > UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c | 12 > +++++++++++ > > 10 files changed, 84 insertions(+), 14 deletions(-) > > > > -- > > 2.11.0.windows.1 > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel