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

Reply via email to