On Fri, Jul 15, 2016 at 09:48:31AM -0400, Konrad Rzeszutek Wilk wrote: > On Thu, Jul 14, 2016 at 04:53:07PM +0100, Anthony PERARD wrote: > > Hi, > > > > I've been investigating why OVMF is very slow in a Xen guest on an AMD > > host. This, I think, is the current failure that osstest is having. > > > > I've only look at a specific part of OVMF where the slowdown is very > > obvious on AMD vs Intel, the decompression. > > > > This is what I get on AMD, via the Xen serial console port: > > Invoking OVMF ... > > SecCoreStartupWithStack(0xFFFCC000, 0x818000) > > then, nothing for almost 1 minute, then the rest of the boot process. > > The same binary on Intel, the output does not stay "stuck" here. > > > > I could pin-point which part of the boot process takes a long time, but > > there is not anything obvious in there, just a loop that decompress the > > ovmf binary, with plenty of iteration. > > I tried `xentrace', but the trace does not show anything wrong, there is > > just an interrupt from time to time. I've tried to had some tracepoint > > inside this decompresion function in OVMF, but that did not reveal > > anything either, maybe there where not at the right place. > > > > Anyway, the function is: LzmaDec_DecodeReal() from the file > > IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Sdk/C/LzmaDec.c > > you can get the assembly from this object: > > Build/OvmfX64/DEBUG_GCC49/X64/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib/OUTPUT/Sdk/C/LzmaDec.obj > > This is with OVMF upstream (https://github.com/tianocore/edk2). > > I can send the assembly if needed. > > Pls. The full file if possible. Perhaps there is also an .S file somewhere there? I've attach the output of: objdump -d Build/OvmfX64/DEBUG_GCC49/X64/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib/OUTPUT/Sdk/C/LzmaDec.obj This is the C file: https://github.com/tianocore/edk2/blob/2bfd84ed45b2b66bdabac059df9db3404912dd28/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Sdk/C/LzmaDec.c As far as I can tell, LzmaDec_DecodeReal() does not call anything else. And there is no .S file. -- Anthony PERARD