[U-Boot] [PATCH 3/4] x86: Force the lib_sysinfo structure to be in the .data section

Gabe Black gabeblack at chromium.org
Fri Dec 2 22:27:19 CET 2011


On Fri, Dec 2, 2011 at 1:22 PM, Graeme Russ <graeme.russ at gmail.com> wrote:

> Hi Gabe,
>
> On 03/12/11 08:16, Gabe Black wrote:
> >
> >
> > On Fri, Dec 2, 2011 at 1:10 PM, Graeme Russ <graeme.russ at gmail.com
> > <mailto:graeme.russ at gmail.com>> wrote:
> >
> >     Hi Gabe,
> >
> >     On 30/11/11 17:07, Gabe Black wrote:
> >     > Otherwise it ends up in the .bss section. U-boot assumes that it
> doesn't
> >     > need to copy it over during relocation, and instead fills that
> whole
> >     > section with zeroes. If we really were booting from ROM that would
> be
> >     > appropriate, but we need some information from the coreboot tables
> >     (memory
> >     > size) before then and have to fill that structure before
> relocation. We
> >     > skirt u-boot's assumption by putting this in .data where it
> assumes there
> >     > is still read only but non-zero data.
> >     >
> >     > Signed-off-by: Gabe Black <gabeblack at chromium.org
> >     <mailto:gabeblack at chromium.org>>
> >     > ---
> >     >  arch/x86/cpu/coreboot/sysinfo.c |    8 +++++++-
> >     >  1 files changed, 7 insertions(+), 1 deletions(-)
> >     >
> >     > diff --git a/arch/x86/cpu/coreboot/sysinfo.c
> >     b/arch/x86/cpu/coreboot/sysinfo.c
> >     > index 464f8a1..e74fe0a 100644
> >     > --- a/arch/x86/cpu/coreboot/sysinfo.c
> >     > +++ b/arch/x86/cpu/coreboot/sysinfo.c
> >     > @@ -30,4 +30,10 @@
> >     >
> >     >  #include <asm/ic/coreboot/sysinfo.h>
> >     >
> >     > -struct sysinfo_t lib_sysinfo;
> >     > +/*
> >     > + * This needs to be in the .data section so that it's copied over
> during
> >     > + * relocation. By default it's put in the .bss section which is
> >     simply filled
> >     > + * with zeroes when transitioning from "ROM", which is really RAM,
> >     to other
> >     > + * RAM.
> >     > + */
> >     > +struct sysinfo_t lib_sysinfo __attribute__((section(".data")));
> >
> >     I think this can be logically folded into the first patch
> >
> >     Regards,
> >
> >     Graeme
> >
> >
> > I would rather not do that since the first patch is, modulo checkpatch
> and
> > build fixes, just importing that code from coreboot's libpayload. This
> > change is making an important, non-obvious change which makes it work
> > properly within u-boot. These are two different things, and one way or
> the
> > other this one is important enough to be singled out as its own change
> and
> > not lost in the midst of the other.
>
> I agree that is a logical position to take, however I think that the fact
> that you introduce a commit which is known to be 'broken' is the overriding
> factor - Include to fact that the modification is made in the commit
> message and the comment like:
>
> /*
>  * Note: U-Boot needs this to be in the .data section so....
>  * ...
>  */
>
> Also, can you supply any specific commit id(s) for the originating source -
> We typically try to include as much canonical information to identify the
> source to a particular commit
>
> Regards,
>
> Graeme
>


These commits were originally put together many months ago, so the exact
version of the original source is lost.


More information about the U-Boot mailing list