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

Re: [Xen-devel] [PATCH v13 4/9] x86: add multiboot2 protocol support for EFI platforms



>>> On 31.01.17 at 15:23, <daniel.kiper@xxxxxxxxxx> wrote:
> On Tue, Jan 31, 2017 at 05:33:12AM -0700, Jan Beulich wrote:
>> >>> On 25.01.17 at 23:49, <daniel.kiper@xxxxxxxxxx> wrote:
>> > On Wed, Jan 25, 2017 at 04:20:30PM -0600, Doug Goldstein wrote:
>> > @@ -123,6 +116,15 @@ efi_platform:
>> >  .Lbad_ldr_nih: .asciz "ERR: EFI ImageHandle is not provided by 
>> > bootloader!"
>> >  .Lbad_efi_msg: .asciz "ERR: EFI IA-32 platforms are not supported!"
>> >
>> > +        .section .init.data, "a", @progbits
>>
>> This needs to be a writable section.
> 
> AIUI, it is by default but if you wish I can replace "a" with "aw" here.

To me it would smell like a binutils bug if any flag was added despite
the explicit setting here. Things would be different if you omitted
those arguments.

>> > +        /* Get topmost low-memory stack address. */
>> > +        add     $TRAMPOLINE_SPACE,%ecx
>>
>> The top-most address of the stack is
>> %ecx + TRAMPOLINE_SPACE + TRAMPOLINE_STACK_SPACE - 1.
>> Please don't add misleading comments.
> 
> Right, it is misleading. Do you think that:
> 
> Get the lowest low-memory stack address.
> 
> ...is better?

That or "bottom-most" (to avoid the double "low").

>> >          /*
>> > +         * Now trampoline_phys points to the following structure (lowest
>> > +         * address is at the top):
>> > +         *
>> > +         * +------------------------+
>> > +         * |    TRAMPOLINE_SPACE    |
>> > +         * +- - - - - - - - - - - - +
>> > +         * |       mbi struct       |
>> > +         * +------------------------+
>> > +         * | TRAMPOLINE_STACK_SPACE |
>> > +         * +------------------------+
>> > +         *
>> > +         * mbi struct lives at the end of TRAMPOLINE_SPACE. The rest of
>> > +         * TRAMPOLINE_SPACE is reserved for trampoline code and data.
>> > +         */
>>
>> Please can you clarify here that the MBI data grows downwards
>> from the beginning of the stack to the end of the trampoline?
> 
> OK, but I think that "beginning of the stack" should be replaced
> with "the end of TRAMPOLINE_SPACE" here.

That would be in lines with the #define-s, but not with the drawing
above (which btw also applies to the comment that's there above).

>> > --- a/xen/arch/x86/efi/stub.c
>> > +++ b/xen/arch/x86/efi/stub.c
>> > @@ -20,7 +20,8 @@
>> >  paddr_t __init noreturn efi_multiboot2(EFI_HANDLE ImageHandle,
>> >                                         EFI_SYSTEM_TABLE *SystemTable)
>> >  {
>> > -    CHAR16 *err = L"Xen does not have EFI code build in!!!\r\nSystem 
>> > halted!!!\r\n";
>> > +    static const CHAR16 __initconst err[] =
>> > +        L"(XEN) Xen does not have EFI code build in!\r\n(XEN) System 
>> > halted!\r\n";
>>
>> Why did you add these (XEN) prefixes?
> 
> To align message format with messages printed from most places. And I realized
> that it will be nice to do the same thing in head.S and the rest of EFI code.
> This way it is much easier to differentiate between a bootloader and Xen 
> messages.

I disagree. Those prefixes should be used only for messages ending
up in Xen's log.

>> > --- a/xen/arch/x86/xen.lds.S
>> > +++ b/xen/arch/x86/xen.lds.S
>> > @@ -334,5 +334,5 @@ ASSERT(IS_ALIGNED(trampoline_end,   4), "trampoline_end
>> > misaligned")
>> >  ASSERT(IS_ALIGNED(__bss_start,      8), "__bss_start misaligned")
>> >  ASSERT(IS_ALIGNED(__bss_end,        8), "__bss_end misaligned")
>> >
>> > -ASSERT((trampoline_end - trampoline_start) < MB_TRAMPOLINE_SIZE,
>> > +ASSERT((trampoline_end - trampoline_start) < TRAMPOLINE_SPACE,
>> >      "not enough room for trampoline")
>>
>> Didn't you mean to make sure there are at least two pages for
>> MBI data?
> 
> Do you wish plain number here or constant like MBI_SIZE defined somewhere.
> I think that constant is better thing.

I'd prefer MBI_SPACE_MIN (or whatever else making clear that this
is a bound, not an exact size).

Jan


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

 


Rackspace

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