From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 35DC181EA2 for ; Thu, 8 Dec 2016 22:48:48 -0800 (PST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP; 08 Dec 2016 22:48:47 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,323,1477983600"; d="scan'208";a="38467405" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by orsmga004.jf.intel.com with ESMTP; 08 Dec 2016 22:48:47 -0800 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.63]) by ORSMSX103.amr.corp.intel.com ([169.254.5.120]) with mapi id 14.03.0248.002; Thu, 8 Dec 2016 22:48:47 -0800 From: "Kinney, Michael D" To: Anthony PERARD , "edk2-devel@lists.01.org" , "xen-devel@lists.xenproject.org" , "Kinney, Michael D" Thread-Topic: [edk2] [PATCH RFC 10/14] UefiCpuPkg/BaseXApicX2ApicLib: Fix initialisation on my system and ... Thread-Index: AQHSUWtFTgYP73DaNEa33qAacLd13qD/LTCg Date: Fri, 9 Dec 2016 06:48:47 +0000 Message-ID: References: <20161208153340.2285-1-anthony.perard@citrix.com> <20161208153340.2285-11-anthony.perard@citrix.com> In-Reply-To: <20161208153340.2285-11-anthony.perard@citrix.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_IC x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTkwNTcxMzgtYzM3OS00YzhkLTlmNTEtNDUwNjE1MzIzOWQ2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6IkUxV0Noemt1NEoxd3BYK0xvZGx5MGlYdVJcL3pmQ1BZaUFHSTFzQkRGdTBFPSJ9 x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Subject: Re: [PATCH RFC 10/14] UefiCpuPkg/BaseXApicX2ApicLib: Fix initialisation on my system and ... X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Dec 2016 06:48:48 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Anthony, Can you provide more details on why you want to expose internal APIs in the library class? What is the specific issue? Is the Local APIC in your environment=20 not behaving the same as real HW? Thanks, Mike > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of An= thony PERARD > Sent: Thursday, December 8, 2016 7:34 AM > To: edk2-devel@lists.01.org; xen-devel@lists.xenproject.org > Cc: Anthony PERARD > Subject: [edk2] [PATCH RFC 10/14] UefiCpuPkg/BaseXApicX2ApicLib: Fix init= ialisation > on my system and ... >=20 > declare more exported function, ReadLocalApicReg and WriteLocalApicReg. >=20 > On my system (running OVMF inside a Xen PVH guest), writing the > interrupt information (to XAPIC_LVT_TIMER_OFFSET) would also reset the > init-count register, thus disabling the timer. > --- > UefiCpuPkg/Include/Library/LocalApicLib.h | 40 ++++++++++++++++= ++++++ > .../BaseXApicX2ApicLib/BaseXApicX2ApicLib.c | 10 +++--- > 2 files changed, 45 insertions(+), 5 deletions(-) >=20 > diff --git a/UefiCpuPkg/Include/Library/LocalApicLib.h > b/UefiCpuPkg/Include/Library/LocalApicLib.h > index fc980bc..ab621f2 100644 > --- a/UefiCpuPkg/Include/Library/LocalApicLib.h > +++ b/UefiCpuPkg/Include/Library/LocalApicLib.h > @@ -48,6 +48,46 @@ SetLocalApicBaseAddress ( > ); >=20 > /** > + Read from a local APIC register. > + > + This function reads from a local APIC register either in xAPIC or x2AP= IC mode. > + It is required that in xAPIC mode wider registers (64-bit or 256-bit) = must be > + accessed using multiple 32-bit loads or stores, so this function only = performs > + 32-bit read. > + > + @param MmioOffset The MMIO offset of the local APIC register in xAPI= C mode. > + It must be 16-byte aligned. > + > + @return 32-bit Value read from the register. > +**/ > +UINT32 > +EFIAPI > +ReadLocalApicReg ( > + IN UINTN MmioOffset > + ); > + > +/** > + Write to a local APIC register. > + > + This function writes to a local APIC register either in xAPIC or x2API= C mode. > + It is required that in xAPIC mode wider registers (64-bit or 256-bit) = must be > + accessed using multiple 32-bit loads or stores, so this function only = performs > + 32-bit write. > + > + if the register index is invalid or unsupported in current APIC mode, = then ASSERT. > + > + @param MmioOffset The MMIO offset of the local APIC register in xAPI= C mode. > + It must be 16-byte aligned. > + @param Value Value to be written to the register. > +**/ > +VOID > +EFIAPI > +WriteLocalApicReg ( > + IN UINTN MmioOffset, > + IN UINT32 Value > + ); > + > +/** > Get the current local APIC mode. >=20 > If local APIC is disabled, then ASSERT. > diff --git a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c > b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c > index e690d2a..f84a40a 100644 > --- a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c > +++ b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c > @@ -820,11 +820,6 @@ InitializeApicTimer ( > // > InitializeLocalApicSoftwareEnable (TRUE); >=20 > - // > - // Program init-count register. > - // > - WriteLocalApicReg (XAPIC_TIMER_INIT_COUNT_OFFSET, InitCount); > - > if (DivideValue !=3D 0) { > ASSERT (DivideValue <=3D 128); > ASSERT (DivideValue =3D=3D GetPowerOfTwo32((UINT32)DivideValue)); > @@ -848,6 +843,11 @@ InitializeApicTimer ( > LvtTimer.Bits.Mask =3D 0; > LvtTimer.Bits.Vector =3D Vector; > WriteLocalApicReg (XAPIC_LVT_TIMER_OFFSET, LvtTimer.Uint32); > + > + // > + // Program init-count register. > + // > + WriteLocalApicReg (XAPIC_TIMER_INIT_COUNT_OFFSET, InitCount); > } >=20 > /** > -- > Anthony PERARD >=20 > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel