On Fri, Jul 01, 2016 at 12:53:13PM +0200, Ard Biesheuvel wrote: > SErrors (formerly called asynchronous aborts) are a distinct class of > exceptions that are not closely tied to the currently executing > instruction. Since execution may be able to proceed in such a condition, > this class of exception is masked by default, and software needs to unmask > it explicitly if it is prepared to handle such exceptions. > > On DEBUG builds, we are well equipped to report the CPU context to the user > and it makes sense to report an SError as soon as it occurs rather than to > wait for the OS to take it when it unmasks them, especially since the current > arm64/Linux implementation simply panics in that case. So unmask them when > ArmCpuDxe loads. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <[email protected]> > --- > ArmPkg/Drivers/CpuDxe/Exception.c | 9 +++++++++ > 1 file changed, 9 insertions(+)
These look sensible to me. FWIW, for both patches: Acked-by: Mark Rutland <[email protected]> Mark. > > diff --git a/ArmPkg/Drivers/CpuDxe/Exception.c > b/ArmPkg/Drivers/CpuDxe/Exception.c > index c3107cd4a6bc..d806a5fdf910 100644 > --- a/ArmPkg/Drivers/CpuDxe/Exception.c > +++ b/ArmPkg/Drivers/CpuDxe/Exception.c > @@ -62,6 +62,15 @@ InitializeExceptions ( > Status = Cpu->EnableInterrupt (Cpu); > } > > + // > + // On a DEBUG build, unmask SErrors so they are delivered right away rather > + // than when the OS unmasks them. This gives us a better chance of figuring > + // out the cause. > + // > + DEBUG_CODE ( > + ArmEnableAsynchronousAbort (); > + ); > + > return Status; > } > > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

