From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id A7CA2740038 for ; Mon, 22 Jan 2024 03:05:34 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=ukTOVeBhPwCvoVRqMMZMi7jo5ic/39svNQ+GBJw9QNw=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1705892733; v=1; b=bk3ZKHsxyhpKL6hld6SpHFLx0A4MnIIiDjX54tMqbEL409/Ssu27cQUzvvIOD8heISkIqypO N/Ah/xwAo2GFSMwJ0D0q1sX0SWdd/YWAblQBEs/cMfK4Hn2iqTa7xQf6Nd+yCe0bnIcv8VKVSG+ QuNIfLW1PRKzISzUY+APvYhE= X-Received: by 127.0.0.2 with SMTP id zNyUYY7687511x43FjtR4itn; Sun, 21 Jan 2024 19:05:33 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by mx.groups.io with SMTP id smtpd.web11.64726.1705892732476034978 for ; Sun, 21 Jan 2024 19:05:32 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10960"; a="8193318" X-IronPort-AV: E=Sophos;i="6.05,211,1701158400"; d="scan'208";a="8193318" X-Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2024 19:05:32 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10960"; a="778460177" X-IronPort-AV: E=Sophos;i="6.05,211,1701158400"; d="scan'208";a="778460177" X-Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga007.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 21 Jan 2024 19:05:31 -0800 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Sun, 21 Jan 2024 19:05:31 -0800 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) 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.35; Sun, 21 Jan 2024 19:05:30 -0800 X-Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.35 via Frontend Transport; Sun, 21 Jan 2024 19:05:30 -0800 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Sun, 21 Jan 2024 19:05:30 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AQef6IJGttZKfpEo4/lLY697SfBbvDeHmTKN4LHLmLO+4PrpzVjDJXmwp0KFTUqPFH7qDfgwVugpfFN+EVkbbaWOxg6QOclgoAkd7fFZm758cUkYPFus0hz/jDLzu4H18adw8aSNXZhNdgEYwMFeCDF8Bvh2UBTLynUghNhM74vJAKSSeM3c01iRWKnPilmkHlrSpUkvWjQnjQYNIRPv+gZfBKZrQoQ9LzDISn9piNFf4jQ9rQruJLWzQzO+bvSwSwUAk/EtMtSJ731+/jyFAftdbDwjRcPXz6SlMgLg9t+NdKve5kH/V9zo9TsCMq8ZDqM2L/pn5aJKgcggT3Bc2w== 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=9eF5WJSz3ski15a6SAW53872JpEoZbpJgBGdNBlUnyk=; b=PrIJbSf6I7qGBKG6gQQoqnmXo8SL11WNvQqUwNDMduhkcN0AB6IbA0zA16mKXIXjMF3N6zAnSqpwkgJRoisqZdvjVkfxQDGUP2onRowNExWSoEIO2u6tsmsEV2/b4tFda+etlRYUk5IG18gInxlH48vwnALhbdU3wuTu5AuN0wzZNzoamPr0aymuRQ+M/XAj4584prBz11zNGRwQ6c4nImfMp5jCX8BhuoN4QWnP+Vkajk7LIxy+S27UX2DMej+f+9AdlGQdg/c5EVCc//5G+fJcvwLWg3Sj242X5gUOQB6/F/MCELtsVpGbM0SwtZX5RUcx4iJmj2sVqYMNp7NIcA== 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 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by DS7PR11MB7836.namprd11.prod.outlook.com (2603:10b6:8:e3::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.31; Mon, 22 Jan 2024 03:05:28 +0000 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::fdd3:11d7:1c15:6c2d]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::fdd3:11d7:1c15:6c2d%6]) with mapi id 15.20.7202.031; Mon, 22 Jan 2024 03:05:28 +0000 From: "Ni, Ray" To: Nhi Pham , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "ardb+tianocore@kernel.org" , "sami.mujawar@arm.com" , "lersek@redhat.com" Subject: Re: [edk2-devel] [PATCH 1/1] StandaloneMmPkg/Core: Remove optimization for depex evaluation Thread-Topic: [PATCH 1/1] StandaloneMmPkg/Core: Remove optimization for depex evaluation Thread-Index: AQHaSpQ0LQAABKrl7kKI/+0a9psaFbDlJ4Pg Date: Mon, 22 Jan 2024 03:05:27 +0000 Message-ID: References: <20240119045646.3896430-1-nhi@os.amperecomputing.com> In-Reply-To: <20240119045646.3896430-1-nhi@os.amperecomputing.com> Accept-Language: en-US X-Mentions: michael.d.kinney@intel.com X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|DS7PR11MB7836:EE_ x-ms-office365-filtering-correlation-id: d78b806c-8d66-4327-b238-08dc1af6fc81 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: fE/Hu6q7EK33vE5hYziKUbBUEFpEqs6Q/zb9qPCSdv2n7OhNGe6rkQdsPS3GFMp43M7jLCTVbsw5FSKiyHz3OnUpL7G6HXrWxhW/F7vkLxVI/Mh9LPAjJX+tzimZ0XJLt02OGwKgXmSWK83DDXXUT9KbKGfc93ODCaXjibkmOO+H9tyPaSSoIdih6baLkhmHN3vhHGZfHHhwZvSizmPjuNWJ2VNF6S4icSRNshqtez4UiFgUjck+HPBaRqYMXk7KTiBEDxsEmd0/YW6cN06TNeIrBN7/9+LVdeZdyhhI7TBg6DyNaxQKkSD16+GDnc3Llvd/yI8aOZKKdkvxFkh7HD869WK5x0iEojYRC0MPF/9MHkSfJ8JvCKzXJ3JjBMw/ih8xLvP73KaK/SNBnuSRlhOZQ1gy6D2Aeff5p78J3qGpnTvRmNJNhA+Xgqk6LroDpb1x1Qz7Cb5wASLJ6oUu9pzBPN5+f1HnU3wlVPDZuqK37dfjlL1HfcWVoUjHDv5NpKKD25qVZzxmqhfebP0sSgo1vh1YpNr64bzU8jhpA3ELkMsj9Hyy75Hgfvqdx47euahgGwpfgZbe03b/4A2DCjIa/aQUDaQxxzz8SvUyJGE= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?xZapynz2YdeoVx36g69fbKgWrwFBzNC1efucGH/soxd/cP1hr2zPU9yZPYVo?= =?us-ascii?Q?59043gOsPL/bkXfeRKkmFNb7fgTh2F/qyuWN5JodmFzPvapfbRR6qrIQBvkx?= =?us-ascii?Q?Ev+NBkfgYcpfyKIlX3daqwyeIgk0PQwwF5F0fvsImegskrYyOwlUIF5UJErJ?= =?us-ascii?Q?Zb7DNRWbNQxmPC4Ej/kFQb/RlFbwHJ62+ZjhJKmZtcS1r5ieM1m+uvhTgj49?= =?us-ascii?Q?sLIS5Tg+1cHI0zhlMsqSWbrcb3e4aXBrdKFIvBUz0N4aY2Pj/QLkCP/DQGb5?= =?us-ascii?Q?AabfZ2wDs9XPpbPOP8/jjvomz+CsE2ZWfVawdyMIacQ1tRoXYH6favvaPiUy?= =?us-ascii?Q?wff3VJiK1y7iRtiZgcio5ymPRFMu0r3FKW3I4Kzb3FeYvZWz3bgV9fTHPk5s?= =?us-ascii?Q?A+C/Y4eDu0GfAAel+iL0HO6RvxFwNQjtjwJNo7nXwlhbuilleT5yyPG5488T?= =?us-ascii?Q?8Uf0HaLzZufx4XkpH4uTHdJ0N4RtLT33+IKajjy6y3wdhJCFj4n7FGVNQSph?= =?us-ascii?Q?VwmTlFfvqoyDFfTrlwi61JyZG8LmGaRjljW790bEqUvz8nPjagRqgMlJ8TfI?= =?us-ascii?Q?F/JhGgjMXJn6twBa54MPvEMaX//l+djQrxpugKtdeq8J0HeFG5jpneAFARfJ?= =?us-ascii?Q?A6MCXBgabdvpzktq1JbhgTMKQIjikt4LfZIpp69NfhRfls/Ekhez/p0Ls4I/?= =?us-ascii?Q?J7kO07UluhcEYivMarCTEL8ceql3QxTZAIjOTLy5y/F30XpQCnDbbvLRMAcP?= =?us-ascii?Q?WkW0Ts1fSBrA1GnZubX+ie0oZ2SdkVXY1NJWbSt8KmdYmTrE1fOi/Mxpbwgv?= =?us-ascii?Q?FzF68fzoD5deey64hLn23tfSXbly0G3AlM85pAdJ4qBgDcqhrLzXlOrzFkcu?= =?us-ascii?Q?8R2NTE2Tyz6K3H+Qoo/UVeW6wV74x8bojNndqSrJQPHYCrFKR83QdV5VjC5+?= =?us-ascii?Q?sQSEuMvRnKDudAjxOnXBYuH8Ch2vy61mj1/U05Eu+wO8KPqPhKO8fz4ubt7M?= =?us-ascii?Q?YUt7tM7/YEB8Aer0MTypegAuH9nlrzUSb/xWzkwbn7YeTiq1HvQBB7AK2RLJ?= =?us-ascii?Q?32kYpSStS4L3w18Oig1ccSDXA4qTyy1lpRx2IOA+j8pbljOJ/4WPeRBlk7Ug?= =?us-ascii?Q?bg0zFJUNPf/g/BsEw0+eIPVCNdpHrL+7gXLRNE/4meZhGzWF6s/hE6gsA3ge?= =?us-ascii?Q?R/fm9rHSznOT9b3KodF9pQJBDZFFTg6wVXPjZOr7e1x/AZx92Wr3INMywBF/?= =?us-ascii?Q?mUNMnWAefmaYBcXeY2PAn0qSbSQh4b7POUdFiYxr/6/+peKdeqwc9+wzxHFj?= =?us-ascii?Q?FA+vDqxy1PYUam3GIa+daJ+XCmyb7u4a3OaUcvlLSBwaA8DJ4mW/epayZtSl?= =?us-ascii?Q?MqRqHO5Y63iULJ87LcXy4VcyKtIoYbfC/xhvTixbLg+aNypvmRhdJXXVFZFy?= =?us-ascii?Q?YdCXbIyKKkrxUBVS4IFDgUy9dJE9JTrpqMH751wo1kNdppsg31kepHdxQgTq?= =?us-ascii?Q?2KV/OAyAmWDEwnz0a2juzTMg+W+/tM5czSMJ/C6WtUL6IKeLJrjge6oX8gir?= =?us-ascii?Q?3xRAu7UCc/SXkh+4Zes=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: d78b806c-8d66-4327-b238-08dc1af6fc81 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2024 03:05:28.0057 (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: pzEMw/WUvJfT6dd/gGhWFFKRyW1dDpDBIaQA0AOTlbmZJ0TkiVQy3EdV+omcxVU6+EjamB22I2R5tNy4vz/DFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR11MB7836 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,ray.ni@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: TD8jeDeuXrlzus7E1Y2EyaSyx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=bk3ZKHsx; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") Reviewed-by: Ray Ni PI spec does not define the REPLACE_TRUE op-code. Existing dispatchers (DXE, SMM and Standalone MM) use REPLACE_TRUE to optim= ize the protocol evaluation. PEI dispatcher does not use this optimization = as the Depex binary might be in flash. Now this patch only modifies standalone MM version to not use the optimizat= ion. I think it's a right way. Because the optimization cannot handle a case: 1. driver A installs protocol #a. 2. driver B depends on protocol #a. 3. driver A uninstalls the protocol #a in a callback (protocol callback, ti= mer callback, or a service provided by A that driver B invokes) 4. driver B gets dispatched after the callback. <--- problem here. The prot= ocol #a does not exist!! @Kinney, Michael D, do you have history data of which optimization result i= t achieved? Do you think that the optimization can be in CoreLocateProtocol= () instead of in the callers? Thanks, Ray > -----Original Message----- > From: Nhi Pham > Sent: Friday, January 19, 2024 12:57 PM > To: devel@edk2.groups.io > Cc: ardb+tianocore@kernel.org; Ni, Ray ; > sami.mujawar@arm.com; lersek@redhat.com; Nhi Pham > > Subject: [PATCH 1/1] StandaloneMmPkg/Core: Remove optimization for > depex evaluation >=20 > From: Laszlo Ersek >=20 > The current dependency evaluator violates the memory access permission > when patching depex grammar directly in the read-only depex memory area. >=20 > Laszlo pointed out the optimization issue in the thread (1) "Memory > Attribute for depex section" and provided suggested patch to remove the > perf optimization. >=20 > In my testing, removing the optimization does not make significant perf > reduction. That makes sense that StandaloneMM dispatcher only searches > in MM protocol database and does not depend on UEFI/DXE protocol > database. Also, we don't have many protocols in StandaloneMM like > UEFI/DXE. >=20 > From Laszlo, >=20 > "The patch removes the EFI_DEP_REPLACE_TRUE handling altogether, plus it > CONST-ifies the Iterator pointer (which points into the DEPEX section), > so that the compiler catch any possible accesses at *build time* that > would write to the write-protected DEPEX memory area." >=20 > (1) https://edk2.groups.io/g/devel/message/113531 >=20 > Signed-off-by: Nhi Pham > --- > StandaloneMmPkg/Core/Dependency.c | 37 ++++---------------- > 1 file changed, 7 insertions(+), 30 deletions(-) >=20 > diff --git a/StandaloneMmPkg/Core/Dependency.c > b/StandaloneMmPkg/Core/Dependency.c > index 440fe3e45238..2bcb07d34666 100644 > --- a/StandaloneMmPkg/Core/Dependency.c > +++ b/StandaloneMmPkg/Core/Dependency.c > @@ -13,16 +13,6 @@ >=20 >=20 > #include "StandaloneMmCore.h" >=20 >=20 >=20 > -/// >=20 > -/// EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependency > expression >=20 > -/// to save time. A EFI_DEP_PUSH is > evaluated one an >=20 > -/// replaced with EFI_DEP_REPLACE_TRUE. If > PI spec's Vol 2 >=20 > -/// Driver Execution Environment Core > Interface use 0xff >=20 > -/// as new DEPEX opcode. > EFI_DEP_REPLACE_TRUE should be >=20 > -/// defined to a new value that is not > conflicting with PI spec. >=20 > -/// >=20 > -#define EFI_DEP_REPLACE_TRUE 0xff >=20 > - >=20 > /// >=20 > /// Define the initial size of the dependency expression evaluation stac= k >=20 > /// >=20 > @@ -170,12 +160,12 @@ MmIsSchedulable ( > IN EFI_MM_DRIVER_ENTRY *DriverEntry >=20 > ) >=20 > { >=20 > - EFI_STATUS Status; >=20 > - UINT8 *Iterator; >=20 > - BOOLEAN Operator; >=20 > - BOOLEAN Operator2; >=20 > - EFI_GUID DriverGuid; >=20 > - VOID *Interface; >=20 > + EFI_STATUS Status; >=20 > + CONST UINT8 *Iterator; >=20 > + BOOLEAN Operator; >=20 > + BOOLEAN Operator2; >=20 > + EFI_GUID DriverGuid; >=20 > + VOID *Interface; >=20 >=20 >=20 > Operator =3D FALSE; >=20 > Operator2 =3D FALSE; >=20 > @@ -253,8 +243,7 @@ MmIsSchedulable ( > Status =3D PushBool (FALSE); >=20 > } else { >=20 > DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) =3D TRUE\n", > &DriverGuid)); >=20 > - *Iterator =3D EFI_DEP_REPLACE_TRUE; >=20 > - Status =3D PushBool (TRUE); >=20 > + Status =3D PushBool (TRUE); >=20 > } >=20 >=20 >=20 > if (EFI_ERROR (Status)) { >=20 > @@ -356,18 +345,6 @@ MmIsSchedulable ( > DEBUG ((DEBUG_DISPATCH, " RESULT =3D %a\n", Operator ? > "TRUE" : "FALSE")); >=20 > return Operator; >=20 >=20 >=20 > - case EFI_DEP_REPLACE_TRUE: >=20 > - CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID)); >=20 > - DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) =3D TRUE\n", > &DriverGuid)); >=20 > - Status =3D PushBool (TRUE); >=20 > - if (EFI_ERROR (Status)) { >=20 > - DEBUG ((DEBUG_DISPATCH, " RESULT =3D FALSE (Unexpected > error)\n")); >=20 > - return FALSE; >=20 > - } >=20 > - >=20 > - Iterator +=3D sizeof (EFI_GUID); >=20 > - break; >=20 > - >=20 > default: >=20 > DEBUG ((DEBUG_DISPATCH, " RESULT =3D FALSE (Unknown > opcode)\n")); >=20 > goto Done; >=20 > -- > 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114133): https://edk2.groups.io/g/devel/message/114133 Mute This Topic: https://groups.io/mt/103824815/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/19134562= 12/xyzzy [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-