[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [MULTIBOOT2 SPEC PATCH V2] multiboot2: Add module load and preferenc
From: |
Chen, Zide |
Subject: |
RE: [MULTIBOOT2 SPEC PATCH V2] multiboot2: Add module load and preference tag |
Date: |
Wed, 13 May 2020 22:46:33 +0000 |
Hi Daniel,
> -----Original Message-----
> From: Daniel Kiper <address@hidden>
> Sent: Wednesday, May 13, 2020 8:54 AM
> To: Chen, Zide <address@hidden>
> Cc: address@hidden
> Subject: Re: [MULTIBOOT2 SPEC PATCH V2] multiboot2: Add module load and
> preference tag
>
> > diff --git a/doc/multiboot.texi b/doc/multiboot.texi
> > index df8a0d056e76..758ef7fd1e2d 100644
> > --- a/doc/multiboot.texi
> > +++ b/doc/multiboot.texi
> > @@ -356,6 +356,7 @@ executable header.
> > * Module alignment tag::
> > * EFI boot services tag::
> > * Relocatable header tag::
> > +* Module load preferences tag::
>
> Please bump spec version to 2.1.
OK, will do it, also will add 2020 to the copyright in configure.ac.
> > @end menu
> >
> > @@ -730,6 +731,46 @@ Boot loader should follow it. @samp{0} means none,
> > @samp{1} means
> > load image at lowest possible address but not lower than min_addr
> > and @samp{2} means load image at highest possible address but not
> > higher than max_addr.
> > +
> > +@node Module load preferences tag
> > +@subsection Module load preferences tag
> > +
> > +@example
> > +@group
> > + +-------------------+
> > +u16 | type = 11 |
> > +u16 | flags |
> > +u32 | size = 20 |
> > +u32 | min_addr |
> > +u32 | max_addr |
>
> I have an itching to add "align" member here like in the relocatable
> header tag. I can imagine that some kernels may want aligned modules. If
> you do that then we have to resolve conflict with the module alignment
> tag. I think if both tags are in the image header then the bootloader
> should use max(align, PAGE_SIZE). This behavior should be described in
> one way or another next to both tags.
Yes, I thought about the align member.
Sure, I can add the it to the spec. Since we give user the flexibility to
specify alignment,
why we would overwrite user's choice to force it to minimum PAGE_SIZE aligned?
How about pick the maximum alignment of the two tags?
But in GRUB's implementation, since GRUB ignores the module alignment tag, the
behavior
Could be these:
If align is zero in this tag: module alignment is PAGE_SIZE (
If align is none-zero, Grub will use whatever value it is to load modules.
> > +u32 | preference |
> > + +-------------------+
> > +@end group
> > +@end example
> > +
>
> Please describe shortly what this tag does. You can find good example in
> relocatable header tag.
OK.
> > +This tag is independent to the relocatable header tag. All of the
>
> This sentence should go to the end of the tag description.
OK.
> > +address fields in this tag are physical addresses.
> > +
> > +The meaning of each field is as follows:
> > +
> > +@table @code
> > +@item min_addr
> > +Lowest possible physical address at which any modules should be
> > +loaded. The bootloader cannot load any part of any modules below
> > +this address.
> > +
> > +@item max_addr
> > +Highest possible physical address at which any loaded modules should
> > +end. The bootloader cannot load any part of any modules above this
> > +address.
> > +
> > +@item preference
> > +It contains load address placement suggestion for boot loader.
> > +Boot loader should follow it. @samp{0} means load modules not lower
> > +than min_addr and not higher than max_addr, but no preference on either
> > +lower or higher address. @samp{1} means load modules at lowest possible
> > +address but not lower than min_addr. @samp{2} means load modules at
> > +highest possible address but not higher than max_addr.
>
> Please copy preference description from relocatable header tag and
> replace "image" with "module".
Will do.
Best Regards,
Zide
> Daniel