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

Started by Christian Zigotzky on Feb 23, 2021 · 10 messages from 6 authors · Last reply Feb 27, 2021

open the first message on its own page

Message details and related content
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

Thanks,
Christian

[1] https://en.wikipedia.org/wiki/AmigaOne_X1000
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/arch/powerpc/platforms/pasemi/setup.c?id=b12b47249688915e987a9a2a393b522f86f6b7ab
[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b12b47249688915e987a9a2a393b522f86f6b7ab
Message details and related content
Hi,

On Tue, Feb 23, 2021 at 1:43 PM Christian Zigotzky
[off-list ref] wrote:
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.


-Olof
Message details and related content
Olof Johansson [off-list ref] writes:
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()?

static int __init pas_add_bridge(struct device_node *dev)
{
	...
	/*
	 * Scan for an isa bridge. This is needed to find the SB600 on the nemo
	 * and does nothing on machines without one.
	 */
	isa_bridge_find_early(hose);

	return 0;
}


cheers
Message details and related content
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.
Message details and related content
On 24 February 21 at 03:17am, Oliver O'Halloran wrote:
On Wed, Feb 24, 2021 at 11:55 AM Michael Ellerman [off-list ref] wrote:
quoted
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.

4 more quoted lines

Sorry because of the false statement of the boot issue. It was too late yesterday. If I understand it correctly then the position of the PCIE devices scan is at a new place. Therefore it doesn't work anymore. It hasn't nothing to do with the device tree adoption. We will use the following patch for reverting this commit for further testing the new kernels.
--- a/arch/powerpc/platforms/pasemi/setup.c     2021-02-23 21:40:04.835999708 +0100
+++ b/arch/powerpc/platforms/pasemi/setup.c     2021-02-23 21:46:04.560667045 +0100
@@ -144,6 +144,7 @@ static void __init pas_setup_arch(void)
        /* Setup SMP callback */
        smp_ops = &pas_smp_ops;
 #endif
+       pas_pci_init();

        /* Remap SDC register for doing reset */
        /* XXXOJN This should maybe come out of the device tree */
@@ -444,7 +445,6 @@ define_machine(pasemi) {
        .name                   = "PA Semi PWRficient",
        .probe                  = pas_probe,
        .setup_arch             = pas_setup_arch,
-       .discover_phbs          = pas_pci_init,
        .init_IRQ               = pas_init_IRQ,
        .get_irq                = mpic_get_irq,
        .restart                = pas_restart,

Latest Git kernel doesn't compile because of the LINUX_VERSION_CODE issue

Message details and related content
Hello,

I tried to compile the latest Git kernel today. Unfortunately it doesn't compile.

Error messages:

  CC      arch/powerpc/kernel/udbg_16550.o
In file included from ./include/linux/stackprotector.h:10:0,
                 from arch/powerpc/kernel/smp.c:35:
./arch/powerpc/include/asm/stackprotector.h: In function ‘boot_init_stack_canary’:
./arch/powerpc/include/asm/stackprotector.h:29:30: error: expected expression before ‘;’ token
  canary ^= LINUX_VERSION_CODE;
                              ^
scripts/Makefile.build:271: recipe for target 'arch/powerpc/kernel/smp.o' failed
make[2]: *** [arch/powerpc/kernel/smp.o] Error 1

----

drivers/media/cec/core/cec-api.c: In function ‘cec_adap_g_caps’:
drivers/media/cec/core/cec-api.c:85:35: error: expected expression before ‘;’ token
  caps.version = LINUX_VERSION_CODE;

----

I have found the bad commit. It's "Merge tag 'kbuild-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild" [1]

The changes in the Makefile (a/Makefile) are responsible for the compiling errors. [2]

I was able to revert this bad commit. After that it compiled without any problems.

Could you please compile the latest Git kernel and confirm this issue?

Thanks,
Christian

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6fbd6cf85a3be127454a1ad58525a3adcf8612ab
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/Makefile?id=6fbd6cf85a3be127454a1ad58525a3adcf8612ab

Re: Latest Git kernel doesn't compile because of the LINUX_VERSION_CODE issue

Message details and related content

Le 26/02/2021 à 13:34, Christian Zigotzky a écrit :
Hello,

I tried to compile the latest Git kernel today. Unfortunately it doesn't compile.
I have no such problem with latest git kernel.

Christophe
Error messages:

   CC      arch/powerpc/kernel/udbg_16550.o
In file included from ./include/linux/stackprotector.h:10:0,
                  from arch/powerpc/kernel/smp.c:35:
./arch/powerpc/include/asm/stackprotector.h: In function ‘boot_init_stack_canary’:
./arch/powerpc/include/asm/stackprotector.h:29:30: error: expected expression before ‘;’ token
   canary ^= LINUX_VERSION_CODE;
                               ^
scripts/Makefile.build:271: recipe for target 'arch/powerpc/kernel/smp.o' failed
make[2]: *** [arch/powerpc/kernel/smp.o] Error 1

----

drivers/media/cec/core/cec-api.c: In function ‘cec_adap_g_caps’:
drivers/media/cec/core/cec-api.c:85:35: error: expected expression before ‘;’ token
   caps.version = LINUX_VERSION_CODE;

----

I have found the bad commit. It's "Merge tag 'kbuild-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild" [1]

The changes in the Makefile (a/Makefile) are responsible for the compiling errors. [2]

I was able to revert this bad commit. After that it compiled without any problems.

Could you please compile the latest Git kernel and confirm this issue?

Thanks,
Christian

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6fbd6cf85a3be127454a1ad58525a3adcf8612ab

[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/Makefile?id=6fbd6cf85a3be127454a1ad58525a3adcf8612ab

Re: Latest Git kernel doesn't compile because of the LINUX_VERSION_CODE issue

Message details and related content
Hello Christophe,

Thanks a lot for compiling the latest git kernel.

I have solved the compiling issue through setting up a value for the SUBLEVEL variable in "a/Makefile". Before it wasn't necessary to set up a value for the SUBLEVEL variable.

Cheers,
Christian

On 26 February 21 at 5:10 pm, Christophe Leroy wrote:

Le 26/02/2021 à 13:34, Christian Zigotzky a écrit :
quoted
Hello,

I tried to compile the latest Git kernel today. Unfortunately it doesn't compile.
I have no such problem with latest git kernel.

Christophe
quoted
Error messages:

   CC      arch/powerpc/kernel/udbg_16550.o
In file included from ./include/linux/stackprotector.h:10:0,
                  from arch/powerpc/kernel/smp.c:35:
./arch/powerpc/include/asm/stackprotector.h: In function ‘boot_init_stack_canary’:
./arch/powerpc/include/asm/stackprotector.h:29:30: error: expected expression before ‘;’ token
   canary ^= LINUX_VERSION_CODE;
                               ^
scripts/Makefile.build:271: recipe for target 'arch/powerpc/kernel/smp.o' failed
make[2]: *** [arch/powerpc/kernel/smp.o] Error 1

----

drivers/media/cec/core/cec-api.c: In function ‘cec_adap_g_caps’:
drivers/media/cec/core/cec-api.c:85:35: error: expected expression before ‘;’ token
   caps.version = LINUX_VERSION_CODE;

----

I have found the bad commit. It's "Merge tag 'kbuild-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild" [1]

The changes in the Makefile (a/Makefile) are responsible for the compiling errors. [2]

I was able to revert this bad commit. After that it compiled without any problems.

Could you please compile the latest Git kernel and confirm this issue?

7 more quoted lines

Re: Latest Git kernel doesn't compile because of the LINUX_VERSION_CODE issue

Message details and related content
Le 27/02/2021 à 08:13, Christian Zigotzky a écrit :
Hello Christophe,

Thanks a lot for compiling the latest git kernel.

I have solved the compiling issue through setting up a value for the SUBLEVEL variable in "a/Makefile". Before it wasn't necessary to set up a value for the SUBLEVEL variable.
I see, so it is a regression introduced by commit 9b82f13e7ef3 ("kbuild: clamp SUBLEVEL to 255").

In the past there had already been such a regression at some point, which had then been fixed by commit cacd54ef49b7 ("kbuild: Fix KERNELVERSION for empty SUBLEVEL or PATCHLEVEL")

Sasha, can you fix it ?

Thanks
Christophe

Cheers,
Christian

On 26 February 21 at 5:10 pm, Christophe Leroy wrote:
quoted

Le 26/02/2021 à 13:34, Christian Zigotzky a écrit :
quoted
Hello,

I tried to compile the latest Git kernel today. Unfortunately it doesn't compile.
I have no such problem with latest git kernel.

Christophe
quoted
Error messages:

   CC      arch/powerpc/kernel/udbg_16550.o
In file included from ./include/linux/stackprotector.h:10:0,
                  from arch/powerpc/kernel/smp.c:35:
./arch/powerpc/include/asm/stackprotector.h: In function ‘boot_init_stack_canary’:
./arch/powerpc/include/asm/stackprotector.h:29:30: error: expected expression before ‘;’ token
   canary ^= LINUX_VERSION_CODE;
                               ^
scripts/Makefile.build:271: recipe for target 'arch/powerpc/kernel/smp.o' failed
make[2]: *** [arch/powerpc/kernel/smp.o] Error 1

----

drivers/media/cec/core/cec-api.c: In function ‘cec_adap_g_caps’:
drivers/media/cec/core/cec-api.c:85:35: error: expected expression before ‘;’ token
   caps.version = LINUX_VERSION_CODE;

----

I have found the bad commit. It's "Merge tag 'kbuild-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild" [1]

The changes in the Makefile (a/Makefile) are responsible for the compiling errors. [2]

12 more quoted lines

Re: Latest Git kernel doesn't compile because of the LINUX_VERSION_CODE issue

Message details and related content
On Sat, Feb 27, 2021 at 4:34 PM Christophe Leroy
[off-list ref] wrote:

Le 27/02/2021 à 08:13, Christian Zigotzky a écrit :
quoted
Hello Christophe,

Thanks a lot for compiling the latest git kernel.

I have solved the compiling issue through setting up a value for the SUBLEVEL variable in
"a/Makefile". Before it wasn't necessary to set up a value for the SUBLEVEL variable.
I see, so it is a regression introduced by commit 9b82f13e7ef3 ("kbuild: clamp SUBLEVEL to 255").

In the past there had already been such a regression at some point, which had then been fixed by
commit cacd54ef49b7 ("kbuild: Fix KERNELVERSION for empty SUBLEVEL or PATCHLEVEL")

Sasha, can you fix it ?


Thanks for catching this.

I submitted a patch:
https://lore.kernel.org/patchwork/patch/1385119/





Thanks
Christophe

quoted
Cheers,
Christian

On 26 February 21 at 5:10 pm, Christophe Leroy wrote:
quoted

Le 26/02/2021 à 13:34, Christian Zigotzky a écrit :
quoted
Hello,

I tried to compile the latest Git kernel today. Unfortunately it doesn't compile.
I have no such problem with latest git kernel.

Christophe
quoted
Error messages:

   CC      arch/powerpc/kernel/udbg_16550.o
In file included from ./include/linux/stackprotector.h:10:0,
                  from arch/powerpc/kernel/smp.c:35:
./arch/powerpc/include/asm/stackprotector.h: In function ‘boot_init_stack_canary’:
./arch/powerpc/include/asm/stackprotector.h:29:30: error: expected expression before ‘;’ token
   canary ^= LINUX_VERSION_CODE;
                               ^
scripts/Makefile.build:271: recipe for target 'arch/powerpc/kernel/smp.o' failed
make[2]: *** [arch/powerpc/kernel/smp.o] Error 1

----

drivers/media/cec/core/cec-api.c: In function ‘cec_adap_g_caps’:
drivers/media/cec/core/cec-api.c:85:35: error: expected expression before ‘;’ token
   caps.version = LINUX_VERSION_CODE;

----

19 more quoted lines



-- 
Best Regards
Masahiro Yamada
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