On 18 March 2016 at 14:34, Cohen, Eugene <eug...@hp.com> wrote:
> Vladimir,
>
>> Loading driver at 0x000BBE23000 EntryPoint=0x000BBE23280
>> ArmTimerDxe.efi
>
> This is the point where the Timer driver will register with the interrupt 
> controller driver and enable timer tick interrupts so the first IRQ interrupt 
> will fire shortly thereafter.
>
>> JTAG debug shows that the CPU is looping in IrqSpx:
>> EL2:0x0000000085008A80 : B        IrqSPx ; 0x85008A80
>
> This instruction does not correspond to the new exception handling code 
> (ArmExceptionLib).  Based on my searching the only place I see a construct 
> like this is in DebugAgentException.S 
> (ArmPkg\Library\DebugAgentSymbolsBaseLib).
>
> I haven't used this library but understand that it (the library class, at 
> least) intended to assist with source level debugging (GDB agent over serial 
> port or equivalent).  This particular instance doesn't actually appear to be 
> a debug agent nor does it implement the SaveAndSetDebugTimerInterrupt.   This 
> instance is installing exception handlers that just spin but now that's 
> overlapping with the responsibilities of CpuExceptionHandlerLib (and the 
> DefaultExceptionHandlerLib which provides more useful output than a 
> spinloop).  We don't want yet another copy of exception handlers floating 
> around (which is the whole point behind ArmExceptionLib), instead we need to 
> find a way to make them work together or at least rip out the exception 
> vector init from this driver.
>
> Regardless, when CpuDxe initializes exceptions it should be taking over 
> exception vectors including the IRQ handler.  Since I don't have a platform 
> to test this with at the moment, can you help debug it by stepping through  
> InitializeExceptions in CpuDxe and see what is happening with regard to the 
> exception table (VBAR programming, and the contents at that address)?
>
> Also please help me duplicate your setup - can you confirm which libraries 
> you are using (are you using the ArmPkg DebugAgentSymbolsBaseLib?) and which 
> components (SEC or otherwise) are using it?
>

You need to change the resolution for CpuExceptionHandlerLib in your
platform definition:

-  
CpuExceptionHandlerLib|MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
+  CpuExceptionHandlerLib|ArmPkg/Library/ArmExceptionLib/ArmExceptionLib.inf
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to