All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikita Kiryanov <nikita@compulab.co.il>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2 10/13] spl: add support for alternative boot device
Date: Sat, 31 Oct 2015 17:39:56 +0200	[thread overview]
Message-ID: <20151031153956.GB27702@skynet> (raw)
In-Reply-To: <CAPnjgZ1kuj_3BWyLLBeueNt44GvitQpa79Q-pBp-jmW94oVPZQ@mail.gmail.com>

On Thu, Oct 29, 2015 at 11:19:51AM -0600, Simon Glass wrote:
> Hi Nikita,
> 
> On 28 October 2015 at 03:23, Nikita Kiryanov <nikita@compulab.co.il> wrote:
> > Introduce spl_boot_list array, which defines a list of boot devices
> > that SPL will try before hanging. By default this list will consist
> > of only spl_boot_device(), but board_boot_order() can be overridden
> > by board code to populate the array with custom values.
> >
> > Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
> > Cc: Igor Grinberg <grinberg@compulab.co.il>
> > Cc: Tom Rini <trini@konsulko.com>
> > Cc: Simon Glass <sjg@chromium.org>
> > ---
> > Changes in V2:
> >         - No changes.
> >
> >  common/spl/spl.c | 33 +++++++++++++++++++++++++++++----
> >  1 file changed, 29 insertions(+), 4 deletions(-)
> 
> How will we convert this to driver model? I'm worried that this might
> create a separate method which will live forever.

I don't see how this is related to driver model. This code just fills in
an array and iterates over it. Can you elaborate?

> 
> >
> > diff --git a/common/spl/spl.c b/common/spl/spl.c
> > index 56fccca..7913c52 100644
> > --- a/common/spl/spl.c
> > +++ b/common/spl/spl.c
> > @@ -178,6 +178,23 @@ int spl_init(void)
> >         return 0;
> >  }
> >
> > +#ifndef BOOT_DEVICE_NONE
> > +#define BOOT_DEVICE_NONE 0xdeadbeef
> > +#endif
> > +
> > +static u32 spl_boot_list[] = {
> > +       BOOT_DEVICE_NONE,
> > +       BOOT_DEVICE_NONE,
> > +       BOOT_DEVICE_NONE,
> > +       BOOT_DEVICE_NONE,
> > +       BOOT_DEVICE_NONE,
> > +};
> > +
> > +__weak void board_boot_order(u32 *spl_boot_list)
> > +{
> > +       spl_boot_list[0] = spl_boot_device();
> > +}
> > +
> >  static int spl_load_image(u32 boot_device)
> >  {
> >         switch (boot_device) {
> > @@ -247,7 +264,7 @@ static int spl_load_image(u32 boot_device)
> >
> >  void board_init_r(gd_t *dummy1, ulong dummy2)
> >  {
> > -       u32 boot_device;
> > +       int i;
> >
> >         debug(">>spl:board_init_r()\n");
> >
> > @@ -272,10 +289,18 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
> >         spl_board_init();
> >  #endif
> >
> > -       boot_device = spl_boot_device();
> > -       debug("boot device - %d\n", boot_device);
> > -       if (spl_load_image(boot_device))
> > +       board_boot_order(spl_boot_list);
> > +       for (i = 0; i < ARRAY_SIZE(spl_boot_list) &&
> > +                       spl_boot_list[i] != BOOT_DEVICE_NONE; i++) {
> > +               if (!spl_load_image(spl_boot_list[i]))
> > +                       break;
> > +       }
> > +
> > +       if (i == ARRAY_SIZE(spl_boot_list) ||
> > +           spl_boot_list[i] == BOOT_DEVICE_NONE) {
> > +               puts("SPL: failed to boot from all boot devices\n");
> >                 hang();
> > +       }
> >
> >         switch (spl_image.os) {
> >         case IH_OS_U_BOOT:
> > --
> > 1.9.1
> >
> 
> Regards,
> Simon
> 

  reply	other threads:[~2015-10-31 15:39 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-28  9:23 [U-Boot] [PATCH V2 00/13] SPL mmc refactor and alternate boot device feature Nikita Kiryanov
2015-10-28  9:23 ` [U-Boot] [PATCH V2 01/13] spl: nand: remove code duplication Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-10-28  9:23 ` [U-Boot] [PATCH V2 02/13] spl: mmc: add break statements in spl_mmc_load_image() Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-11-03 15:56   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 03/13] spl: mmc: refactor device location code to its own function Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-10-31 15:25     ` Nikita Kiryanov
2015-11-03 15:56   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 04/13] spl: mmc: remove #ifdef CONFIG_SPL_OS_BOOT check Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-11-03 15:56   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 05/13] spl: mmc: get rid of #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION check Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-11-03 15:56   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 06/13] spl: mmc: move fs boot into its own function Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-11-03 15:56   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 07/13] spl: mmc: get rid of emmc boot code duplication Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-11-03 15:56   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 08/13] spl: change return values of spl_*_load_image() Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-10-31 15:44     ` Nikita Kiryanov
2015-11-03 12:19   ` [U-Boot] [PATCH V3 " Nikita Kiryanov
2015-11-03 15:56     ` Tom Rini
2015-11-06  3:16     ` Simon Glass
2015-10-28  9:23 ` [U-Boot] [PATCH V2 09/13] common: spl: move image load to its own function Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-11-03 15:56   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 10/13] spl: add support for alternative boot device Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-10-31 15:39     ` Nikita Kiryanov [this message]
2015-11-03 15:56       ` Tom Rini
2015-11-06  3:15         ` Simon Glass
2015-11-03 15:57   ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 11/13] spl: announce boot devices Nikita Kiryanov
2015-10-29 17:19   ` Simon Glass
2015-11-03 12:10     ` Nikita Kiryanov
2015-11-03 12:20   ` [U-Boot] [PATCH V3 " Nikita Kiryanov
2015-11-03 15:56     ` Tom Rini
2015-10-28  9:23 ` [U-Boot] [PATCH V2 12/13] arm: mx6: cm-fx6: define fallback boot devices for spl Nikita Kiryanov
2015-11-03 15:57   ` Tom Rini
2015-11-04  9:47   ` Stefano Babic
2015-10-28  9:23 ` [U-Boot] [PATCH V2 13/13] spl: mmc: add support for BOOT_DEVICE_MMC2 Nikita Kiryanov
2015-11-03 15:57   ` 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=20151031153956.GB27702@skynet \
    --to=nikita@compulab.co.il \
    --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.