D chinni babu
2015-06-30 05:05:20 UTC
Hi All,
I have few questions on UEFI Code execution.Please help me to understand
UEFI in a better way.
1) What is the need of locking mechanism and Task Priority Levels in UEFI
when there is no multi process execution in boot time?
More insight ,As Per my understanding we have only one interrupt which is
Timer interrupt which can halt the normal execution to check for Timer
events.If any Timer event needs to signal it will can and exit.
TPL is Raising to TPL_HIGH_LEVEL -1 when we look for timer events in the
Queue.
My doubt is when exactly Locking mechanism becomes handy?
TPL_APPLICATION is the normal default level execution and when we create a
event type other than EVT_TIMER , it will be executed only when we signal
the event (directly by us or indirectly by core code) when means core code
will look into the link-list and call the notification function.Everything
looks like Linear execution.
2) In locking mechanism and Task Priority Levels Core code we are using
ASSERT messages to detect the errors that means these wont be
detected/reported in Release build.correct ? if it is so ,in release build
when we have error in TPL_LEVEL change or in Locking mechanism and there is
no hardware or software issue found in Firmware execution in real time ,we
wont be able to detect .correct ?
3) In UEFI Spec Table 22 .we have a description for the TPLS Levels.
Interrupts code executing below TPL_CALLBACK level.Long term operations
(such as file system operations and disk I/O) can occur at this level.
Interrupts code executing below TPL_NOTIFY level. Blocking is not allowed
at this level. Code executes to completion and returns. If code requires
more processing, it needs to signal an event to wait to obtain control
again at whatever level it requires. This level is typically used to
process low level IO to or from a device.
I didn't seen any core code to achieve both the statements.Is there any
core code to differentiate the TPL Levels and to stop one code execution
and call the other one at different level ?
Please help to clarify these things for better understanding of UEFI.
Thanks,
Chinni.
I have few questions on UEFI Code execution.Please help me to understand
UEFI in a better way.
1) What is the need of locking mechanism and Task Priority Levels in UEFI
when there is no multi process execution in boot time?
More insight ,As Per my understanding we have only one interrupt which is
Timer interrupt which can halt the normal execution to check for Timer
events.If any Timer event needs to signal it will can and exit.
TPL is Raising to TPL_HIGH_LEVEL -1 when we look for timer events in the
Queue.
My doubt is when exactly Locking mechanism becomes handy?
TPL_APPLICATION is the normal default level execution and when we create a
event type other than EVT_TIMER , it will be executed only when we signal
the event (directly by us or indirectly by core code) when means core code
will look into the link-list and call the notification function.Everything
looks like Linear execution.
2) In locking mechanism and Task Priority Levels Core code we are using
ASSERT messages to detect the errors that means these wont be
detected/reported in Release build.correct ? if it is so ,in release build
when we have error in TPL_LEVEL change or in Locking mechanism and there is
no hardware or software issue found in Firmware execution in real time ,we
wont be able to detect .correct ?
3) In UEFI Spec Table 22 .we have a description for the TPLS Levels.
Interrupts code executing below TPL_CALLBACK level.Long term operations
(such as file system operations and disk I/O) can occur at this level.
Interrupts code executing below TPL_NOTIFY level. Blocking is not allowed
at this level. Code executes to completion and returns. If code requires
more processing, it needs to signal an event to wait to obtain control
again at whatever level it requires. This level is typically used to
process low level IO to or from a device.
I didn't seen any core code to achieve both the statements.Is there any
core code to differentiate the TPL Levels and to stop one code execution
and call the other one at different level ?
Please help to clarify these things for better understanding of UEFI.
Thanks,
Chinni.