All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Denk <wd@denx.de>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: "Pali Rohár" <pali@kernel.org>,
	"Christophe Leroy" <christophe.leroy@c-s.fr>,
	"Simon Glass" <sjg@chromium.org>,
	"Heinrich Schuchardt" <xypron.glpk@gmx.de>,
	"Alexander Graf" <agraf@csgraf.de>,
	"Huan Wang" <alison.wang@nxp.com>,
	"Angelo Dureghello" <angelo@sysam.it>,
	"Priyanka Jain" <priyanka.jain@nxp.com>,
	"Bin Meng" <bmeng.cn@gmail.com>,
	"Marek Behún" <marek.behun@nic.cz>,
	"Tom Rini" <trini@konsulko.com>,
	u-boot@lists.denx.de
Subject: Re: [PATCH v2] powerpc: mpc: Put U-Boot version string at correct place by linker script
Date: Tue, 24 Aug 2021 11:46:40 +0200	[thread overview]
Message-ID: <96716.1629798400@gemini.denx.de> (raw)
In-Reply-To: <75ae39aa-3762-6b90-c39a-7595fc417870@csgroup.eu>

Dear Christophe,

In message <75ae39aa-3762-6b90-c39a-7595fc417870@csgroup.eu> you wrote:
> 
> > Also, could you look at this, why version string is at specific location
> > of u-boot.bin header?
>
> I have no idea. AFAIKS it's been like that since the first version
> in git in 2002. Maybe Wolfgang has the answer ?

The Power Architecture was the very first where PPCBoot / U-Boot were
running, more than 20 years ago. At that time, resources were tight.
Systems would typically boot from a small NOR flash.  Typical
configurations came with 4 MB NOR / 16 MB RAM or such.

One problem was that you needed always at least one (or better two,
with redundancy) full sectors of the flash for the environment, even
though this was typically only a few hundred bytes long.  Many NOR
flash chips of that time did not have uniform sector sizes; instead,
they would come with mixed sector sizes.

For example, there were NOR flash chips which came with sector sizes
of 8, 4, 4, 16, 32, 32, 32, 32, ... kB.

Here you would naturally want to use the two small 4 kB sectors for
the environment, but this results in the need to have the
environment storage "embedded" within the U-Boot image.  This
resulted in the need to come up with special linker scripts.  And of
course you would try to use the first 8 kB sector as good as
possible, which was achieved by used manually optimized linker
scripts, collecting functions or other objects such that the wasted
gap at the end of the first sector was minimal - usually less than
100 bytes were wasted.

As part of such optimizations, it might have made sense to put the
version string there, too - it has a fixed size of a few ten bytes,
so it is a good candidate to fill the gap.


Today, such boot sector NOR flashes are no longer found in new
designs, nor does anybody care to keep U-Boot small and tidy.
As a result, knowledge about such optimizations is disappearing.


Hope this helps.



Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
"If you want to eat hippopotamus, you've got to pay the freight."   -
attributed to an IBM guy, about why IBM software uses so much memory

  reply	other threads:[~2021-08-24  9:47 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-02 13:18 [PATCH 00/11] Reduce usage of timestamp macros Pali Rohár
2021-08-02 13:18 ` [PATCH 01/11] Remove #include <timestamp.h> from files which do not need it Pali Rohár
2021-08-02 13:58   ` Tom Rini
2021-09-23  2:07   ` Tom Rini
2021-08-02 13:18 ` [PATCH 02/11] Remove #include <version.h> " Pali Rohár
2021-08-02 13:58   ` Tom Rini
2021-09-23  2:07   ` Tom Rini
2021-08-02 13:18 ` [PATCH 03/11] efi_loader: Use directly version_string variable Pali Rohár
2021-08-02 20:04   ` Heinrich Schuchardt
2021-08-03  7:37     ` Ilias Apalodimas
2021-09-23  2:07   ` Tom Rini
2021-08-02 13:18 ` [PATCH 04/11] version: Move version_string[] from version.h to version_string.h Pali Rohár
2021-08-02 13:58   ` Tom Rini
2021-09-23  2:08   ` Tom Rini
2021-08-02 13:18 ` [PATCH 05/11] m68k: mcf: Remove overloading version_string Pali Rohár
2021-09-23  2:08   ` Tom Rini
2021-08-02 13:18 ` [PATCH 06/11] version: Put version_string[] variable into section .text_version_string Pali Rohár
2021-08-02 13:58   ` Tom Rini
2021-09-16 17:30   ` [PATCH] xtensa: Put U-Boot version string at correct place by linker script Tom Rini
2021-09-16 19:38     ` Francesco Dolcini
2021-09-16 19:42       ` Tom Rini
2021-09-16 19:50         ` Francesco Dolcini
2021-09-16 20:13           ` Tom Rini
2021-09-16 20:23             ` Francesco Dolcini
2021-09-17  5:21         ` Max Filippov
2021-09-17 12:02           ` Tom Rini
2021-09-17  5:14     ` Max Filippov
2021-09-17 12:04       ` Tom Rini
2021-09-17 12:30         ` Max Filippov
2021-08-02 13:18 ` [PATCH 07/11] powerpc: mpc: " Pali Rohár
2021-08-08 11:20   ` [PATCH v2] " Pali Rohár
2021-08-08 11:36     ` Pali Rohár
2021-08-24  5:03       ` Christophe Leroy
2021-08-24  9:46         ` Wolfgang Denk [this message]
2021-08-24  5:28     ` Christophe Leroy
2021-08-24 11:28       ` Pali Rohár
2021-09-16 19:17     ` Tom Rini
2021-09-16 19:56   ` [PATCH 1/1] powerpc: Drop version_string placement optimization Tom Rini
2021-09-23  2:09     ` Tom Rini
2021-08-02 13:18 ` [PATCH 08/11] version: Do not make version_string[] variable as a weak Pali Rohár
2021-08-02 13:58   ` Tom Rini
2021-09-23  2:08   ` Tom Rini
2021-08-02 13:18 ` [PATCH 09/11] x86: quark: MRC: Remove U_BOOT_DATE and U_BOOT_TIME from debug log Pali Rohár
2021-08-02 19:21   ` Simon Glass
2021-08-02 23:25   ` Bin Meng
2021-09-23  2:08   ` Tom Rini
2021-08-02 13:18 ` [PATCH 10/11] version: Remove global macro U_BOOT_VERSION_STRING from version.h Pali Rohár
2021-08-02 13:59   ` Tom Rini
2021-09-23  2:08   ` Tom Rini
2021-08-02 13:18 ` [PATCH 11/11] Remove including timestamp.h in version.h Pali Rohár
2021-08-02 19:21   ` Simon Glass
2021-08-02 19:42     ` Pali Rohár
2021-08-02 21:31       ` Tom Rini
2021-08-04  5:59         ` Wolfgang Denk
2021-08-04 12:44           ` Tom Rini
2021-08-04 14:36             ` Simon Glass
2021-08-04 14:40               ` Tom Rini
2021-08-04 21:46                 ` Pali Rohár
2021-08-04 21:43     ` Sean Anderson
2021-08-04 21:52       ` Pali Rohár
2021-08-04 22:09       ` Tom Rini
2021-08-04 22:14         ` Pali Rohár
2021-08-04 22:15           ` Tom Rini
2021-08-04 22:22             ` Pali Rohár
2021-09-23  2:08   ` Tom Rini
2021-08-17 11:02 ` [PATCH 00/11] Reduce usage of timestamp macros Pali Rohár
2021-08-17 13:40   ` Tom Rini
2021-09-01 20:59 ` Tom Rini
2021-09-01 21:05   ` Pali Rohár
2021-09-01 21:17     ` Tom Rini
2021-09-01 21:28       ` Pali Rohár
2021-09-01 21:33         ` Tom Rini
2021-09-01 21:44           ` Pali Rohár
2021-09-01 21:49             ` Pali Rohár
2021-09-10 20:56               ` Pali Rohár
2021-09-10 21:18                 ` Tom Rini
2021-09-01 21:56             ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=96716.1629798400@gemini.denx.de \
    --to=wd@denx.de \
    --cc=agraf@csgraf.de \
    --cc=alison.wang@nxp.com \
    --cc=angelo@sysam.it \
    --cc=bmeng.cn@gmail.com \
    --cc=christophe.leroy@c-s.fr \
    --cc=christophe.leroy@csgroup.eu \
    --cc=marek.behun@nic.cz \
    --cc=pali@kernel.org \
    --cc=priyanka.jain@nxp.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.