From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web12.4435.1650331735915236470 for ; Mon, 18 Apr 2022 18:28:56 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=XAXsmuSC; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650331736; x=1681867736; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=/UidAncmC9Weu7Bl2/uuAjb9TM3wMvO8qsWF1MJqeEA=; b=XAXsmuSCpubfEoao3lBv6fuksCSI7Fqi60DiGsJLC8CF5I1ve82SdSqT SYAEal+H3GLA5qVEabXJIwUn92CWf6Es5DxuHCOLNXndBSrRrskleXOmU FHLdCjIRrZpJRK4vgWeWc/xtPf4MySD2kskliAToPfD3Gz3pkdv1LN00K sLdIWOJMCm2Tg9UEqxS4uDXNCUZkboHyX4exKShaR73qSInzAM6I67o3j SHSP7erE4jRi8wcHizI/DLenfQebEJPBIFHSes53zjoWoV+uu6e2fqILL 70Aq0Au395VVH+ET6S7Ez6vCbsm+GZigBY3m8rAePvA5n0gFqSGPUJYIw Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10321"; a="261251289" X-IronPort-AV: E=Sophos;i="5.90,271,1643702400"; d="scan'208";a="261251289" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2022 18:28:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,271,1643702400"; d="scan'208";a="509948641" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga003.jf.intel.com with ESMTP; 18 Apr 2022 18:28:54 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 18 Apr 2022 18:28:53 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) 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.2308.27; Mon, 18 Apr 2022 18:28:53 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Mon, 18 Apr 2022 18:28:53 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.45) 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.2308.27; Mon, 18 Apr 2022 18:28:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EWG7NoFv+7RgXQpL0Mt52rVtWpS6lC8blGVqQemxbE35lusMYwsTi4xkABC86QmOlqBpOsZRBwr8QhpFHBIDGkd0YA28JT75CPxzuNDmtsie93eZfTzzTe+S+SK0io1yfkEEhFp1andG2E3dbN3jMonQx2SL2rzBjNMXwTva7SvNtxGAYOTkhkIdLJPU20zincjP6ex5tOOc1biU3apooOTUtweZnW1tyH80++YAe3mdD+eWEMMmxMVtePkeric7sOqnJos4yfk+a0vXzGe7KPYbRdj+lSoffKF3vM/oRSPxAV4YEEek90EMWWmrIIdnffQQoTYJLDFyj4c/Jer7Nw== 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=rKJHK07JddY4UObmSQ6ljMpNE3BI/i0LaTz4oj44ZWU=; b=ZZX1AyUkFYMF/nt5nm68uA+FFAOH0cW3PlNDvbxzr3bJc+DXFmshqiW4hXdsD/ybt9CoC8I1XERajsi9y0Pl23c9fNXCiylb7biSvpox9iaO9KjLMXYXcaysoVTTjxG2guUZ9DA3bZBiyhPNaguMQUtTrAhdJs7Fm9LKp4+xO9iY16Xeq/Tp+yI/CDetKrm6wKH1YY6Zpw9DXrzWzdEYpxB6RUm6sxsHJel3TFxMKLYdhKyFW4TMbFe6Rl0k6//7+TmsTKQ+dQ4/GIs92bbkJY4gP8EF97NxOSv2rolUXoa5y1zKjGHzD9XReQg5tC/f3e8BHM3bfQOgQkFpjc7FOg== 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 MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by SN6PR11MB3454.namprd11.prod.outlook.com (2603:10b6:805:c1::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Tue, 19 Apr 2022 01:28:44 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::198e:ea23:c83b:b93a]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::198e:ea23:c83b:b93a%4]) with mapi id 15.20.5164.025; Tue, 19 Apr 2022 01:28:44 +0000 From: "Yao, Jiewen" To: "Xu, Min M" , "devel@edk2.groups.io" CC: "Kinney, Michael D" , "Gao, Liming" , "Liu, Zhiguang" , "James Bottomley" , Gerd Hoffmann , "Brijesh Singh" , "Aktas, Erdem" , "Tom Lendacky" Subject: Re: [PATCH V4 0/7] Introduce CcProbe in MdePkg Thread-Topic: [PATCH V4 0/7] Introduce CcProbe in MdePkg Thread-Index: AQHYU4QpwfFucPeuXkqlXVnCtREJeaz2cobw Date: Tue, 19 Apr 2022 01:28:43 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.401.20 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4d2e04e6-3a93-4822-f7b1-08da21a3f19c x-ms-traffictypediagnostic: SN6PR11MB3454:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oPSYpoA1PxrZpdl7HalIRPJi3ZSwW1j1fp4KFLh66KYkISPgh7MtG9qHZKoX+wYGHro9gxT3W69AtXwBva6uHgrpLyBz+2MHYQBvfcoxVci5dy9VYBORBdSHjgLvYHZvvdcwInmqmRc8k1cgCSnK6aadlgSAy09SYZ/MedhAm1PN+2ATS9kn/WBZzDwd3vdGA8ziLjwHnuUBiBK+xH0qSw4qNU0iLK5p91ivUC80ulVBkTPvH0qI16uw97ZInC0rtcU8RqQ7yunkw6xfbkC3P2k6euWar2sPr5DiNyrOAWpiygWuchLyGlkd3qM9brJfH+bzwTGtGMql22rMvsFZYGoRKCZCk084IWc8JxHQettlnkHiQ17V8J6XIoo5hkSmyyD6GuEU5FZRe5T9J4YoByUiJSOR0ePcyJhpTAs8dJzscCooKvcpfNDMYBqL0RNiklYBmTDxt47GgIIE/tCIRSsr8xKtFV89IpIT+l/62Ajx874e7qLwwzTmuUY39JqHR46glgPYI+F48cIHjAtR+dWh9zcUL+Px5QNF7as7zabePIgDD0YADAE7RZOHEXzsA6A2DPn7U0N/Ajb8jUMNAhtSnR/DcpmHIR4Z6nxaKeUroThUnszCi3/hasIj3gYIz96F1Jy0WnpsMFmmgIhdhVPPHoFtfT64QjV4PF/MR8tKLm7LNwg0kR5Z6UUVvracAEhKEkBK54vWeIOj6qOsbn5Rp7rZn3zkUvDE/e6KktyFD5c4cUMlF6VMQhPp5hbWs/6DfVxKwLmRNooVYBRsfKm5jWWUj/EDlTRKim4fX+6Jdne3EfyEnOdLSPvlsZLLZp5lD8EgMzcy0eiVn0cSYg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(6029001)(366004)(9686003)(83380400001)(71200400001)(33656002)(26005)(53546011)(6506007)(186003)(7696005)(86362001)(508600001)(5660300002)(52536014)(8936002)(2906002)(966005)(316002)(122000001)(82960400001)(38100700002)(38070700005)(19627235002)(110136005)(54906003)(55016003)(76116006)(66946007)(66556008)(66476007)(66446008)(4326008)(64756008)(8676002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?0T/kbbnE0xwKYZ8qCCOZIZCFNddAkmAhjKARR3KyoA7/xvi9VYls2r0WoEHh?= =?us-ascii?Q?83rBwiHsFxdSo9bq+PWu/dJm3cZj7nvPKTqghMhk+9U/fsMoJi3CKW4buBiK?= =?us-ascii?Q?QkMsijxSC9INpHeKweIridRva2OzCLmH0Uqnnibe4tduNOo8bC6eEg+9fw2m?= =?us-ascii?Q?gNSbBzKa8/w1zZL+OBRwkXxinhke5cyAzQAk2kv/vl/KKlwhkKDaloWxukeo?= =?us-ascii?Q?RnjTtUaRh2iPdDqWkNhbvU2ukzeoUDnnbqR9RNWjilcnyAVawDgbP0O+B5aY?= =?us-ascii?Q?zUmDEem9EimNI166sxp1rJzKnX5IGQwHweli9K2nOweJ7Z/OY2wmNpWjFtf1?= =?us-ascii?Q?IGSNmx5m185/EfhngEJHkRGS65lIHTDWz9I0lmwz7xRW80WFnsM1KXu2GEm0?= =?us-ascii?Q?ni2nuNke6mV9rllZn0eQHASQ/qmrbRXBuuOYx1SzG2E5UqypnYpuav3KIvLU?= =?us-ascii?Q?OlzP4kaAcYR7O/Wonv1fyd0VOQyoAuqgIaVaTI4KnsxKv6oeKV5EZBpLkTz0?= =?us-ascii?Q?IeNpT9Ro2lVt0ocdj7XowPQDUDhL8oAX+fFnoAjAZJFgaLS9rMT6iowdBRXP?= =?us-ascii?Q?2lkXPrFkF+6Id/D/YLXeiXCn2LT5NGIinK99dAZzhEB54xQVNlKQaxvGEMZu?= =?us-ascii?Q?XMnqCYaTuwib/OManpDUr4kL4iGQ4n99xhLBei/RTNE6ot/W0G/zj4Pp8OE3?= =?us-ascii?Q?eccwdhLaV62d1LifqqPEzfgV17bVSmnQ5o+QQIjve9Z5BzqnRz1Fq58YWNUc?= =?us-ascii?Q?QYBv+To7WqAtzmsBAsnkg/WyUlSA2nvcDf0surpHRg0KcAo+RDQ7PynyT0DN?= =?us-ascii?Q?0kI8eF+tzD9pGcy6pT7+cjBdcoiapzmVn1w0qUs2PN4cbPixttg5RIkul4xb?= =?us-ascii?Q?Ubklq6RAkK4bFqH890wEoUiAgoZX95xZ8hsrtd8PItzWwVj1diKehSqgiiXY?= =?us-ascii?Q?i2AEfXRCL2jorgm7Mll1e35lXVGKzUmNsVo6Swa2kpwIf9IiVI0WLY1Zr65u?= =?us-ascii?Q?oDzf2HksIvm0Ekch2oiXYmqWDDJzFz4iGnZCpCu3crxd07iYRmmh5kxeGWrw?= =?us-ascii?Q?eKQv1n9/u9xpVCcS3aYNQO+7NmWK8+y1wssLX43CIUhZEh39UWhDa4B42NRt?= =?us-ascii?Q?P1tMdOxzv3ThcRnJ/YZc3CruNg9zjKKvnuG+u3WeISmTNyib8yQGcyMbKY9S?= =?us-ascii?Q?eku4qzUEYyYCeSphWgZ3wimdY4i4tvenr1kpm88r4aZXDLfjLmx0J/M205F6?= =?us-ascii?Q?Hf3tZYeGBzlcLulvqT69lBNG4EX5lPaJNMyWHYJrfeoX+go3qVFz9043Ua6F?= =?us-ascii?Q?6AMsFLhetJeEOxvR4B+2zXToG+MeoJOZ2ogviuKhGcXaBQUIVwAO/MNKz5p9?= =?us-ascii?Q?G7zJ6H3+YXLAAnFSysKkvTYxaQIalQM1h71Hy8gml9mlLsYqPok1mZxbVKEX?= =?us-ascii?Q?Ay8bQehsBiooLLkuzlVhqz6QkLsOWAl37IShYcPyzlgVFbJgOh4U9TzD+lty?= =?us-ascii?Q?AWwxispr1skTzeoJLI5ZlUUvkx2lazoG/berOWZaJRGnpWAM+ctb69ka57Ni?= =?us-ascii?Q?a8l/KfPaC174GpJ7o4MPfPAkKdEw+bQeyvtAyKOwkJ45I2hb81qRZGw+SAyt?= =?us-ascii?Q?Oa69rc8Rg8kzPh6TPmqLFLMTimgG28ydn2/qcl054TW3B2A2hbZMXZu9XtVD?= =?us-ascii?Q?OfwA6qwr++LXLuHXtXSn1H6v7zhJXPuRzTE3Tg4GvdU4mmDrSLte0970aA7S?= =?us-ascii?Q?11OMF5wEiw=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d2e04e6-3a93-4822-f7b1-08da21a3f19c X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Apr 2022 01:28:43.8016 (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: 907DE5Vv/4KslFn1M+Fl0pHqiYIeumvxpmg/9FV60WfVsUs87Idz9AEx9dtxKhC9WIPxy/P3/7NH1HEdl+FJfA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3454 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thanks Min. Merged - https://github.com/tianocore/edk2/pull/2790 > -----Original Message----- > From: Xu, Min M > Sent: Tuesday, April 19, 2022 8:26 AM > To: devel@edk2.groups.io > Cc: Xu, Min M ; Kinney, Michael D > ; Gao, Liming ; Liu= , > Zhiguang ; James Bottomley ; > Yao, Jiewen ; Gerd Hoffmann ; > Brijesh Singh ; Aktas, Erdem > ; Tom Lendacky > Subject: [PATCH V4 0/7] Introduce CcProbe in MdePkg >=20 > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3902 >=20 > Bad IO performance in SEC phase is observed after TDX features was > introduced. (after commit b6b2de884864 - "MdePkg: Support mmio for > Tdx guest in BaseIoLibIntrinsic"). >=20 > This is because IsTdxGuest() will be called in each MMIO operation. > It is trying to cache the result of the probe in the efi data segment. > However, that doesn't work in SEC, because the data segment is read only > (so the write seems to succeed but a read will always return the > original value), leading to us calling TdIsEnabled() check for every > mmio we do, which is causing the slowdown because it's very expensive. >=20 > CcProbe is introduced in this patch-set. It is called in > BaseIoLibIntrinsicSev instead of IsTdxGuest. There are 2 versions of > the CcProbeLib. Null instance of CcProbe always returns > CCGuestTypeNonEncrypted. Its OvmfPkg version checks the Ovmf work area > and returns the CC guest type. >=20 > In this patch-set another issue is fixed with CcProbe as well. If the > working guest is SEV and in the beginning of SecMain.c TdIsEnabled() > was called. At this point, exception handling is not established and > a CPUID instruction will generate a #VC and cause the booting SEV guest > to crash. Patch #7 is to fix this broken. >=20 > Code is at: https://github.com/mxu9/edk2/tree/cc_probe.v4 >=20 > v4 changes: > - Rename the field name in CC_GUEST_TYPE from CCXxx to CcXxx based > on the community feedback. >=20 > v3 changes: > - Fix the broken issue in SEV guest at SecMain.c. Please refer to > Patch #7. >=20 > v2 changes: > - Rename TdProbe to CcProbe to make the lib work for Confidential > Computing guests. > - Rename the GUEST_TYPE to CC_GUEST_TYPE and move it from > WorkArea.h@OvmfPkg to ConfidentialComputingGuestAttr.h@MdePkg. > This is because CcProbeLib is designed to return the CC Guest > type and the lib is located at MdePkg. > - Rename the CC_GUEST_TYPE's fields name to Camel style. See the > commit message in patch #1. >=20 > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Zhiguang Liu > Cc: James Bottomley > Cc: Jiewen Yao > Cc: Gerd Hoffmann > Cc: Brijesh Singh > Cc: Erdem Aktas > Cc: Tom Lendacky > Signed-off-by: Min Xu >=20 > Min Xu (7): > MdePkg: Add CC_GUEST_TYPE in ConfidentialComputingGuestAttr.h > OvmfPkg: Replace GUEST_TYPE with CC_GUEST_TYPE > MdePkg: Add CcProbeLibNull > OvmfPkg: Add CcProbeLib > OvmfPkg: Add CcProbeLib in *.dsc > MdePkg: Probe Cc guest in BaseIoLibIntrinsicSev > OvmfPkg: Call CcProbe in SecMain.c instead of TsIsEnabled >=20 > .../Include/ConfidentialComputingGuestAttr.h | 11 ++++++- > MdePkg/Include/Library/CcProbeLib.h | 26 ++++++++++++++++ > .../BaseIoLibIntrinsicSev.inf | 1 + > .../BaseIoLibIntrinsic/IoLibInternalTdx.c | 13 ++------ > .../Library/CcProbeLibNull/CcProbeLibNull.c | 26 ++++++++++++++++ > .../Library/CcProbeLibNull/CcProbeLibNull.inf | 21 +++++++++++++ > MdePkg/MdePkg.dec | 5 +++ > MdePkg/MdePkg.dsc | 1 + > OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + > OvmfPkg/Bhyve/BhyveX64.dsc | 1 + > OvmfPkg/CloudHv/CloudHvX64.dsc | 1 + > OvmfPkg/Include/WorkArea.h | 9 +----- > OvmfPkg/IntelTdx/IntelTdxX64.dsc | 1 + > OvmfPkg/IntelTdx/Sec/SecMain.c | 6 ++-- > OvmfPkg/IntelTdx/Sec/SecMain.inf | 1 + > .../PeiMemEncryptSevLibInternal.c | 2 +- > .../SecMemEncryptSevLibInternal.c | 2 +- > OvmfPkg/Library/CcProbeLib/CcProbeLib.c | 31 +++++++++++++++++++ > OvmfPkg/Library/CcProbeLib/CcProbeLib.inf | 25 +++++++++++++++ > OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgPei.c | 2 +- > OvmfPkg/Microvm/MicrovmX64.dsc | 1 + > OvmfPkg/OvmfPkgIa32.dsc | 1 + > OvmfPkg/OvmfPkgIa32X64.dsc | 1 + > OvmfPkg/OvmfPkgX64.dsc | 1 + > OvmfPkg/OvmfXen.dsc | 1 + > OvmfPkg/Sec/AmdSev.c | 2 +- > OvmfPkg/Sec/SecMain.c | 5 +-- > OvmfPkg/Sec/SecMain.inf | 1 + > 28 files changed, 170 insertions(+), 29 deletions(-) > create mode 100644 MdePkg/Include/Library/CcProbeLib.h > create mode 100644 MdePkg/Library/CcProbeLibNull/CcProbeLibNull.c > create mode 100644 MdePkg/Library/CcProbeLibNull/CcProbeLibNull.inf > create mode 100644 OvmfPkg/Library/CcProbeLib/CcProbeLib.c > create mode 100644 OvmfPkg/Library/CcProbeLib/CcProbeLib.inf >=20 > -- > 2.29.2.windows.2