[PATCH 7/8] spl: x86: Avoid starting up PCI automatically in SPL

Simon Glass sjg at chromium.org
Thu Aug 24 01:57:55 CEST 2023


Hi Heinrich,

On Wed, 23 Aug 2023 at 14:19, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 8/23/23 20:47, Simon Glass wrote:
> > For x86 platforms, PCI is core to their operation and is managed in
> > arch-specific code. Each platform has its own way of doing this. For TPL
> > and some SPL implementations, the full driver model PCI is not used.
> >
> > A recent change enabled full PCI in TPL/SPL for all boards. This breaks
> > some x86 boards, so adjust it to skip that for x86.
>
> Could you, please, give some more detail?
>
> * Which boards are broken?

For example, chromebook_samus and chromebook_samus_tpl

> * Don't these boards have a pci_init() function?

Yes, the same one you are calling.

> * In what way does calling pci_init() lead to a failure?

It probes and sets up PCI devices and uses a lot of pre-alloc RAM.

>
> It would be preferable to have all architectures and boards use the same
> high level API. Excluding x86 here looks more like a (necessary) hack
> than like a target state.

Fair enough, but on x86 we access PCI long before driver model is up.
Generally we don't fully enumerate it in SPL as it is expensive. It is
also pointless, since U-Boot proper does it again later.

Regards,
Simon


>
> Best regards
>
> Heinrich
>
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> >   common/spl/spl.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/common/spl/spl.c b/common/spl/spl.c
> > index 0062f3f45d9..13d7b1a742f 100644
> > --- a/common/spl/spl.c
> > +++ b/common/spl/spl.c
> > @@ -800,7 +800,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
> >           IS_ENABLED(CONFIG_SPL_ATF))
> >               dram_init_banksize();
> >
> > -     if (CONFIG_IS_ENABLED(PCI)) {
> > +     if (CONFIG_IS_ENABLED(PCI) && !IS_ENABLED(CONFIG_X86)) {
> >               ret = pci_init();
> >               if (ret)
> >                       puts(SPL_TPL_PROMPT "Cannot initialize PCI\n");
>


More information about the U-Boot mailing list