From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.96200.1679645186382946786 for ; Fri, 24 Mar 2023 01:06:26 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=b50Ry3gD; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679645186; x=1711181186; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=0nyw2QkFS7mjXjbVuLrp3kozMJUIKyKYlO0UFDL+h58=; b=b50Ry3gDU/0cHMhizpzjacnweQFo0S/PceqstanTo1xEDFS7wzu4VLP+ hPhwLzF2YIDuq34E3iaQxd1cM8mlRQW/2bRIKlR0Y1pJK5CCDZus6FG41 PR7jRondclpeODRJeK8Bx9hyWUN2fTIiWpRPnwryWYiEeFdG4RqZomQcs 2kQ+cROCErcRyG3jsfYazZt1HcWnjyCcIl7Jz1C5EZMFFr5tOsUz3doVx k+imA1DRlgkvGGNKCRzH8JwRH1ekIkD2rY8zrk3CtlpYHKO5rzrhRjZAC M5ICKNudxR++f1o8V9jj12XWFXhjaA20e+rTmyMM4NQzdQsPJIyqD3hcS Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10658"; a="320113712" X-IronPort-AV: E=Sophos;i="5.98,287,1673942400"; d="scan'208";a="320113712" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Mar 2023 01:06:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10658"; a="928571413" X-IronPort-AV: E=Sophos;i="5.98,287,1673942400"; d="scan'208";a="928571413" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga006.fm.intel.com with ESMTP; 24 Mar 2023 01:06:25 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Fri, 24 Mar 2023 01:06:25 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Fri, 24 Mar 2023 01:06:25 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Fri, 24 Mar 2023 01:06:25 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.169) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Fri, 24 Mar 2023 01:06:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PdEOUbASEVd3ZDlSMlHRDLwIqwEC6vbbV/XNfPi+8UeQWgtDZ7hU5CkiW7LbTUmaROIOfAsrpaIqRV5PTfpbsSZiF+5sGeExpdsLBQgzKNdBn55Q6x6PpskQNA47IrhmJ3FZefsrUSoeduNmP7ecOh2G2zbLJfajCXr5jAx4zHGHT7dlJqwMEZAq3d2/y6l3XyPzzbOmlC9WrIv5jAJ4SASWhIcZyKumTN46xsYBEVuqULeQ7y8IC+08sjQYFamRmlLoOwUawzrduuxfIZEBxnJtOkZzQWWAkIguq4H+yBCNYjZ/swAYWZCHVBUz62mBcraIJPK+oQs4O9tZJwxB+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1xubIU17AYlRhddrpGYRTGiupfZrZ11wz+G57h7RQNA=; b=ZwYWhSexQ7bM6p5ueA5cFa/iFh1WxCHGjPr6+f14fpItwNf4DVaD1mMwWJmp7DNypt8/oq1cFxhOIvmSLSbJx7BRmXFcSe6XS72yD4YJGHd0Frk8K6Wf8vwMLgqDxX9yERnGd+F997ubzixzcPdK5tSXaB/2/Oj5Od5CPYjjuoMqaqOIEnHMWHo3lJrzcUTTL7N5zzS+6RdnOIL134R6iWhAEpFJajD3NeRzgJzHOYeMlbh1Bcn+RGzMu7G0Czj4w7Jsl5dSApdbFX6jPbKul/fJgSzKmqXhaegulbursf6CW8WRh7aRBDomFgtNqv/KKcrfHZLNJLZlSgSF6EGutQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by PH8PR11MB6705.namprd11.prod.outlook.com (2603:10b6:510:1c4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Fri, 24 Mar 2023 08:06:22 +0000 Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::ae07:e96a:4a24:8a69]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::ae07:e96a:4a24:8a69%7]) with mapi id 15.20.6178.037; Fri, 24 Mar 2023 08:06:22 +0000 From: "Ni, Ray" To: "Tan, Dun" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul R" , Gerd Hoffmann Subject: Re: [Patch V5 09/22] UefiCpuPkg/CpuPageTableLib: Add manual test to check Mask and Attr Thread-Topic: [Patch V5 09/22] UefiCpuPkg/CpuPageTableLib: Add manual test to check Mask and Attr Thread-Index: AQHZXhYCCrdWf3woq0qBJpZw0/UoeK8JktKg Date: Fri, 24 Mar 2023 08:06:22 +0000 Message-ID: References: <20230324060020.940-1-dun.tan@intel.com> <20230324060020.940-10-dun.tan@intel.com> In-Reply-To: <20230324060020.940-10-dun.tan@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|PH8PR11MB6705:EE_ x-ms-office365-filtering-correlation-id: 3b8eb48d-654c-4d3d-34ee-08db2c3ea846 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OXHex3MDngn0lraJukFZN1GHyhNovt0q63u7Hn5rc5imuUvutc3op0h//ITwk/5oJ3yLKLwTyA7cn7cleyjQHTYRSzoJeQxb85mdrhOpsJTVgy0LznA5Q2O+FgKQkQ3dc83deNTmLBVPxQm5SzN2jWSncaPKsGJcuZmb/T9WJKAX9XpNLz+jA385NDUxY4hf7pxB7Zm4AsT1uP4jj76LefbCtNGkwAILtsDwxFUmiT3HSfnvSRbLJNN+rHC4HZUQ42bU6uPZ4EoEAhEcpj85c0froIUg/d9cPh+pmo6iMKYSV1zqqCeBdDei2s4gNH8+nuWG3UszwmRu3Db9Ldx00hR3Y+8QQFfsjfMeV7pENV9IrkErms3vBmqCoCQUOU5EK20Uy0O5QBad6dQsmAhb8p4wJaOqEcHaUJ4LIJJ2NtmH2Z4p0i8LH/j57z26xmQOfu4+nN5q/q3Urha0qqq+rT11XJk7l1VriigNSqQchjKbQgYvB5N+eEno10t7VgE9BTDKxWHhPy1W/IqUuzelF3g7oYDWERAHNS05Z3U7+u/oaO1OHuZVhATwtRcCbqZFjL3OdBYIQ6RaY2+eX7HArdczIh+t+MEQFX34PGty3U5atzUvFE/FphrAMBOufZb3lC2o1yXkPAikQZOh3N1qO6y6qq9Y5YBF8cYI2j9YhxKspox7I1vkzj/FGGotbPHVtrnniRFveGctn6f9QwpI/Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN6PR11MB8244.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(346002)(396003)(366004)(136003)(39860400002)(376002)(451199018)(33656002)(186003)(26005)(6506007)(53546011)(83380400001)(86362001)(38070700005)(2906002)(66946007)(66556008)(66446008)(71200400001)(19627235002)(76116006)(64756008)(54906003)(9686003)(8676002)(110136005)(66476007)(55016003)(4326008)(82960400001)(122000001)(478600001)(38100700002)(41300700001)(316002)(7696005)(52536014)(5660300002)(8936002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?vFsX6wzKl9VIf7+gg7lFpfXsg3WyOIUcShA+jwrCOKYDlopkb1v/nHMqPu8/?= =?us-ascii?Q?GkG3jIvM6MXcCV6QHUvTWnXKIKy9u1e9yrn8tzGdA8VJq0Sf//XWnpIbZT87?= =?us-ascii?Q?+p4lYsQrPNcHAuFHcmFxsdf7vQrTJnHG40NWbPH/tUPnYB7Fdi+7XfHDTBSD?= =?us-ascii?Q?SDKt6H+tHBNk0k8b8sLouF2Y7VxVmIkQ9PCrbvibODfn451niNy9SUpoEkHU?= =?us-ascii?Q?g1sbYGRVGTchkbl557hhJWbUrL4i5XZ6TLL+3XuDPaqBPKAymWi39xT80biJ?= =?us-ascii?Q?6xQXLQzJN9KX90qkjVyx8wAfLZkYZBJvaozVQhRhwg4a24+Xw6RSiqkT9E+B?= =?us-ascii?Q?pJWoovbWRQkc1LbXqa3StWZTvofXGUGXOXs8PTuADmpQxNfBD3ZoxeYo/JdR?= =?us-ascii?Q?3u0UNTmrwg/LtGHyBR+ood9G5A/3w2UXSD2A+lQ85R9vD6cQoBtBneaoBlhk?= =?us-ascii?Q?H891WDsEVCSG19EcfPOwiWvIIM3KbAkY6DsTVIzt2CPARRGB9L7XoIB/33Hd?= =?us-ascii?Q?N4TbS99Vv/y6vtAhueJ6wQ+vDrFUZkLq9fVZIV0bGEJHEPDQUKRBP/j5ofiN?= =?us-ascii?Q?DrWkvBpjVv0lTk2ZaNjZqQXRmq4h+UmzZ0dPpquKeXvylqkd3KBd8poxekgN?= =?us-ascii?Q?I5XFSQ4S/4wBVT/DK8tXtTxi469skkxhYnsR0AkOmRV4lYJm+e58lkx1d7Xw?= =?us-ascii?Q?KMzHujYhME840/beIZoY8X/E/mVSbnEvrc9EnzvUK40ae41PyzuwZIAVKeEI?= =?us-ascii?Q?nJeDCHm6IDJbPFKJdos6XV+X7QbfA2Uxi5SGC04qjaEGInKmHVvGtIlmzFJq?= =?us-ascii?Q?rDGe+LkT6d8BpLA+Q2lycDa0i6tobj1ZlqdavgD/51mp1p9wMpCzBMZGjV+o?= =?us-ascii?Q?X//XCRRF2A/bvOw8H5184GMA76WduD+3w9ZeMo/5fURSKnVYHSx7S6eYHGTE?= =?us-ascii?Q?VNb8AQzVxICL7sHu1di5ovICj/8/oJFkEOo0nMlzux9xSP3/9CF4BBqpxdWJ?= =?us-ascii?Q?/aMXwE+wZ8NFC3ye8e/bvoTU9Bpfa4/pxlELV33dm4GWN2PexwA0xxZ6r/oG?= =?us-ascii?Q?CSd2zOUyRRyWgoh7jDdnVAXpIh9UXgmjS40ezzQU8RWdfVHpFMlKJtf4aavn?= =?us-ascii?Q?9go1/shCi6uidLAuiMkDQjkCV/Ly8XR9hpvQKcDVU24Pc/me6vr4TGqXJr8o?= =?us-ascii?Q?WMhgR0eb9QJR0h4CsaybSNd8jo0omCJuGX+tjfIFQbe+zezhPvQqxNN1zIho?= =?us-ascii?Q?C7cAreQhrpzZOJskUcFzJ050OthR31JNgy5VIuurdtfnThOsGO6rUI2r1puA?= =?us-ascii?Q?xMSanrd/SEXp3p3/izJO75z+b4U6y4oLqLS2x7u2culxBZzKGXceZc4iAGbN?= =?us-ascii?Q?6sQ5p+uXBVkt2Xsfrmxz30R4j2fFO+Y/jENgEnK3Oi2BLkKb4/uin73ZC7Dt?= =?us-ascii?Q?iAWUVIjA3zl3x32q1HER62VIt7JulMYk6ZWG1BvfNDJdzmqKWsLKjZXzG6uV?= =?us-ascii?Q?nmbKFS9KiAw8SIBZgRXREsNPkz9NZtK+MXD8/c1MaU1fofRK5dQ7i5NzEITB?= =?us-ascii?Q?yzbSdnjyJd+m3k0GSkg=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b8eb48d-654c-4d3d-34ee-08db2c3ea846 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2023 08:06:22.5356 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pXTBwUeYsOAS5yT4IS6QT+YGjtOgOo0QwZ9jmFdPpFXg9zsXiBfKjdJudRnu8QB1Z1HYAB7lpVLnVVac7OXPMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB6705 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Ray Ni > -----Original Message----- > From: Tan, Dun > Sent: Friday, March 24, 2023 2:00 PM > To: devel@edk2.groups.io > Cc: Dong, Eric ; Ni, Ray ; Kumar, > Rahul R ; Gerd Hoffmann > Subject: [Patch V5 09/22] UefiCpuPkg/CpuPageTableLib: Add manual test to > check Mask and Attr >=20 > Add manual test case to check input Mask and Attribute. The check > steps are: > 1.Create Page table to cover [0, 2G]. All fields of MapMask should > be set. > 2.Update Page table to set [2G - 8K,2G] from present to non-present. > All fields of MapMask except present should not be set. > 3.Still set [2G - 8K, 2G] as not present, this case is permitted. > But set [2G - 8K, 2G] as RW is not permitted. > 4.Update Page table to set [2G - 8K, 2G] as present and RW. All > fields of MapMask should be set. >=20 > Signed-off-by: Dun Tan > Cc: Eric Dong > Cc: Ray Ni > Cc: Rahul Kumar > Tested-by: Gerd Hoffmann > Acked-by: Gerd Hoffmann > --- >=20 > UefiCpuPkg/Library/CpuPageTableLib/UnitTest/CpuPageTableLibUnitTestHo > st.c | 129 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > +++++++++++-- > 1 file changed, 127 insertions(+), 2 deletions(-) >=20 > diff --git > a/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/CpuPageTableLibUnitTest > Host.c > b/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/CpuPageTableLibUnitTest > Host.c > index 3014a03243..52fae1864a 100644 > --- > a/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/CpuPageTableLibUnitTest > Host.c > +++ > b/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/CpuPageTableLibUnitTest > Host.c > @@ -1,7 +1,7 @@ > /** @file > Unit tests of the CpuPageTableLib instance of the CpuPageTableLib clas= s >=20 > - Copyright (c) 2022, Intel Corporation. All rights reserved.
> + Copyright (c) 2022 - 2023, Intel Corporation. All rights reserved.
> SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > **/ > @@ -697,6 +697,131 @@ TestCaseManualChangeNx ( > return UNIT_TEST_PASSED; > } >=20 > +/** > + Check if the input Mask and Attribute is as expected when creating new > page table or > + updating existing page table. > + > + @param[in] Context [Optional] An optional parameter that enables: > + 1) test-case reuse with varied parameters and > + 2) test-case re-entry for Target tests that nee= d a > + reboot. This parameter is a VOID* and it is th= e > + responsibility of the test author to ensure tha= t the > + contents are well understood by all test cases = that may > + consume it. > + > + @retval UNIT_TEST_PASSED The Unit test has completed and = the > test > + case was successful. > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed= . > +**/ > +UNIT_TEST_STATUS > +EFIAPI > +TestCaseToCheckMapMaskAndAttr ( > + IN UNIT_TEST_CONTEXT Context > + ) > +{ > + UINTN PageTable; > + PAGING_MODE PagingMode; > + VOID *Buffer; > + UINTN PageTableBufferSize; > + IA32_MAP_ATTRIBUTE MapAttribute; > + IA32_MAP_ATTRIBUTE ExpectedMapAttribute; > + IA32_MAP_ATTRIBUTE MapMask; > + RETURN_STATUS Status; > + IA32_MAP_ENTRY *Map; > + UINTN MapCount; > + > + PagingMode =3D Paging4Level; > + PageTableBufferSize =3D 0; > + PageTable =3D 0; > + Buffer =3D NULL; > + MapAttribute.Uint64 =3D 0; > + MapAttribute.Bits.Present =3D 1; > + MapMask.Uint64 =3D 0; > + MapMask.Bits.Present =3D 1; > + // > + // Create Page table to cover [0, 2G]. All fields of MapMask should be= set. > + // > + Status =3D PageTableMap (&PageTable, PagingMode, Buffer, > &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER); > + MapMask.Uint64 =3D MAX_UINT64; > + Status =3D PageTableMap (&PageTable, PagingMode, Buffer, > &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL); > + Buffer =3D AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize)); > + Status =3D PageTableMap (&PageTable, PagingMode, Buffer, > &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_SUCCESS); > + > + // > + // Update Page table to set [2G - 8K, 2G] from present to non-present.= All > fields of MapMask except present should not be set. > + // > + PageTableBufferSize =3D 0; > + MapAttribute.Uint64 =3D SIZE_2GB - SIZE_8KB; > + MapMask.Uint64 =3D 0; > + MapMask.Bits.Present =3D 1; > + MapMask.Bits.ReadWrite =3D 1; > + Status =3D PageTableMap (&PageTable, PagingMode, Buffe= r, > &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, > &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER); > + MapMask.Bits.ReadWrite =3D 0; > + Status =3D PageTableMap (&PageTable, PagingMode, Buffe= r, > &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, > &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL); > + Buffer =3D AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize)); > + Status =3D PageTableMap (&PageTable, PagingMode, Buffer, > &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_SUCCESS); > + > + // > + // Still set [2G - 8K, 2G] as not present, this case is permitted. But= set [2G - > 8K, 2G] as RW is not permitted. > + // > + PageTableBufferSize =3D 0; > + MapAttribute.Uint64 =3D 0; > + MapMask.Uint64 =3D 0; > + MapMask.Bits.Present =3D 1; > + Status =3D PageTableMap (&PageTable, PagingMode, Buffer, > &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, > &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_SUCCESS); > + MapAttribute.Bits.ReadWrite =3D 1; > + MapMask.Bits.ReadWrite =3D 1; > + Status =3D PageTableMap (&PageTable, PagingMode, = Buffer, > &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, > &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER); > + > + // > + // Update Page table to set [2G - 8K, 2G] as present and RW. All field= s of > MapMask should be set. > + // > + PageTableBufferSize =3D 0; > + MapAttribute.Uint64 =3D SIZE_2GB - SIZE_8KB; > + MapAttribute.Bits.ReadWrite =3D 1; > + MapAttribute.Bits.Present =3D 1; > + MapMask.Uint64 =3D 0; > + MapMask.Bits.ReadWrite =3D 1; > + MapMask.Bits.Present =3D 1; > + Status =3D PageTableMap (&PageTable, PagingMode, = Buffer, > &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, > &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER); > + MapMask.Uint64 =3D MAX_UINT64; > + Status =3D PageTableMap (&PageTable, PagingMode, Buffer, > &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, > &MapMask); > + UT_ASSERT_EQUAL (Status, RETURN_SUCCESS); > + > + MapCount =3D 0; > + Status =3D PageTableParse (PageTable, PagingMode, NULL, &MapCount); > + UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL); > + Map =3D AllocatePages (EFI_SIZE_TO_PAGES (MapCount* sizeof > (IA32_MAP_ENTRY))); > + Status =3D PageTableParse (PageTable, PagingMode, Map, &MapCount); > + UT_ASSERT_EQUAL (Status, RETURN_SUCCESS); > + > + // > + // There should be two ranges [0, 2G-8k] with RW =3D 0 and [2G-8k, 2G]= with > RW =3D 1 > + // > + UT_ASSERT_EQUAL (MapCount, 2); > + UT_ASSERT_EQUAL (Map[0].LinearAddress, 0); > + UT_ASSERT_EQUAL (Map[0].Length, SIZE_2GB - SIZE_8KB); > + ExpectedMapAttribute.Uint64 =3D 0; > + ExpectedMapAttribute.Bits.Present =3D 1; > + UT_ASSERT_EQUAL (Map[0].Attribute.Uint64, > ExpectedMapAttribute.Uint64); > + UT_ASSERT_EQUAL (Map[1].LinearAddress, SIZE_2GB - SIZE_8KB); > + UT_ASSERT_EQUAL (Map[1].Length, SIZE_8KB); > + ExpectedMapAttribute.Uint64 =3D SIZE_2GB - SIZE_8KB; > + ExpectedMapAttribute.Bits.Present =3D 1; > + ExpectedMapAttribute.Bits.ReadWrite =3D 1; > + UT_ASSERT_EQUAL (Map[1].Attribute.Uint64, > ExpectedMapAttribute.Uint64); > + return UNIT_TEST_PASSED; > +} > + > /** > Initialize the unit test framework, suite, and unit tests for the > sample unit tests and run the unit tests. > @@ -746,7 +871,7 @@ UefiTestMain ( > AddTestCase (ManualTestCase, "Check if the parent entry has different > ReadWrite attribute", "Manual Test Case5", > TestCaseManualChangeReadWrite, NULL, NULL, NULL); > AddTestCase (ManualTestCase, "Check if the parent entry has different = Nx > attribute", "Manual Test Case6", TestCaseManualChangeNx, NULL, NULL, > NULL); > AddTestCase (ManualTestCase, "Check if the needed size is expected", > "Manual Test Case7", TestCaseManualSizeNotMatch, NULL, NULL, NULL); > - > + AddTestCase (ManualTestCase, "Check MapMask when creating new page > table or mapping not-present range", "Manual Test Case8", > TestCaseToCheckMapMaskAndAttr, NULL, NULL, NULL); > // > // Populate the Random Test Cases. > // > -- > 2.31.1.windows.1