From nobody Tue May 14 17:30:57 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+111188+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111188+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699927703; cv=none; d=zohomail.com; s=zohoarc; b=FeDoJKmLKn9eFEIvoesKZDqYWaCnLwS26pHnWSntV2leKVkt2ogGJ0p76zPAxMcy760qhUA1mnXqhJUjqzs75aeTEuJfAeROs5UwfhN78ikTgM6OZWWxO0eHZKnA5d8mUF3o1eZvpYvG0ipcyF6kZ0NgVKbVPOi9hoNsFlechKs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699927703; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:Sender:Subject:Subject:To:To:Message-Id; bh=tA5n0W9Y3jOmzhE6cM+bR4BEcQ0ttmh9A4y6NZtjLuQ=; b=evv21KwySUkzb39IWKzLlQadozxGf91KWrsoBzV+2tUj5ch1tfhHVGRYyJQoEV5bq5sVVGw8rMKvwPHdn45065zicNX5ZhQk/9Zg2Le8IQexzWEROd4ay+Yrz12pDXsX4ZohlCAKDLIUtEVnFyB9+wmEUQNUDt50cZ0zDKPwdpY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111188+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1699927703296455.9725099851436; Mon, 13 Nov 2023 18:08:23 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=vvDVam1+iFx0VCDPmKPZkV/cI2pATY7WrHVlal+D1N8=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1699927702; v=1; b=qDIcumLhhsOwNH8GxpdJzWG25Lj9HYaypAvSsx8tl17ufKcyRQhVyhdpGSPVCmPAbDe6Otel DEipZ7ngqn01qek2suvKBK0g783BnY7wz+bpIjhsgpWCxCCjazLm2lif4ElHT+dH+5pnTTWI1sx Ibv7whO1co0XtSpkjPGLzgx8= X-Received: by 127.0.0.2 with SMTP id L2BQYY1788612xLr16YZ5FFQ; Mon, 13 Nov 2023 18:08:22 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.4426.1699927701957735557 for ; Mon, 13 Nov 2023 18:08:22 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10893"; a="387715206" X-IronPort-AV: E=Sophos;i="6.03,299,1694761200"; d="scan'208";a="387715206" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Nov 2023 18:08:21 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10893"; a="793590990" X-IronPort-AV: E=Sophos;i="6.03,299,1694761200"; d="scan'208";a="793590990" X-Received: from shwdesfp01.ccr.corp.intel.com ([10.239.158.151]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Nov 2023 18:08:16 -0800 From: "Zhiguang Liu" To: devel@edk2.groups.io Cc: Zhiguang Liu , Ray Ni , Rahul Kumar , Gerd Hoffmann Subject: [edk2-devel] [PATCH] UefiCpuPkg: Use NonSmm BSP as BSP if BSP election is not enabled. Date: Tue, 14 Nov 2023 10:08:02 +0800 Message-Id: <20231114020802.573-1-zhiguang.liu@intel.com> MIME-Version: 1.0 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,zhiguang.liu@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: SWYmvfkTJxBy8EbqETdFCdbXx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1699927703651100001 Content-Type: text/plain; charset="utf-8" Currently, if BSP election is not enabled, will use Core0 as SMM BSP, however, Core0 does not always have the highest performance core. So, we can used NonSmm BSP as default BSP. Cc: Ray Ni Cc: Rahul Kumar Cc: Gerd Hoffmann Signed-off-by: Zhiguang Liu --- UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 10 +++++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 48 +++++++++++----------- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c b/UefiCpuPkg/PiSmmCpuDxe= Smm/MpService.c index 25d058c5b9..a4f83bb122 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c @@ -29,6 +29,8 @@ MM_COMPLETION mSmmStartupThisApToken; // UINT32 *mPackageFirstThreadIndex =3D NULL; =20 +extern EFI_MP_SERVICES_PROTOCOL *mMpServices; + /** Performs an atomic compare exchange operation to get semaphore. The compare exchange operation must be performed using @@ -1953,6 +1955,14 @@ InitializeMpSyncData ( // Enable BSP election by setting BspIndex to -1 // mSmmMpSyncData->BspIndex =3D (UINT32)-1; + } else { + // + // Use NonSMM BSP as SMM BSP + // + ASSERT (mMpServices !=3D NULL); + if (mMpServices !=3D NULL) { + mMpServices->WhoAmI (mMpServices, (UINTN *)&mSmmMpSyncData->BspInd= ex); + } } =20 mSmmMpSyncData->EffectiveSyncMode =3D mCpuSmmSyncMode; diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c b/UefiCpuPkg/PiSmmC= puDxeSmm/PiSmmCpuDxeSmm.c index 1d022a7051..18c77c59e6 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c @@ -128,7 +128,8 @@ SPIN_LOCK *mConfigSmmCodeAccessCheckLock =3D NULL; EFI_SMRAM_DESCRIPTOR *mSmmCpuSmramRanges; UINTN mSmmCpuSmramRangeCount; =20 -UINT8 mPhysicalAddressBits; +UINT8 mPhysicalAddressBits; +EFI_MP_SERVICES_PROTOCOL *mMpServices; =20 // // Control register contents saved for SMM S3 resume state initialization. @@ -603,26 +604,25 @@ PiCpuSmmEntry ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; - EFI_MP_SERVICES_PROTOCOL *MpServices; - UINTN NumberOfEnabledProcessors; - UINTN Index; - VOID *Buffer; - UINTN BufferPages; - UINTN TileCodeSize; - UINTN TileDataSize; - UINTN TileSize; - UINT8 *Stacks; - VOID *Registration; - UINT32 RegEax; - UINT32 RegEbx; - UINT32 RegEcx; - UINT32 RegEdx; - UINTN FamilyId; - UINTN ModelId; - UINT32 Cr3; - EFI_HOB_GUID_TYPE *GuidHob; - SMM_BASE_HOB_DATA *SmmBaseHobData; + EFI_STATUS Status; + UINTN NumberOfEnabledProcessors; + UINTN Index; + VOID *Buffer; + UINTN BufferPages; + UINTN TileCodeSize; + UINTN TileDataSize; + UINTN TileSize; + UINT8 *Stacks; + VOID *Registration; + UINT32 RegEax; + UINT32 RegEbx; + UINT32 RegEcx; + UINT32 RegEdx; + UINTN FamilyId; + UINTN ModelId; + UINT32 Cr3; + EFI_HOB_GUID_TYPE *GuidHob; + SMM_BASE_HOB_DATA *SmmBaseHobData; =20 GuidHob =3D NULL; SmmBaseHobData =3D NULL; @@ -656,13 +656,13 @@ PiCpuSmmEntry ( // // Get MP Services Protocol // - Status =3D SystemTable->BootServices->LocateProtocol (&gEfiMpServiceProt= ocolGuid, NULL, (VOID **)&MpServices); + Status =3D SystemTable->BootServices->LocateProtocol (&gEfiMpServiceProt= ocolGuid, NULL, (VOID **)&mMpServices); ASSERT_EFI_ERROR (Status); =20 // // Use MP Services Protocol to retrieve the number of processors and num= ber of enabled processors // - Status =3D MpServices->GetNumberOfProcessors (MpServices, &mNumberOfCpus= , &NumberOfEnabledProcessors); + Status =3D mMpServices->GetNumberOfProcessors (mMpServices, &mNumberOfCp= us, &NumberOfEnabledProcessors); ASSERT_EFI_ERROR (Status); ASSERT (mNumberOfCpus <=3D PcdGet32 (PcdCpuMaxLogicalProcessorNumber)); =20 @@ -945,7 +945,7 @@ PiCpuSmmEntry ( gSmmCpuPrivate->Operation[Index] =3D SmmCpuNone; =20 if (Index < mNumberOfCpus) { - Status =3D MpServices->GetProcessorInfo (MpServices, Index | CPU_V2_= EXTENDED_TOPOLOGY, &gSmmCpuPrivate->ProcessorInfo[Index]); + Status =3D mMpServices->GetProcessorInfo (mMpServices, Index | CPU_V= 2_EXTENDED_TOPOLOGY, &gSmmCpuPrivate->ProcessorInfo[Index]); ASSERT_EFI_ERROR (Status); mCpuHotPlugData.ApicId[Index] =3D gSmmCpuPrivate->ProcessorInfo[Inde= x].ProcessorId; =20 --=20 2.31.1.windows.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 (#111188): https://edk2.groups.io/g/devel/message/111188 Mute This Topic: https://groups.io/mt/102576442/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-