Re: [edk2] xen OVMF problem

Subject: Re: [edk2] xen OVMF problem

From: Bei Guan <gbtju85@gmail.com>

To: Jordan Justen <jljusten@gmail.com>

Date: 2012-10-23 17:59:03



2012/10/23 Jordan Justen <jljusten@gmail.com>
On Mon, Oct 22, 2012 at 5:20 AM, Gonglei (Arei) <arei.gonglei@huawei.com> wrote:
> Hi, Jordan
> What's your opinion about this problem? Thanks!

Sorry. I'm still working to setup a Xen test environment.

Bei, Andrei,

How recently have you been able to test Xen with OVMF?

Do you have time to verify that the latest OVMF svn is still booting
on Xen for you?
Hi Jordan,

I have tested the latest OVMF(r13876) with Xen. It's still working.


HiArei,

This is my environment:
Xen-4.2-unstable (changeset: 25388) + Dom0 (2.6.32-5-xen-amd64) + OVMF(r13876) .
I use the device model "device_model_version = 'qemu-xen'" in my hvm config file, so maybe it's not the upstream QEMU.


I have attached my OVMF file(ovmf.bin of X64) for Xen and the OVMF boot log got in my environment. If you like, you can try it with this OVMF file. Note: The OVMF boot log file includes some Xen PV debug info(line 111-138), you can get rid of them.



Thanks,
Bei











Thanks,

-Jordan

> -----Original Message-----
> From: Gonglei (Arei)
> Sent: Wednesday, October 17, 2012 9:00 AM
> To: 'Jordan Justen'
> Cc: gbtju85@gmail.com; Andrei Warkentin
> Subject: RE: xen OVMF problem
>
> Jordan,
> My environment is xen-4.2-testing + upstream qemu-1.2 + Dom0 (Linux kernel 2.6.32) + OVMF(https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/)
>
> -----Original Message-----
> From: Jordan Justen [mailto:jljusten@gmail.com]
> Sent: Wednesday, October 17, 2012 5:21 AM
> To: Gonglei (Arei); gbtju85@gmail.com; Andrei Warkentin
> Subject: Re: xen OVMF problem
>
> Adding Andrei's current email...
>
> On Tue, Oct 16, 2012 at 2:20 PM, Jordan Justen <jljusten@gmail.com> wrote:
>> On Tue, Oct 16, 2012 at 2:18 AM, Gonglei (Arei) <arei.gonglei@huawei.com> wrote:
>>> Hi Jordan,
>>> I have gotten more detailed location where it stuck.
>>>
>>> linux-aVzzFl:~ # xl create win2008.cfg -c
>>> Parsing config from win2008.cfg
>>> xc: info: VIRTUAL MEMORY ARRANGEMENT:
>>> Loader: 0000000000100000->000000000029c344
>>> TOTAL: 0000000000000000->000000007f800000
>>> ENTRY ADDRESS: 0000000000100000
>>> xc: info: PHYSICAL MEMORY ALLOCATION:
>>> 4KB PAGES: 0x0000000000000200
>>> 2MB PAGES: 0x00000000000003fb
>>> 1GB PAGES: 0x0000000000000000
>>> Daemon running with PID 3105
>>> 16
>>> 32
>>> b1
>>> f1
>>> 64
>>> ===gl===: 1th hello world!
>>> SecCoreStartupWithStack(0x80000000, 0x43636553)
>>
>> 0x43636553 concerns me here. It is the TopOfCurrentStack parameter,
>> and it most likely should be aligned to a reasonable boundary.
>>
>> On QEMU/KVM I see:
>> SecCoreStartupWithStack(0xFFFEC000, 0x80000)
>>
>> Bei, Andrei,
>>
>> What do you see when you boot Xen?
>>
>> Arei, Bei, Andrei,
>>
>> Can you guys describe your environment so I might try to set up a
>> similar Xen based OVMF to help debug things?
>>
>> Thanks,
>>
>> -Jordan
>>
>>> ===gl===: 5th hello world!
>>> ===gl===: 1th SecStartupPhase2
>>> ===gl===: 1th FindAndReportEntryPoints
>>> ===gl===: 1th FindImageBase
>>> ===gl===: 1th EFI_NOT_FOUND: 0x80000000
>>> ===gl===: 2th FindAndReportEntryPoints, Status=0x80000000
>>>
>>> ASSERT_EFI_ERROR (Status = 00000000)
>>> ASSERT (522976):
>>>
>>> FindImageBase function:
>>> for (EndOfFile = CurrentAddress + BootFirmwareVolumePtr->HeaderLength; ; ) {
>>>
>>> CurrentAddress = (EndOfFile + 7) & 0xfffffffffffffff8ULL;
>>> if (CurrentAddress > EndOfFirmwareVolume) {
>>> return EFI_NOT_FOUND; //return from this place
>>> }
>>>
>>> FindAndReportEntryPoints function:
>>>
>>> // Find SEC Core and PEI Core image base
>>> Status = FindImageBase (*BootFirmwareVolumePtr, &SecCoreImageBase);
>>> ASSERT_EFI_ERROR (Status); //print the error info
>>>
>>> -----Original Message-----
>>> From: Gonglei (Arei)
>>> Sent: Tuesday, October 16, 2012 11:21 AM
>>> To: 'Jordan Justen'
>>> Cc: gbtju85@gmail.com; edk2-devel@lists.sourceforge.net; Tim.Deegan@citrix.com; Luonengjun; Fanhenglong; Hanweidong; Yanqiangjun; Yangxiaowei; Qianhuibin; Wangzhenguo
>>> Subject: RE: xen OVMF problem
>>>
>>> No, I'm not using "-D SOURCE_DEBUG_ENABLE", but adding DEBUG info in the source code.
>>>
>>> linux-aVzzFl:~# xl create win2008.cfg -c
>>> Parsing config from win2008_dc_r2_64_2U.cfg
>>> xc: info: VIRTUAL MEMORY ARRANGEMENT:
>>> Loader: 0000000000100000->000000000029c344
>>> TOTAL: 0000000000000000->000000007f800000
>>> ENTRY ADDRESS: 0000000000100000
>>> xc: info: PHYSICAL MEMORY ALLOCATION:
>>> 4KB PAGES: 0x0000000000000200
>>> 2MB PAGES: 0x00000000000003fb
>>> 1GB PAGES: 0x0000000000000000
>>> Daemon running with PID 11057
>>> 16
>>> 32
>>> b1
>>> f1
>>> 64
>>> ===gl===: 1th hello world!
>>> SecCoreStartupWithStack(0x80000000, 0x43636553)
>>> ===gl===: 2th hello world!
>>> ===gl===: 3th hello world!
>>> ===gl===: 4th hello world!
>>> ===gl===: 5th hello world!
>>>
>>> ASSERT_EFI_ERROR (Status = 00000000)
>>> ASSERT (522976):
>>>
>>> The source code:
>>>
>>> AsmWriteIdtr (&IdtDescriptor);
>>> DEBUG((EFI_D_ERROR, "===gl===: 4th hello world!\n"));
>>> ... ...
>>> //
>>> // Make sure the 8259 is masked before initializing the Debug Agent and the debug timer is enabled
>>> //
>>> IoWrite8 (0x21, 0xff);
>>> IoWrite8 (0xA1, 0xff);
>>> DEBUG((EFI_D_ERROR, "===gl===: 5th hello world!\n"));
>>> //
>>> // Initialize Debug Agent to support source level debug in SEC/PEI phases before memory ready.
>>> //
>>> InitializeDebugAgent (DEBUG_AGENT_INIT_PREMEM_SEC, &SecCoreData, SecStartupPhase2);
>>> DEBUG((EFI_D_ERROR, "===gl===: 6th hello world!\n"));
>>>
>>> -----Original Message-----
>>> From: Jordan Justen [mailto:jljusten@gmail.com]
>>> Sent: Tuesday, October 16, 2012 11:14 AM
>>> To: Gonglei (Arei)
>>> Cc: gbtju85@gmail.com; edk2-devel@lists.sourceforge.net; Tim.Deegan@citrix.com; Luonengjun; Fanhenglong; Hanweidong; Yanqiangjun; Yangxiaowei; Qianhuibin; Wangzhenguo
>>> Subject: Re: xen OVMF problem
>>>
>>> On Mon, Oct 15, 2012 at 7:54 PM, Gonglei (Arei) <arei.gonglei@huawei.com> wrote:
>>>> Thanks Jordan,
>>>> I am now doing this as your says. And I get the OVMF debugging output:
>>>> linux-aVzzFl:~# xl create win2008.cfg -c
>>>> Parsing config from win2008_dc_r2_64_2U.cfg
>>>> xc: info: VIRTUAL MEMORY ARRANGEMENT:
>>>> Loader: 0000000000100000->000000000029c344
>>>> TOTAL: 0000000000000000->000000007f800000
>>>> ENTRY ADDRESS: 0000000000100000
>>>> xc: info: PHYSICAL MEMORY ALLOCATION:
>>>> 4KB PAGES: 0x0000000000000200
>>>> 2MB PAGES: 0x00000000000003fb
>>>> 1GB PAGES: 0x0000000000000000
>>>> Daemon running with PID 30001
>>>> 16
>>>> 32
>>>> b1
>>>> f1
>>>> 64
>>>> SecCoreStartupWithStack(0x80000000, 0x43636553)
>>>>
>>>> ASSERT_EFI_ERROR (Status = 00000000)
>>>> ASSERT (522976):
>>>>
>>>> --------------------------------------------------------
>>>> Using the DEBUG I find it stop in this function: SecCoreStartupWithStack
>>>>
>>>> line 652: InitializeDebugAgent (DEBUG_AGENT_INIT_PREMEM_SEC, &SecCoreData, SecStartupPhase2);
>>>> (OvmfPkg/Sec/SecMain.c)
>>>
>>> Are you using
>>> -D SOURCE_DEBUG_ENABLE
>>> when building?
>>>
>>> I recommend not using that at this point.
>>>
>>> -Jordan
>>>
>>>> -----Original Message-----
>>>> From: Jordan Justen [mailto:jljusten@gmail.com]
>>>> Sent: Monday, October 15, 2012 11:33 PM
>>>> To: Gonglei (Arei)
>>>> Cc: gbtju85@gmail.com; andreiw@motorola.com; edk2-devel@lists.sourceforge.net; Tim.Deegan@citrix.com; Luonengjun; Fanhenglong; Hanweidong; Yanqiangjun; Yangxiaowei; Qianhuibin; Wangzhenguo
>>>> Subject: Re: xen OVMF problem
>>>>
>>>> Ok, I think I understand the issue then. With the latest code you need
>>>> this on the build command line to see debug messages printed to the
>>>> serial port.
>>>>
>>>> -D DEBUG_ON_SERIAL_PORT
>>>>
>>>> Does Xen support QEMU's debug console device?
>>>>
>>>> -Jordan
>>>>
>>>> On Mon, Oct 15, 2012 at 1:44 AM, Gonglei (Arei) <arei.gonglei@huawei.com> wrote:
>>>>> Hi Jordan,
>>>>>
>>>>> 1) I get the OVMF from https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/.
>>>>>
>>>>> 2) I build the ResetVector code and modify
>>>>> UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf to use the serial
>>>>> debug versions (Bin/ResetVector.x64.serial.raw and
>>>>> Bin/ResetVector.ia32.serial.raw).
>>>>>
>>>>> -Arei
>>>>>



--
Best Regards,
Bei Guan