Re: [PASEMI] Nemo board doesn't boot anymore because of moving pas_pci_init

From
Oliver O'Halloran <oohall@gmail.com>
Date
2021-02-24 02:18:43
Reply to
Michael Ellerman, 2021-02-24
On Wed, Feb 24, 2021 at 11:55 AM Michael Ellerman [off-list ref] wrote:
Olof Johansson [off-list ref] writes:
quoted
Hi,

On Tue, Feb 23, 2021 at 1:43 PM Christian Zigotzky
[off-list ref] wrote:
quoted
Hello,

The Nemo board [1] with a P.A. Semi PA6T SoC doesn't boot anymore
because of moving "pas_pci_init" to the device tree adoption [2] in the
latest PowerPC updates 5.12-1 [3].

Unfortunately the Nemo board doesn't have it in its device tree. I
reverted this commit and after that the Nemo board boots without any
problems.

What do you think about this ifdef?

#ifdef CONFIG_PPC_PASEMI_NEMO
         /*
          * Check for the Nemo motherboard here, if we are running on one
          * then pas_pci_init()
          */
         if (of_machine_is_compatible("pasemi,nemo")) {
                 pas_pci_init();
         }
#endif
This is not a proper fix for the problem. Someone will need to debug
what on the pas_pci_init() codepath still needs to happen early in the
boot, even if the main PCI setup happens later.
I looked but don't see anything 100% obvious.

Possibly it's the call to isa_bridge_find_early()?
Looks like it. I think the problem stems from the use of the PIO
helpers (mainly outb()) in i8259_init() which is called from
nemo_init_IRQ(). The PIO helpers require the ISA space to be mapped
and io_isa_base to be set since they take a PIO register address
rather than an MMIO address. It looks like there's a few other legacy
embedded platforms that might have the same problem.

I guess the real fix would be to decouple the ISA base address
discovery from the PHB discovery. That should be doable since it's all
discovered via DT anyway and we only support one ISA address range,
but it's a bit of work.
Thread (10 messages) 10 messages, 6 authors, last reply 2021-02-27
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help