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

Heinrich Schuchardt xypron.glpk at gmx.de
Thu Aug 24 04:11:16 CEST 2023



Am 24. August 2023 01:57:55 MESZ schrieb Simon Glass <sjg at chromium.org>:
>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
>

Acked-by: Heinrich Schuchardt <xypron.glpk at gmx.de>

>
>>
>> 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