From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.1499.1678859397439165895 for ; Tue, 14 Mar 2023 22:49:57 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=VsMRI3RI; spf=pass (domain: intel.com, ip: 192.55.52.120, 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=1678859397; x=1710395397; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=yD3B4tS11nVkaJ4QzZKFwCiaPnq7PqdxElZoZuwexCs=; b=VsMRI3RI0xfTqkOdisQkgRI1LY9WV4ohM0AX8nAQW2ZgSMLDoA/dec2O TWCvaaPIIgK6oH65GohuH2v/Q5Oqc5ZhvSPRb19TVm0n7+dEKCN6pTOS8 uStQuzQvnWDCZkm3ML04P8GYlwRlk1ov0VTig8M/KCqaPQYAB9uLCmxj+ xhIMdNrwGq/ak8vN9pM8RZrNe9nI8AyzdKyzPCE1pXuCuUilZPvb0k+gL 2EMSaKbcVFsE3GnLoS+y+v9AuW6Y7DKZmbHUDPS0vTFfGUVjxoTUOmRad ngH5JUC15pqHRme6z4+Nvcy71Z5YcOh3JrpLc9Cc8tuGNTrpL1410Y94H Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10649"; a="336306907" X-IronPort-AV: E=Sophos;i="5.98,261,1673942400"; d="scan'208";a="336306907" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2023 22:49:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10649"; a="672614619" X-IronPort-AV: E=Sophos;i="5.98,261,1673942400"; d="scan'208";a="672614619" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP; 14 Mar 2023 22:48:59 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 14 Mar 2023 22:48:56 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 14 Mar 2023 22:48:56 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.175) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 14 Mar 2023 22:48:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PxErecv1kxhfry9j0dYKEBzo9ggnVt3Dyjuzdkb0gLnWHPLJoFlUx5Qq0gXjB1wp+DI+TM1ho6UdY+hlncgkI18DLCesu6kSqo87uhCN+hEtE06uaj1x/SH1sx+4vSb3tRH/Uu0jxblZ/Bjc4eOB2iGYiH9KgG8gSnb4Ps97KVCvkyD10e81vzl23X8ex4LKreQWoyCVoXF3Or24p7WW80Q+m0CC0hzLNpi4EBjW9hnb2NQxQmr/9OSvF5mDVQYpA3lDI+7votOo264rM7+yEcB+bsORYrBCEGt/0USj+s0HAPAfGxcDBBrynMHDdieYo5dQZR+wYGVZpFJxt3OJLQ== 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=sqzAK8FW90XQF6RZzuoFp1dzKnmsQppdNMWr00j2rC8=; b=MdMaaZF6GeQLmq7QHJ8EhmGqh55skKbDxsnGqDxsWH9F4TuVw3rJWVA+gnlwjt8ECo9K/JNCXZ05qgaLz46tjXYPOQ8U1rWW1xf0B5abHYWyXtLfdZNeg6ZUkwwM2/lvxAm09D3NgDAjJ4JH6ZbaaSC+OtLn9q9VX2pqdDfgI8GfmSlbs7Z1RQJdEDuWkD0mvub/+i7poRtpYAUDkYuuNpfZ1nD1eeZVGqoRNtmzqkop7oL7RDG6m45OPTtUrzz+DCU1CbrPNXpMQjScnE9pHFZyz9Gy2Yf5mLA/qsQs0D7bRzTEaaQqPOZmmoXa6bF2s0rNcMqnUkMTbUo13nRiBA== 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 DM4PR11MB5407.namprd11.prod.outlook.com (2603:10b6:5:396::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.29; Wed, 15 Mar 2023 05:48:55 +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.024; Wed, 15 Mar 2023 05:48:55 +0000 From: "Ni, Ray" To: "Tan, Dun" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul R" , Gerd Hoffmann , "Liu, Zhiguang" Subject: Re: [Patch V2 07/14] UefiCpuPkg/CpuPageTableLib:Modify RandomTest to check Mask/Attr Thread-Topic: [Patch V2 07/14] UefiCpuPkg/CpuPageTableLib:Modify RandomTest to check Mask/Attr Thread-Index: AQHZUaYR5FKRIuxq8EuthRWyTK7zTK77XT2Q Date: Wed, 15 Mar 2023 05:48:54 +0000 Message-ID: References: <20230308100758.669-1-dun.tan@intel.com> <20230308100758.669-8-dun.tan@intel.com> In-Reply-To: <20230308100758.669-8-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_|DM4PR11MB5407:EE_ x-ms-office365-filtering-correlation-id: 5a00a5ae-965c-48bf-410a-08db2518f68f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lGSVwGfRrhngrBFHqS9GJp22MSLydMIZWVAbgxPyUM1cGSWg0B85u2rfWqzkStj8eSniWMGo2VGYb2zPX6Sphwwdk49ghclYBPs+j5wWrsvWOH7lqiJCBwISyCLLD2G0YcPzSjMl/uDLrqImO3+zOO3umorrnXpkUlGmuOUwA0QdPEuJPVeD8w6uSbpmQNWRAw4xPY/wev+HjgCVR/5NvOKzoT01kXu44YHcAHfOvC8bydAyuVYC2f8uwOOjBKiMvJ16kKZjb7S8lAY5qV/Ql+7mqMJAX+GZnLhiLIEqp8nqSa0oYOKjVsWb45qu2rJyUwQJUHBxgzajcvjCmTVQ/6mDFZP7NlBp/Dd/Yuw1CNVt2FM4IRSkrGcoEAH2kpis/0pPnZ8SQbhTFMwvo66t9KgD0el0A2uU0NoDD5sDEHajsCB2kZlKEb3mKH3ONRN2n9kKYjZxPo2wiYNiJ0B2sYlJ+bQRPWeYM9GROrLKuNToZ/V+Ipz2bp2CoAq7YSQEOL5JEkmSIcr40tyHjC8eYcxGKfcWj1P9xeHvuxFFPkAuK6TZNDkxclE1McGjqsERovpcVH+JqSglJakYR6HfwtzQ8bXOp54vWxaXfQBu92f59k9keeiedzH2diXTnkgPLaDojA5uxQIpCbHgoM7Vuu8wUs8tB6USrLmGRB6JinImqspqfX1V+ZE1+/epf8FW9twwzlNr7mVdUu2/E/dCXA== 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)(366004)(376002)(346002)(39860400002)(136003)(396003)(451199018)(33656002)(54906003)(55016003)(110136005)(478600001)(26005)(186003)(107886003)(316002)(6506007)(71200400001)(9686003)(7696005)(41300700001)(38100700002)(82960400001)(122000001)(5660300002)(86362001)(8936002)(52536014)(38070700005)(83380400001)(2906002)(66446008)(66476007)(66556008)(76116006)(66946007)(4326008)(8676002)(64756008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?7HmR0dQC0c+z0o679jS7R3wG/1/fl3iJBmGfZHKSFFALN0m1VsElws+PYShy?= =?us-ascii?Q?qZV2FDNUpJySxHNPI1DXktlCg7lN7SP0oHuQoMRm7MnSIBUrzIULHRtEtM/2?= =?us-ascii?Q?BfDmFiVTmN3y2V7CNR4WU2W2cI8dlrACAbB3RZwiIKes5j2UoYWDvGvslIEm?= =?us-ascii?Q?XzWiJdy/i9+3LgdAdCDFAmbl82DWSvJoOqM0O3F8BOQ9Pj+fNI+ZC/cbNegg?= =?us-ascii?Q?VJncG+mELCvG8eF5Ye+RZpRMnMBmZKFXEFKfG9SC86LKYhTcL6VO5a5yHepA?= =?us-ascii?Q?DwKsnXGRcoemaJiKcF9U99/MyuVyDCfhvwuXwGUpk1yAz5i3ybRyPeaQMZW9?= =?us-ascii?Q?raBTvF43GxClEs8SaFeaFe4DGC5DXRFC4L3X2rbNvLvQ0QNmngBE2qjA6Wwt?= =?us-ascii?Q?98ofvacXujpI/ydYBMH0gapK56MepI46atL5yfRxBJiye9swCUsJpeNAjOG3?= =?us-ascii?Q?RlEMVIMxYc0ueT3rH1HMY7e1eWDuoP6kF5jikU/gScdAFoeILHGcRbI/Si8y?= =?us-ascii?Q?cY1eQLhe/UsE4wn7FprL5vpCSrhaNwINF/HkEJkZvUA9+UTPNScYzLk2LeO0?= =?us-ascii?Q?sCOjj8XrAdpXiUL2+fVYe42LJeGrc8BTl2bhasgFdwpu/LKuLbAJe6ANRYTq?= =?us-ascii?Q?m04gUv0kIHMM9Dk6n+QkU6x06Yb42joh7q79W7ilVvIVp48W+9/ZZS1sKzxr?= =?us-ascii?Q?zhlH/ius3feSbAmCTAbG5fpCu9lXfTuSV+Jgekc68QQY/4raknTGy44bp85R?= =?us-ascii?Q?ibAKaJnz1mX9Hl5JePoe0MgPl3++My669xKfkGjCKd1/Yt2kttNw1fBONTqL?= =?us-ascii?Q?VVU/KNe8waWBCON3odf8z/+MAHYoq0QO1lgplRVFlAmatq2DOMsJknz7COPh?= =?us-ascii?Q?V4MwHjwKbFdqEIc6+QY7KIkROXXuwq1cV64Bl2aHhngZ3/7EOYgckTW+YqoZ?= =?us-ascii?Q?qMms3PKwCXccDjshMIwFHIGxD8NQ/JTlqNo5oRYPLwUBEMgOPhsBnd40KMA3?= =?us-ascii?Q?Bg+JP3ApeY/jHgnJldc7CsQWqWyyXdigCqZoIPwaUcLlM1vhp2yLaNPtdSXC?= =?us-ascii?Q?B95ltlzZsqCqO8cYL4OgL5pFPKldBJPjF24/az4LtbOFJ03I/ww0ygvGpbgf?= =?us-ascii?Q?1aZHLUGRXhuvWXH/AMjhytGzmdmf0GNAbIv2bE1SKBVxKr1eg3RYisuGj1e3?= =?us-ascii?Q?kICj7paZlXQDIH6sJg7t0ZB3V+56icG3FODloYobVj9BIR9SzKX+E3T9KY0h?= =?us-ascii?Q?LQwGz7or6UcD6wyZPiLukUUPPGlma1uMlBzNUUfDtENnbwtEEP36feSaguCh?= =?us-ascii?Q?STKIjCN8+LcnBYKs+jwUVbO3VBdOqLefZf0G+G1dnGpb9dmr2o+ktE4Lisvv?= =?us-ascii?Q?LfqQccgz9ISIXbgACgzbJwwpHlAaFZgaUvnS/Hm4Nw1ct9W3H+kbqOwQEdKQ?= =?us-ascii?Q?7GbCLywKPyaQb/pp1oV1u02KphGQehCTmLJ4fcwqdwEB+sCCKLwVHxLD/seF?= =?us-ascii?Q?zADLJZnF26In8RyRP322OUAkbtrdoAE+IdWe9IhdMqaxOZYrv+NI40OZ2PpX?= =?us-ascii?Q?rChbNrzMnzLbsIHQjKAVMZFR7RKD0DcTHFRr48nQ?= 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: 5a00a5ae-965c-48bf-410a-08db2518f68f X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2023 05:48:54.8458 (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: 7WuQ1byH82fyeJBqGX+RS9xtrCvbWydfD8x+Ft0SaWY2nlVVZ8561l8ZHU+PKiNnbe3pHib6/ZdSImtxsYljyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5407 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 >=20 > -/** > - Return a random boolean. > - > - @return boolean > -**/ > -BOOLEAN > -RandomBoolean ( > - VOID > - ) > -{ > - BOOLEAN Value; > - > - LocalRandomBytes ((UINT8 *)&Value, sizeof (BOOLEAN)); > - return Value%2; > -} > - > /** > Return a 32bit random number. >=20 > @@ -139,6 +123,21 @@ Random64 ( > return (UINT64)(Value % (Limit - Start + 1)) + Start; > } >=20 > +/** > + Returns true with the percentage of input Probability. > + > + @param[in] Probability The percentage to return true. > + > + @return boolean > +**/ > +BOOLEAN > +RandomBoolean ( > + UINT8 Probability > + ) > +{ > + return ((Probability > ((UINT8)Random64 (0, 100))) ? TRUE : FALSE); > +} 1. can you split the RandomBoolean() change in standalone patch? 2. can you simplify below code to only use for-loop? > + // > + if (MapEntrys->Maps[MapsIndex].Length > 0) { > + if (MapCount !=3D 0) { > + UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL); > + Map =3D AllocatePages (EFI_SIZE_TO_PAGES (MapCount * sizeof > (IA32_MAP_ENTRY))); > + ASSERT (Map !=3D NULL); > + Status =3D PageTableParse (*PageTable, PagingMode, Map, &MapCount)= ; > + > + if (Map[MapCount - 1].LinearAddress + Map[MapCount - 1].Length < > MapEntrys->Maps[MapsIndex].LinearAddress + MapEntrys- > >Maps[MapsIndex].Length) { > + IsNotPresent =3D TRUE; > + } else { > + for (Index =3D 0; Index < MapCount; Index++) { > + if ((PreviousAddress < Map[Index].LinearAddress) && > + (MapEntrys->Maps[MapsIndex].LinearAddress < > Map[Index].LinearAddress) && > + ((MapEntrys->Maps[MapsIndex].LinearAddress + MapEntrys- > >Maps[MapsIndex].Length) > PreviousAddress)) > + { > + // > + // MapEntrys->Maps[MapsIndex] contains not-present range in > exsiting page table. > + // > + IsNotPresent =3D TRUE; > + break; > + } > + > + PreviousAddress =3D Map[Index].LinearAddress + Map[Index].Leng= th; > + } > + } > + } else { > + IsNotPresent =3D TRUE; > + } > + } >=20 > PageTableBufferSize =3D 0; > Status =3D PageTableMap ( > @@ -638,6 +700,25 @@ SingleMapEntryTest ( > &MapEntrys->Maps[MapsIndex].Attribute, > &MapEntrys->Maps[MapsIndex].Mask > ); > + > + // > + // Return Status should be InvalidParameter when: > + // 1. MapEntrys->Maps[MapsIndex] contains not-present range. > + // 2. MapEntrys->Maps[MapsIndex].Mask contains zero value field or > Attribute->Bits.Present is 0. > + // > + Attribute =3D &MapEntrys->Maps[MapsIndex].Attribute; > + Mask =3D &MapEntrys->Maps[MapsIndex].Mask; > + if (((Attribute->Bits.Present =3D=3D 0) || (Mask->Bits.Present =3D=3D = 0) || (Mask- > >Bits.ReadWrite =3D=3D 0) || > + (Mask->Bits.UserSupervisor =3D=3D 0) || (Mask->Bits.WriteThrough = =3D=3D 0) || > (Mask->Bits.CacheDisabled =3D=3D 0) || > + (Mask->Bits.Accessed =3D=3D 0) || (Mask->Bits.Dirty =3D=3D 0) || = (Mask- > >Bits.Pat =3D=3D 0) || (Mask->Bits.Global =3D=3D 0) || > + (Mask->Bits.PageTableBaseAddress =3D=3D 0) || (Mask->Bits.Protect= ionKey > =3D=3D 0) || (Mask->Bits.Nx =3D=3D 0)) && > + IsNotPresent) > + { > + RemoveLastMapEntry (MapEntrys); > + UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER); > + return UNIT_TEST_PASSED; > + } > + > if (PageTableBufferSize !=3D 0) { > UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL); >=20 > diff --git a/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/TestHelper.c > b/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/TestHelper.c > index 5bd70c0f65..11f7e607ca 100644 > --- a/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/TestHelper.c > +++ b/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/TestHelper.c > @@ -171,6 +171,10 @@ IsPageTableValid ( > UNIT_TEST_STATUS Status; > IA32_PAGING_ENTRY *PagingEntry; >=20 > + if (PageTable =3D=3D 0) { > + return UNIT_TEST_PASSED; > + } > + > if ((PagingMode =3D=3D Paging32bit) || (PagingMode =3D=3D PagingPae) |= | > (PagingMode >=3D PagingModeMax)) { > // > // 32bit paging is never supported. > -- > 2.31.1.windows.1