
Am 24. August 2023 01:57:55 MESZ schrieb Simon Glass sjg@chromium.org:
Hi Heinrich,
On Wed, 23 Aug 2023 at 14:19, Heinrich Schuchardt xypron.glpk@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@gmx.de
Best regards
Heinrich
Signed-off-by: Simon Glass sjg@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");