From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-oln040092071072.outbound.protection.outlook.com [40.92.71.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 71D4E21D1B29E for ; Sun, 23 Jul 2017 03:17:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ZnxAlZV84YLWIW2JzxaMxRmLTopMGJA2jMVh2tNct4c=; b=WJzqzjp9J+SJmfpb/mAAyf7PSS4KiLp8AMR3ttisEq6EUgqOks4BnpGRf+25N/eZNW4yg8rnqFL9sz7eq6j+xP1YihZ9H1DTeUoQV9k/jNVlPHPANQEbjqjxLrMpAbwYIsc92Sq3hh0EVtHcX03nh72V0dhaIUCX6jdoSn4uYiBgKz+aw1P/tM4vvI5kHYX1OkvI4e7bjPj3xtcWGtpkPt6N5u7qfweAfJHRZNnkwUX4b/ya9OiyRWhFFphVWd4YQEaAJXhaXVFtba/Gb307e5DYKfcvFAxexdK3n48nmK2Xli/dfqT5GN2nWMvlCXmDfcjxQImmkbaxAz6cqmYvrg== Received: from DB5EUR03FT027.eop-EUR03.prod.protection.outlook.com (10.152.20.59) by DB5EUR03HT005.eop-EUR03.prod.protection.outlook.com (10.152.20.78) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1240.9; Sun, 23 Jul 2017 10:19:18 +0000 Received: from AM4PR06MB1491.eurprd06.prod.outlook.com (10.152.20.52) by DB5EUR03FT027.mail.protection.outlook.com (10.152.20.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.9 via Frontend Transport; Sun, 23 Jul 2017 10:19:17 +0000 Received: from AM4PR06MB1491.eurprd06.prod.outlook.com ([fe80::dcd0:60e6:90e0:871b]) by AM4PR06MB1491.eurprd06.prod.outlook.com ([fe80::dcd0:60e6:90e0:871b%13]) with mapi id 15.01.1282.017; Sun, 23 Jul 2017 10:19:17 +0000 From: =?iso-8859-1?Q?Marvin_H=E4user?= To: "edk2-devel@lists.01.org" CC: "michael.d.kinney@intel.com" , "liming.gao@intel.com" Thread-Topic: [PATCH] MdePkg/SecPeiDxeTimerLibCpu: Consume UefiCpuPkg LAPIC code. Thread-Index: AQHTA5wlcfBDCD5qrEmhamQ76DeIzKJhMXOQ Date: Sun, 23 Jul 2017 10:19:17 +0000 Message-ID: References: In-Reply-To: Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=outlook.com; x-incomingtopheadermarker: OriginalChecksum:D59A217D4C25FB4DE03ABBE0667C87B1D9828099A5DECB3DFC31CEF60EA71807; UpperCasedChecksum:1565918E54A1D96D6448CD40F5BC8D97CAC7B6D4E1BE5D6797E1ECF896AC6BFF; SizeAsReceived:7414; Count:45 x-tmn: [JYCrXUaok6IaxaGKMisKtsHbWimBhLqL] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5EUR03HT005; 7:2ezhL1eBT9cKIfSU2SrR1smIZUtkiFc7fNH06MBnI7FUMSdULkgw3zfg+Hxn2GhA+8Snp0AFBYTpG22m/Hw6TpaaPwH2yAid2FxvjhF2htSzLvhgHeyukx4ldt+bMCzvogGPX3ceMnSXTOVpg27vXlGoHyVeu/pxR7mx94H1of4mjWQG3FEF86JaNtCuiB2bsAKZrQFbHiIBqY9vzO5+GEG2eFR2ZPEsWVsTj9zpqPAPaRp/2ETpygxxMR/jcmQMSzben31pdPqzGm8cddtO0zfAce4DhJuczlUnZwpztbrfdkTB0iuoQn+R/9tz+5y360hP8/V9LNcwHMW/1b15pTQFbVo7USadvIOOJjbQH0Zw4skIPAFKJLvOCBaB4XNCfJ8/68GhTsSYeBvSTTekkp0U5zoEDdlyJ426gvrKEJ19rQwRLlm5vEpFQIvHBgZuw/erfYSo/kutwleJZfqJm5EvMJLhXmgdIRPAA/VOY0fPfZeAWQneJQ0bupTP7SQgVoP1wgxc79LYLfftK+CJnRM+wrBbvGVOJjA6dDzVKefVOYHqXZag6RvDNPP4uPRh9lGMBCBGppf2+qVklTB9vsFncrmIoz2vtlA4Bx9xaV+FAOqDRYS+pCcRuehc+Xi6gaO61Tfn8lRA33MeZJpAfNTuHd6/oLYnc/dW2bVPTgLJFwSl0T4yXbMti0nBIy8ahA+LaZYzT0QwWQ657HmH3/LEK57O/pHcKCOikjkto+xTQPOOcOEOFk2tGK+DE60vINUMMDAgvVstg3RAHjNQ5g== x-incomingheadercount: 45 x-eopattributedmessage: 0 x-forefront-antispam-report: EFV:NLI; SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:DB5EUR03HT005; H:AM4PR06MB1491.eurprd06.prod.outlook.com; FPR:; SPF:None; LANG:en; x-ms-office365-filtering-correlation-id: 09f11bb8-a117-4732-0c08-08d4d1b446b5 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322350)(1601125374)(1603101448)(1701031045)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DB5EUR03HT005; x-ms-traffictypediagnostic: DB5EUR03HT005: x-exchange-antispam-report-test: UriScan:(189930954265078)(162533806227266)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031); SRVR:DB5EUR03HT005; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB5EUR03HT005; x-forefront-prvs: 0377802854 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jul 2017 10:19:17.5421 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5EUR03HT005 Subject: Re: [PATCH] MdePkg/SecPeiDxeTimerLibCpu: Consume UefiCpuPkg LAPIC code. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Jul 2017 10:17:21 -0000 Content-Language: de-DE Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Dear Michael and Liming, I submited the patch as the changes need to be done anyway, though I think = the library might be better moved to UefiCpuPkg. Also, is my understanding of the mask value being incorrect right? I was co= nfused by the 'ULL' suffix, which makes it look like it was intended. Is it= ? Regards, Marvin. > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > Marvin H=E4user > Sent: Sunday, July 23, 2017 12:12 PM > To: edk2-devel@lists.01.org > Cc: michael.d.kinney@intel.com; liming.gao@intel.com > Subject: [edk2] [PATCH] MdePkg/SecPeiDxeTimerLibCpu: Consume > UefiCpuPkg LAPIC code. >=20 > X86TimerLib is changed to use UefiCpuPkg LAPIC register definitions and > LocalApicLib to remove duplicated code. An implicite change is the value > returned by InternalX86GetApicBase() as it now returns the result of > GetLocalApicBaseAddress(), which is the full LAPIC address. This also > implicitely fixes the incorrect mask value used previously, which did not= only > mask AcpiBase, but also the first nibble of AcpiBaseHi. This does not app= ly to > 32-bit platforms. >=20 > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Marvin Haeuser > --- > MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c | 35 ++++++= +-- > ----------- > MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf | 4 ++- > MdePkg/MdePkg.dsc | 3 ++ > 3 files changed, 18 insertions(+), 24 deletions(-) >=20 > diff --git a/MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c > b/MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c > index 76c66fbce6fb..fa6e6f213029 100644 > --- a/MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c > +++ b/MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c > @@ -1,7 +1,7 @@ > /** @file > Timer Library functions built upon local APIC on IA32/x64. >=20 > - Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.
> + Copyright (c) 2006 - 2017, Intel Corporation. All rights > + reserved.
> This program and the accompanying materials > are licensed and made available under the terms and conditions of the = BSD > License > which accompanies this distribution. The full text of the license may= be > found at @@ -13,18 +13,14 @@ **/ >=20 > #include > +#include > +#include > #include > #include > #include > #include > #include >=20 > -#define APIC_SVR 0x0f0 > -#define APIC_LVTERR 0x370 > -#define APIC_TMICT 0x380 > -#define APIC_TMCCT 0x390 > -#define APIC_TDCR 0x3e0 > - > // > // The following array is used in calculating the frequency of local API= C // > timer. Refer to IA-32 developers' manual for more details. > @@ -54,30 +50,21 @@ InternalX86GetApicBase ( > VOID > ) > { > - UINTN MsrValue; > UINTN ApicBase; >=20 > - MsrValue =3D (UINTN) AsmReadMsr64 (27); > - ApicBase =3D MsrValue & 0xffffff000ULL; > - > // > - // Check the APIC Global Enable bit (bit 11) in IA32_APIC_BASE MSR. > - // This bit will be 1, if local APIC is globally enabled. > + // Verify local APIC is under XAPIC mode. > // > - ASSERT ((MsrValue & BIT11) !=3D 0); > + ASSERT (GetApicMode () =3D=3D LOCAL_APIC_MODE_XAPIC); >=20 > - // > - // Check the APIC Extended Mode bit (bit 10) in IA32_APIC_BASE MSR. > - // This bit will be 0, if local APIC is under XAPIC mode. > - // > - ASSERT ((MsrValue & BIT10) =3D=3D 0); > + ApicBase =3D GetLocalApicBaseAddress (); >=20 > // > // Check the APIC Software Enable/Disable bit (bit 8) in Spurious-Inte= rrupt > // Vector Register. > // This bit will be 1, if local APIC is software enabled. > // > - ASSERT ((MmioRead32 (ApicBase + APIC_SVR) & BIT8) !=3D 0); > + ASSERT ((MmioRead32 (ApicBase + XAPIC_SPURIOUS_VECTOR_OFFSET) & > BIT8) > + !=3D 0); >=20 > return ApicBase; > } > @@ -98,7 +85,9 @@ InternalX86GetTimerFrequency ( { > return > PcdGet32(PcdFSBClock) / > - mTimerLibLocalApicDivisor[MmioBitFieldRead32 (ApicBase + APIC_TDCR, > 0, 3)]; > + mTimerLibLocalApicDivisor[ > + MmioBitFieldRead32 (ApicBase + > XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET, 0, 3) > + ]; > } >=20 > /** > @@ -115,7 +104,7 @@ InternalX86GetTimerTick ( > IN UINTN ApicBase > ) > { > - return MmioRead32 (ApicBase + APIC_TMCCT); > + return MmioRead32 (ApicBase + > XAPIC_TIMER_CURRENT_COUNT_OFFSET); > } >=20 > /** > @@ -131,7 +120,7 @@ InternalX86GetInitTimerCount ( > IN UINTN ApicBase > ) > { > - return MmioRead32 (ApicBase + APIC_TMICT); > + return MmioRead32 (ApicBase + XAPIC_TIMER_INIT_COUNT_OFFSET); > } >=20 > /** > diff --git > a/MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf > b/MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf > index a00ebb0eeb64..286da09db174 100644 > --- a/MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf > +++ b/MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf > @@ -13,7 +13,7 @@ > # Note that for IA-32 and x64, this library only supports xAPIC mode. If > x2APIC # support is desired, the SecPeiDxeTimerLibUefiCpu library can be > used. > # > -# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
> +# Copyright (c) 2007 - 2017, Intel Corporation. All rights > +reserved.
> # > # This program and the accompanying materials # are licensed and made > available under the terms and conditions of the BSD License @@ -48,6 +48,= 7 > @@ [Sources.IPF] >=20 > [Packages] > MdePkg/MdePkg.dec > + UefiCpuPkg/UefiCpuPkg.dec >=20 >=20 > [LibraryClasses] > @@ -57,6 +58,7 @@ [LibraryClasses.IA32, LibraryClasses.X64] > PcdLib > IoLib > DebugLib > + LocalApicLib >=20 > [LibraryClasses.IPF] > PalLib > diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc index > 010ce533d7ea..8988d1947566 100644 > --- a/MdePkg/MdePkg.dsc > +++ b/MdePkg/MdePkg.dsc > @@ -35,6 +35,9 @@ [PcdsFixedAtBuild] > [PcdsFixedAtBuild.IPF] > gEfiMdePkgTokenSpaceGuid.PcdIoBlockBaseAddressForIpf|0x0ffffc000000 >=20 > +[LibraryClasses] > + > +LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.i > +nf > + >=20 > ########################################################## > ######################################### > # > # Components Section - list of the modules and components that will be > processed by compilation > -- > 2.12.2.windows.2 >=20 > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel