[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] About booting Xen with UEFI on FastModel



On Dec 11, 2013, at 19:29, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:

> On Wed, 2013-12-11 at 19:06 +0800, Chen Baozi wrote:
>> On Dec 11, 2013, at 18:59, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
>> 
>>> On Wed, 2013-12-11 at 13:06 +0800, Chen Baozi wrote:
>>>> Hi Ian,
>>>> 
>>>> On Dec 9, 2013, at 23:35, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
>>>> 
>>>>> On Mon, 2013-12-09 at 23:15 +0800, Chen Baozi wrote:
>>>>>> Hi all,
>>>>>> 
>>>>>> I noticed that upstream UEFI is now supported ARMv8 on FastModel.
>>>>>> I’ve tried it to boot Linux with it. And it works. But it seems
>>>>>> it still cannot load Xen hypervisor properly. I’m now looking for
>>>>>> the reasons. Is there any difference for a firmware to load Xen
>>>>>> and Linux kernel?
>>>>> 
>>>>> I think you are the first one to try Xen on EFI.
>>>>> 
>>>>> Are you using the EFI stub with Linux or are you launching via a
>>>>> bootloader e.g. Grub-EFI?
>>>> 
>>>> After reading the source code, I think it is neither the EFI stub
>>>> or a bootloader. A Linux Loader EFI application has been developed
>>>> for ARM in EFI.
>>> 
>>> Do you have a link? I'm curious.
>> 
>> Instructions to EFI on AArch64:
>> 
>> http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=ArmPlatformPkg/AArch64
>> 
>> And I’m using the git clone of its svn repository:
>> 
>> https://github.com/tianocore/edk2.git
>> 
>> Under the tree, the Linux Loader locates at:
>> 
>> ArmPkg/Application/LinuxLoader
> 
> Ah that, yes I think that boots Linux using the zImage protocol.
> 
>>> 
>>>> It is able to boot Linux either by tagged list or
>>>> dtb method. However, it hardcoded the start address of 0x80000 
>>>> when loading Linux kernel, which make it unworkable for Xen after
>>>> paging is enable.
> 
> 0x80000 is a problem due to the alignment not being 2M I think?
> 
> Really should look into fixing that. (would probably mean allowing Xen
> to span 2 consecutive 2MB blocks and some additional fiddling during
> bring up)

Yes, it is. I hacked EFI to make it boot Xen with a 2M aligned address.
And it seems to be OK.

But I’m afraid it is not simply allowing Xen to span 2 consecutive 2MB
blocks, for it cannot deal with the different offsets within the page
( 0x80080000 % 2M != 0x80200000 % 2M). 

IMHO, there might be 3 ways to solve this problem:

1. If Xen bootstrap code detected it at an address not aligned with
2MB, then it copies itself to (x19 + 4M)\2M.

2. Modify LinuxLoader of EFI to load zImage at 2M aligned address.

3. Use smaller (e.g. 4K) page size in start-of-day page table.

> 
>> But I’m not sure whether there would be other
>>>> problems for it to boot Xen. And I’ll continue to work on it until
>>>> it can boot Xen successfully at the end.
>>> 
>>> Have fun ;-)
>>> 
>>>> (At least, there are early printk messages on the UART now, :-))
>>> 
>>>> 
>>>> Cheers,
>>>> 
>>>> Baozi


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.