All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerry Van Baren <gerald.vanbaren@ge.com>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] outline of bootm script
Date: Wed, 06 Aug 2008 15:55:15 -0400	[thread overview]
Message-ID: <489A01A3.6000800@ge.com> (raw)
In-Reply-To: <5E53E387-237D-480E-A046-68AD7F9B90A5@kernel.crashing.org>

Kumar Gala wrote:
> On Aug 5, 2008, at 9:33 PM, Jerry Van Baren wrote:
> 
>> Kumar Gala wrote:
>>> here's a rough start at an outline for the bootm script based on  
>>> the  code (I've only outlined the Linux/PPC boot case its seems the  
>>> most  complicated).  One of the first things we clearly need is a  
>>> imload  command.  Thoughts on the various disable_{interrupts, usb,  
>>> caches} ?
>>> - k
>> Another rough start on an outline (only cmd_bootm.c, need to add  
>> image.c information):
>>  <http://www.denx.de/wiki/view/U-Boot/UBootFdtInfo#Refactoring_bootm>
>>
>> Goal is to identify the major pieces of the sequence, identify what  
>> commands we have and what we need to make a scripted equivalent  
>> sequence for (ultimately) each path through the sequence.
> 
> I added a few bullets about functionality I'd like to see the new  
> sequence to be capable of it.

Thanks for updating the page.

> one idea is having "stages" of bootm handled as sub commands:
> 
> bootm start <args>
> bootm prep    (disable interrupts, stop usb, disable caches)
> bootm load_os (decompress OS image)
> bootm load_fdt(relocates fdt to proper place, setup bootargs, initrd  
> prep, board setup?? [or do via fdt boardsetup command])

fdt boardsetup - absolutely!

> bootm load_initrd
> bootm jump
> 
> bootm restore (undo anything prep did, reset state tracking)

Ooo, that sounds hard.  If we are only re-enabling interrupts/usb/caches 
it probably is manageable, but my hackles.

> And we keep state around so the next stage can run w/o a lot of  
> arguments and you have to execute these in order, and only once.  But  
> you can intermix other commands between the stages.
> 
> We could also have some "bootm query <foo>" to expose the internal  
> state if that's useful.  We could completely get rid of the various  
> "env" vars that impact bootm and just make them state variables  
> ("verify", "autostart", "bootm_size", "bootm_low", ...)

State is bad.

Aside: verify should be an image verify command, not a env variable flag 
(see below).  This is probably true of most of the current env 
variables: the reason we need them is because we kept throwing stuff 
into "bootm" and then controlling it with env variables rather than 
having a sequence and controlling it with what commands are in the 
sequence.  (Part of my simplification argument...)

> Also, bootm would be the sequence of:
>    bootm start <args>
>    bootm prep
>    bootm load_os
>    bootm load_fdt
>    bootm load_initrd
>    bootm jump
> 
> comments?
> 
> - k

I also was thinking we should invent a new major/minor command as you 
outlined, but it didn't occur to me that "bootm" would be a good major 
command.  This is a good idea: a bare "bootm <addr> (<addr>|-) <addr>" 
could be used for backward compatibility and "bootm <subcmd>" for New 
Improved[tm] functionality.

Having said that, I was thinking and would advocate pushing 
functionality out of bootm and into other commands, as appropriate.  As 
an example, bootm doesn't need to do *any* fdt stuff, the "fdt" built-in 
has all the capability we need (or should).  The same may be also true 
about load_os and load_initrd - they are copy-with-(optional)-
decompression operations (we may need additional commands for these).

Philosophy: bootm should do only bootm stuff.  It (probably) should not 
do any image stuff (find/copy/decompress/verify).  It (probably) should 
not do any fdt stuff (board fixup, other?).  Etc...

Thanks,
gvb

  parent reply	other threads:[~2008-08-06 19:55 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-05 14:35 [U-Boot-Users] outline of bootm script Kumar Gala
2008-08-06  2:33 ` Jerry Van Baren
2008-08-06 19:15   ` Kumar Gala
2008-08-06 19:41     ` Wolfgang Denk
2008-08-06 20:05       ` Kumar Gala
2008-08-06 20:26         ` Wolfgang Denk
2008-08-06 20:33           ` Kumar Gala
2008-08-06 19:55     ` Jerry Van Baren [this message]
2008-08-06 20:19       ` Kumar Gala
2008-08-06 20:36         ` Wolfgang Denk
2008-08-06 20:45           ` Kumar Gala
2008-08-06 21:15             ` Wolfgang Denk
2008-08-06 21:37               ` Kumar Gala
2008-08-06 22:00                 ` Wolfgang Denk
2008-08-06 22:09                 ` [U-Boot-Users] bootm -- load_os inputs/outputs Kumar Gala
2008-08-06 20:39         ` [U-Boot-Users] outline of bootm script Jerry Van Baren
2008-08-06 20:21       ` Wolfgang Denk
2008-08-06 20:29         ` Jerry Van Baren

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=489A01A3.6000800@ge.com \
    --to=gerald.vanbaren@ge.com \
    --cc=u-boot@lists.denx.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.