From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.101877.1679666629549574866 for ; Fri, 24 Mar 2023 07:03:49 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=HiLPNjSP; spf=pass (domain: intel.com, ip: 134.134.136.65, 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=1679666629; x=1711202629; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=f6nTGo4QIUMxEFNzGpoCPKgE0grHlVZ+qpbtr9hhRU8=; b=HiLPNjSPKpJ7oSLxaudQIqtI3V2+lmzykkK+HwHApPeIpzHc7Ftw6T30 XKuT2YoW3GjXvp9DrEdNCGZcGdApCwSb6GwXDgJX3Cvdahw52T+WBh7FE 0OXUKHgb2beISZMq5Z6lp24m5tjPly4nfsMFBUKM8MsYLY5Mz8zGz5Ex8 8S+X97+coxCqL7SjecYLLv5lAKRyUL31NGxlUD5FHDX83uqxFMxjqulqd cL19kxCGc6IjQm9hyHZp2+0BH674risccH/3cOuv4t60JMjNMKGn7E/Uu DmjK+T/uLDf1xAcsjvzzFiCimjmGxwc7byPSDQ1sbWWixEtm/4AeFrL5V g==; X-IronPort-AV: E=McAfee;i="6600,9927,10659"; a="342171394" X-IronPort-AV: E=Sophos;i="5.98,288,1673942400"; d="scan'208";a="342171394" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Mar 2023 07:03:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10659"; a="715235201" X-IronPort-AV: E=Sophos;i="5.98,288,1673942400"; d="scan'208";a="715235201" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga001.jf.intel.com with ESMTP; 24 Mar 2023 07:03:48 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx603.amr.corp.intel.com (10.18.126.83) 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 07:03:48 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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; Fri, 24 Mar 2023 07:03:47 -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; Fri, 24 Mar 2023 07:03:47 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.103) 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; Fri, 24 Mar 2023 07:03:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mah3zbWOVRmqmuFKVc+XNwWVtyIcD7nicbBrwRtY4YVvIIhwQnzw1ZnnmGddlTfmv3z9e/lgF5M08gbiz5vugJjYRzxOs+MEBWLrVBz4q6hqRUJNTVB3iH5u0gkuwusSN90i8T9i0QHP2on5M/tl8kGUMOIbuKfdzAddy/BYmXknhmgwkB59tNvhC19ooV5lCUQPossNLDQbBW3OfGS/WarP7euqBA26Do/ZLB81HAiwg+cm+6CHJ3R+4E/evWQ+xpvzXPsgyNuNQ1c0/ahLIm9JI8N8vVxVBcDlz3XI4Rlys8UvTqWDSQXK6zT0zlM00MiPP+pPDUcvvvJwepplbA== 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=Sbjhd9wn90O8iIH+770yPKQeJeHjUR3hvqxp3BhZSUo=; b=ntP7JvXFxE0rdwS19yeur7GHjx8vbAbjM6du3IBiWq6YeoDycw8wlD94eAHk0d28igdsB21q3FwGG+oicVsjZ95mfmCp9RzQs4uGCmr02QE+EOsAJmUSZn/2F7tE9KCt4MG+0ms9vUsfzwz0c9HHPhD0LjpXdpharS1G4074kP7wXjhDGkd3nytdRjxDgdP3aoALvNfL98yamE0JFOTv6+G3oV9m9t2xKmKafTMnK99rOEWSRpJT4s4ge86B8EPp9GWM/yCohhYcoi+jU7/6/xzk0m1j4LvyfgyonY41980Iiq241VuNeaauECgd1Cd2iH/Iyx2fE8QoR6qXMnmepw== 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 DS7PR11MB6016.namprd11.prod.outlook.com (2603:10b6:8:75::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.38; Fri, 24 Mar 2023 14:03:40 +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 14:03:40 +0000 From: "Ni, Ray" To: "Tan, Dun" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul R" , Gerd Hoffmann Subject: Re: [Patch V6 04/22] UefiCpuPkg/CpuPageTableLib: Fix the non-1:1 mapping issue Thread-Topic: [Patch V6 04/22] UefiCpuPkg/CpuPageTableLib: Fix the non-1:1 mapping issue Thread-Index: AQHZXi3zAX1ULyLkWECaC7/BMqtona8J9nZw Date: Fri, 24 Mar 2023 14:03:40 +0000 Message-ID: References: <20230324085151.1237-1-dun.tan@intel.com> <20230324085151.1237-2-dun.tan@intel.com> In-Reply-To: <20230324085151.1237-2-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_|DS7PR11MB6016:EE_ x-ms-office365-filtering-correlation-id: be391ce5-27ac-47fd-3fed-08db2c709232 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UkmxmGCcuX4zMFJFHsTkx8xXnm/uQEnZ9Du5nPO9wNDX0bP2DMeTTJQnTbcOebnjDW0wnp7wPMx/OfBLgapIKJPUiUIXtmX48HcNlNAYfdBfi3vuY2OM/jSU+MTl1TG+szsXa3Kq9ZSWia5qSGXklb1R9hTEqUu/1rMT6WUt1bvIChqpunYC+w3CsdMNdw0CevNcyjfjGsK76fKc10mOWAPsO4i3XSKTDh6vflvaBHecGedumRpIp9HfG8lb0reXKAe3iRX36gwqmoYrEKzIc/xlVa2S9lDpedBwfpaplQMXX/pAbaKRX0p/TwlA1pJA4Fm4vUwgopSFN+rfjNrvSd6oUY89u1r9EMt7PEjFueThLp2TvC/JoumLkjwq3qsSAJ/Z2HiBB/6xL0egeei+h3LVBsmGCPia4up4z9xg8DgfyBRq5D7O+UnhQqoS77oWOi3aKNdonA+GZfay/f1fh9qawpdF37jWI/qbUrbOr687jiMa7wk3P5Ao4I09zVYLsVQLWAjQ+57nwnhOyDklg2RwSlDsX+Egp2KstBO5DcBIJXZAkdNbI1QWZZXBVsjJ46v3+fQFIOsZ96vaevx1MXK9IVQi1gRWAjEW1kztUZLtpIT3uMIckSK/vRhThjEDurVmNx2+JxlvaV1RZuhgzM6wX/mR+XdmxM+F58Ogn0A+XALZy9wAAYCWlRl/4gygBMR5eCNIcXIQXxhTQFP0DQ== 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)(39860400002)(136003)(366004)(376002)(396003)(346002)(451199018)(33656002)(38100700002)(8936002)(4326008)(8676002)(86362001)(76116006)(66446008)(66946007)(64756008)(52536014)(66556008)(41300700001)(66476007)(110136005)(71200400001)(316002)(54906003)(7696005)(478600001)(2906002)(5660300002)(82960400001)(26005)(38070700005)(55016003)(9686003)(122000001)(53546011)(6506007)(186003)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?TB8gO4pw9eFB2eFFw+AIqZbNMyEl/RDcQMnQZeXLCFjB0/XZ7JNMc+Kx0wmp?= =?us-ascii?Q?DVaxFNb+4LmFHuifpJeMSEchvxSwJIIcKd9lL+aK4Rk58fDQHkNb1lIpjPdn?= =?us-ascii?Q?4TdN2K6D0FOWWb7eObirl2uxhSerXgfumSc83ciBzTXZSdZWOcCFQZSrOUc1?= =?us-ascii?Q?cFHBOaQQ3EcwZxMHOAX5LGLkhgXQl+rcYdgpa6GH5EDI5OzM36gRHR7c8OSk?= =?us-ascii?Q?8zhlRFUqqX823+QcOw3E2w4Qqv1IzIVEPoQMsJqcexIrlRANN+Al+F9wy5uA?= =?us-ascii?Q?K7tHbaPCl5jenvOU9hH7db660oGFA1nyAKnfnpvIrv9USPcRL2pU5opyMysI?= =?us-ascii?Q?FJk4kiCAx+SQnh6AC5Or/Sg4KofTe1gb8K1GZl8B8LjNAOfAkE+vVCt6shoP?= =?us-ascii?Q?cW6tEDVgqf+E0m4zvtcq/smxDKMlfGebeeyXqkNa0oRuEnEAAPCM414XnYnA?= =?us-ascii?Q?Jlp9OKIZxAhSUrPp9npF8kM6NL083wZg+QJmDcswp3Eer9WpkrLaghoinRRO?= =?us-ascii?Q?7f9KiNDAc4xCSjNcdZXwQB+I+2cwxlMYUZgYEsIotd6cwbdhwWUYMPc5obA4?= =?us-ascii?Q?AItWljnrycguM2d2GnyybuS/vOK4c+xK8rr9y3tmdhEYI+Spt+HGuYd58yV/?= =?us-ascii?Q?gv+AZXQoYwRJjL5uxidQxBtir4mzFcWm2YAUeS2BLkOP9v7zhTT4ADTR0b29?= =?us-ascii?Q?zXPH7zYkqjFD+b3r1n1vbUNL8ypweKDarN6o0bgR0S/xOZtome9x1vRz5ABt?= =?us-ascii?Q?HiWxfpy8wB4azthWW+utK//jyOVY99IOXc2dplbtuElQICuZFipDUlKP0XNR?= =?us-ascii?Q?LS4q2G9YSZpqV5LeYvh+XChA+gQ1Ns1WgVcb7HWYna1EO7ezk3sjm8JrE+Xn?= =?us-ascii?Q?NRG78j+nadYL10VQaDhE5zRAhioiygKdZzcHWc+Hvf+RBNNB09aTvU93yO9C?= =?us-ascii?Q?+6iWAg0kjc4qbvbz0SmEHes6wnEY+maAc8iUXFaC8EW7FfyyfJgEhhFlCWOA?= =?us-ascii?Q?2ylzrEUHH3N8cuJZz6X1FLrbOFz7sOftW6lI96B722aCmqg1JV4B3kmJj6FO?= =?us-ascii?Q?sMT6PkNM0CigdXdzTmJwdoK/s80Ndk1DHAW+PA3CPesy/JKFPV5hRgMNbFuH?= =?us-ascii?Q?O5nL48CX6iv1nNPzsGJiNktsAtXrIp3ctcJcT42/3w9Os/H9qCn82Dx8pq8u?= =?us-ascii?Q?dUtKiTPAl0oniRDrEVQJ/b6ojfxSL6b9i+tVHK0uM7xLzlddpiiloUbY0Evk?= =?us-ascii?Q?R53T5UhRjr2ETXaXRAiBsra54RC2HBXR0dhsbPHLyeY7NatrK9SavMEwvAO2?= =?us-ascii?Q?ec5n/QL+zLVQeEz/ar8DlxfrlIY1PFHEow33eejVqk1Xv4KlKWQrIFqrVzFH?= =?us-ascii?Q?jmTKNtoCjkYOdFWKnGqyYf2b3bMpsrCfO8oQWBXGGCsUXwHCUpU/tooMlN0V?= =?us-ascii?Q?m2l8NlfijTCGiDv8JwKB2dQgB9nR5916dt/raxsul3i57FZZp2YxBYlNedmF?= =?us-ascii?Q?tlN8v9wioA/R2chXMjyFKhkHrdyrGy/ZdwDVeRKA+Ixyt1pYKJ/ToYdJ1rDJ?= =?us-ascii?Q?dfw2oZfpcp6HgL8uSx8=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: be391ce5-27ac-47fd-3fed-08db2c709232 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2023 14:03:40.3158 (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: E65ZpVC53y7LAGdQec1hVkoZ7QzdD6LhJoyujqYSo467HL8uZ87qVvu92tS2XsD9pFWs5agX+ROalNofy19ZTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR11MB6016 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 4:52 PM > To: devel@edk2.groups.io > Cc: Dong, Eric ; Ni, Ray ; Kumar, > Rahul R ; Gerd Hoffmann > Subject: [Patch V6 04/22] UefiCpuPkg/CpuPageTableLib: Fix the non-1:1 > mapping issue >=20 > In previous code logic, when splitting a leaf parent entry to > smaller granularity child page table, if the parent entry > Attribute&Mask(without PageTableBaseAddress field) is equal to the > input attribute&mask(without PageTableBaseAddress field), the split > process won't happen. This may lead to failure in non-1:1 mapping. >=20 > For example, there is a page table in which [0, 1G] is mapped(Lv4[0] > ,Lv3[0,0], a non-leaf level4 entry and a leaf level3 entry). And we > want to remap [0, 2M] linear address range to [1G, 1G + 2M] with the > same attibute. The expected behaviour should be: split Lv3[0,0] > entry into 512 level2 entries and remap the first level2 entry to > cover [0, 2M]. But the split won't happen in previous code since > PageTableBaseAddress of input Attribute is not checked. >=20 > So, when checking if a leaf parent entry needs to be splitted, we > should also check if PageTableBaseAddress calculated by parent entry > is equal to the value caculated by input attribute. >=20 > Signed-off-by: Dun Tan > Cc: Eric Dong > Cc: Ray Ni > Cc: Rahul Kumar > Tested-by: Gerd Hoffmann > Acked-by: Gerd Hoffmann > --- > UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c | 12 > +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) >=20 > diff --git a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c > b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c > index 127b65183f..b94ef07c56 100644 > --- a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c > +++ b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c > @@ -274,6 +274,8 @@ PageTableLibMapInLevel ( > IA32_MAP_ATTRIBUTE ChildMask; > IA32_MAP_ATTRIBUTE CurrentMask; > IA32_MAP_ATTRIBUTE LocalParentAttribute; > + UINT64 PhysicalAddrInEntry; > + UINT64 PhysicalAddrInAttr; >=20 > ASSERT (Level !=3D 0); > ASSERT ((Attribute !=3D NULL) && (Mask !=3D NULL)); > @@ -341,7 +343,15 @@ PageTableLibMapInLevel ( > // This function is called when the memory length is less than the= region > length of the parent level. > // No need to split the page when the attributes equal. > // > - return RETURN_SUCCESS; > + if (Mask->Bits.PageTableBaseAddress =3D=3D 0) { > + return RETURN_SUCCESS; > + } > + > + PhysicalAddrInEntry =3D > IA32_MAP_ATTRIBUTE_PAGE_TABLE_BASE_ADDRESS (&PleBAttribute) + > MultU64x32 (RegionLength, (UINT32)PagingEntryIndex); > + PhysicalAddrInAttr =3D > (IA32_MAP_ATTRIBUTE_PAGE_TABLE_BASE_ADDRESS (Attribute) + Offset) > & (~RegionMask); > + if (PhysicalAddrInEntry =3D=3D PhysicalAddrInAttr) { > + return RETURN_SUCCESS; > + } > } >=20 > ASSERT (Buffer =3D=3D NULL || *BufferSize >=3D SIZE_4KB); > -- > 2.31.1.windows.1