Thanks Tim! Tim Lewis wrote: > Stephen -- > > No, on most UEFI implementations timer is running and, in the shell, > polling-related events are happening all the time (to check for input-related > device status change) > > Could the DXE core do on-demand only? Probably, but that is not the current > EDK2 implementation, as far as I understand it. > > Tim > > -----Original Message----- > From: Stephen Polkowski [mailto:step...@centtech.com] > Sent: Thursday, May 16, 2013 10:31 AM > To: edk2-devel@lists.sourceforge.net > Subject: Re: [edk2] how timer and interrupt works in UEFI? > > > Hi Andrew, > > Thanks for answering this question. I was curious about interrupts as > well. If I understand you correctly, a timer exists and it is only used when > a driver or a program requests it. > > So, when we come up in a basic UEFI Shell the system is essentially > tickless? > > Thanks, > > Stephen > > > Andrew Fish wrote: >> On May 16, 2013, at 7:16 AM, "zzhh.happy" <zzhh.ha...@163.com >> <mailto:zzhh.ha...@163.com>> wrote: >> >>> Hi all, >>> >>> I'm fresh man for studying UEFI,and there are some questions ,is >>> there anyone can help,thanks! >>> as we know there is only on interrupt that is the timer,it works as >>> the heartbeat timer.but in X86 platform i can't find the timer >>> interrupt handle function. except bellow service *CoreTimerTick,*but >>> there is a input parameter *Duration,*never heard that interrupt >>> service have input parameter,if yes, who pass it in? >>> and there are my question: >>> >> UEFI does not define how the timer works, just that it exists. The >> UEFI Platform Initialization Specification 1.2.1 >> <http://www.uefi.org/specs/platform_agreement> (also called PI spec) >> defines how the timer works in the edk2 http://www.uefi.org/specs/. >> >> The PI defines a set of Architectural Protocol that produce the >> hardware services needed to produce the EFI services. If you look in >> https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/MdeModulePkg/ >> Core/Dxe/DxeMain/DxeProtocolNotify.c >> you will see the mArchProtocols array that contains a list of these >> architectural protocols, and some globals that filled in when the >> protocols are registered. >> >> So basically the CPU AP, gEfiCpuArchProtocolGuid, abstracts interrupt >> handling in a processor agnostic way (Same DXE Core source works for >> Itainum, IA32, X64, and ARM). The Timer AP, gEfiTimerArchProtocolGuid, >> depends on the CPU AP and produces the timer tick for the platform. >>> 1.in x86 platform what is the heartbeat,is it the leagcy 8254? >> It can be any timer. It is what ever Timer AP driver gets included in >> the firmware. Search for drivers installing gEfiTimerArchProtocolGuid. >>> 2.what is the interrupt vector number? >> There is not a standard. It is platform specific and set by the driver. >> Some drivers may offer a PCD config setting to change the vector. >>> 3.where is the IDT table exist in memery after the timer start >>> ticking >> The CPU AP driver sets up the IDT. For X64/IA32 the IDT is not at a >> fixed address. Search for a driver installing gEfiCpuArchProtocolGuid. >> Note: There is an assemble instruction that lets you know the address, >> but it is probably a very bad idea to patch anything into the table >> directly as debuggers need to cooperate with the CPU AP to hook >> vectors, so you may break the debugger or the CPU AP. You can use >> gEfiCpuArchProtocolGuid services to hook an interrupt vector if that >> is what you need to do. >> There are C functions that implement common assembly instruction in >> the BaseLib. So AsmReadIdtr(). >>> 4.what is the heartbeat service handle,and how it registered to the >>> cpu's interrupt verctor table. >> https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/MdeModulePkg/ >> Core/Dxe/DxeMain/DxeProtocolNotify.c >> >> When the Timer AP service is registered the DXE Core does: >> >> gTimer->RegisterHandler (gTimer, CoreTimerTick); >> >> Which registers the DXE Cores timer callback. >> >> This is an example gEfiCpuArchProtocolGuid driver: >> https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/UefiCpuPkg/Cp >> uDxe/ This is not the driver you would find on a real platform as >> there is a large amount of processor specific initialization that is >> required, but it shows the general concepts. >> >> Thanks, >> >> Andrew Fish >>> >>> thanks very much. >>> >>> >>> VOID >>> EFIAPI >>> *CoreTimerTick* ( >>> IN UINT64 Duration >>> ) >>> /*++ >>> Routine Description: >>> Called by the platform code to process a tick. >>> Arguments: Duration - The number of 100ns elasped since the last >>> call to TimerTick >>> Returns: None >>> --*/ >>> { >>> IEVENT *Event; >>> // Check runtiem flag in case there are ticks while exiting boot >>> services >>> CoreAcquireLock (&mEfiSystemTimeLock); >>> // Update the system time >>> mEfiSystemTime += Duration; >>> // If the head of the list is expired, fire the timer event >>> // to process it >>> if (!IsListEmpty (&mEfiTimerList)) { >>> Event = CR (mEfiTimerList.ForwardLink, IEVENT, u.Timer.Link, >>> EVENT_SIGNATURE); >>> if (Event->u.Timer.TriggerTime <= mEfiSystemTime) { >>> CoreSignalEvent (mEfiCheckTimerEvent); >>> } >>> } >>> CoreReleaseLock (&mEfiSystemTimeLock); } >>> 2013-05-16 >>> --------------------------------------------------------------------- >>> --- >>> zzhh.happy >>> --------------------------------------------------------------------- >>> --------- AlienVault Unified Security Management (USM) platform >>> delivers complete security visibility with the essential security >>> capabilities. Easily and efficiently configure, manage, and operate >>> all of your security controls from a single console and one unified >>> framework. Download a free trial. >>> http://p.sf.net/sfu/alienvault_d2d___________________________________ >>> ____________ >>> edk2-devel mailing list >>> edk2-devel@lists.sourceforge.net >>> <mailto:edk2-devel@lists.sourceforge.net> >>> https://lists.sourceforge.net/lists/listinfo/edk2-devel >> >> ---------------------------------------------------------------------- >> -- >> >> ---------------------------------------------------------------------- >> -------- AlienVault Unified Security Management (USM) platform >> delivers complete security visibility with the essential security >> capabilities. Easily and efficiently configure, manage, and operate >> all of your security controls from a single console and one unified >> framework. Download a free trial. >> http://p.sf.net/sfu/alienvault_d2d >> >> >> ---------------------------------------------------------------------- >> -- >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > ------------------------------------------------------------------------------ > AlienVault Unified Security Management (USM) platform delivers complete > security visibility with the essential security capabilities. Easily and > efficiently configure, manage, and operate all of your security controls from > a single console and one unified framework. Download a free trial. > http://p.sf.net/sfu/alienvault_d2d > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > ------------------------------------------------------------------------------ > AlienVault Unified Security Management (USM) platform delivers complete > security visibility with the essential security capabilities. Easily and > efficiently configure, manage, and operate all of your security controls > from a single console and one unified framework. Download a free trial. > http://p.sf.net/sfu/alienvault_d2d > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel