Proposed: Patch to fix boot on PA6T

8 messages, 5 authors, 2016-06-29 · open the first message on its own page

Proposed: Patch to fix boot on PA6T

From: Darren Stevens <hidden>
Date: 2016-06-26 18:44:42

Hello All,

    commit d6a9996e84ac4beb7713e9485f4563e100a9b03e
    powerpc/mm: vmalloc abstraction in preparation for radix

    This commit introduced variables for some linux kernel addresses that had
before
    been constants, unfortunately this stopped PaSemi PA6T systems(*) from
booting as
    they call ioremap to map SoC registers before the mmu is initialised. The
attached
    patch adds a hard-coded init of pci_io_base to the pas_init_early()
function which
    which allows the kernel to boot normally.

    The value will be harmlessly set again once pci starts up.

    (*) At the moment this has only been tested on an AmigaOneX1000, but I
expect PaSemi
    reference systems to have been affected in the same way.

Kind regards
Darren

Re: Proposed: Patch to fix boot on PA6T

From: Christian Zigotzky <hidden>
Date: 2016-06-26 20:14:50

Hi Darren,

Fantastic news! I'll test your patch with the RC5 tomorrow. Excellent work! W=
ell done!

- Christian

Sent from my iPhone
On 26 Jun 2016, at 18:42, Darren Stevens [off-list ref] wrote:
=20
Hello All,
=20
   commit d6a9996e84ac4beb7713e9485f4563e100a9b03e
   powerpc/mm: vmalloc abstraction in preparation for radix
=20
   This commit introduced variables for some linux kernel addresses that h=
ad
before
   been constants, unfortunately this stopped PaSemi PA6T systems(*) from
booting as
   they call ioremap to map SoC registers before the mmu is initialised. T=
he
attached
   patch adds a hard-coded init of pci_io_base to the pas_init_early()
function which
   which allows the kernel to boot normally.
=20
   The value will be harmlessly set again once pci starts up.
=20
   (*) At the moment this has only been tested on an AmigaOneX1000, but I
expect PaSemi
   reference systems to have been affected in the same way.
=20
Kind regards
Darren
<pa6t-bootfix.patch>

Re: Proposed: Patch to fix boot on PA6T

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2016-06-26 22:50:15

On Sun, 2016-06-26 at 18:42 +0100, Darren Stevens wrote:
    commit d6a9996e84ac4beb7713e9485f4563e100a9b03e
    powerpc/mm: vmalloc abstraction in preparation for radix

    This commit introduced variables for some linux kernel addresses that had
before been constants, unfortunately this stopped PaSemi PA6T systems(*) from
booting as they call ioremap to map SoC registers before the mmu is initialised. The
attached patch adds a hard-coded init of pci_io_base to the pas_init_early()
function which which allows the kernel to boot normally.
Tell me more, when is that mapping done ? I'm changing things so that
platform probe is called much later so that might have an impact.

What consumes pci_io_base before it's been initialized ?
    The value will be harmlessly set again once pci starts up.

    (*) At the moment this has only been tested on an AmigaOneX1000, but I
expect PaSemi
    reference systems to have been affected in the same way.

Re: Proposed: Patch to fix boot on PA6T

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2016-06-28 10:51:03

Hi Darren,

On Sun, 2016-26-06 at 17:42:11 UTC, Darren Stevens wrote:
Hello All,

    commit d6a9996e84ac4beb7713e9485f4563e100a9b03e
    powerpc/mm: vmalloc abstraction in preparation for radix

    This commit introduced variables for some linux kernel addresses that had before
    been constants, unfortunately this stopped PaSemi PA6T systems(*) from  booting as
    they call ioremap to map SoC registers before the mmu is initialised. The attached
    patch adds a hard-coded init of pci_io_base to the pas_init_early() function which
    which allows the kernel to boot normally.

    The value will be harmlessly set again once pci starts up.

    (*) At the moment this has only been tested on an AmigaOneX1000, but I expect PaSemi
    reference systems to have been affected in the same way.

Kind regards
Darren
I can't merge this because you didn't sign it off.

See section 11 of:

  https://www.kernel.org/doc/Documentation/SubmittingPatches

cheers

Re: Proposed: Patch to fix boot on PA6T

From: Aneesh Kumar K.V <hidden>
Date: 2016-06-28 14:19:49

Darren Stevens [off-list ref] writes:
quoted hunk
Hello All,

    commit d6a9996e84ac4beb7713e9485f4563e100a9b03e
    powerpc/mm: vmalloc abstraction in preparation for radix

    This commit introduced variables for some linux kernel addresses that had
before
    been constants, unfortunately this stopped PaSemi PA6T systems(*) from
booting as
    they call ioremap to map SoC registers before the mmu is initialised. The
attached
    patch adds a hard-coded init of pci_io_base to the pas_init_early()
function which
    which allows the kernel to boot normally.

    The value will be harmlessly set again once pci starts up.

    (*) At the moment this has only been tested on an AmigaOneX1000, but I
expect PaSemi
    reference systems to have been affected in the same way.

Kind regards
Darren
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index d71b2c7..6b8d2ab 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -61,6 +61,7 @@ static struct mce_regs mce_regs[MAX_MCE_REGS];
 static int num_mce_regs;
 static int nmi_virq = NO_IRQ;
 
+extern unsigned long pci_io_base;
 
 static void pas_restart(char *cmd)
 {
@@ -341,6 +342,10 @@ out:
 
 static void __init pas_init_early(void)
 {
+	/* Initialise the IO pointer so we don't crash on boot */
+
+	pci_io_base = (H_KERN_VIRT_START + (H_KERN_VIRT_SIZE >> 1));
+
 	iommu_init_early_pasemi();
 }
 
Another option is to init it along with rest of the variables as done in
hash__early_init_mmu(void)/radix__early_init_mmu(void)


-aneesh

Re: Proposed: Patch to fix boot on PA6T

From: Darren Stevens <hidden>
Date: 2016-06-29 21:09:10

Hello Benjamin

On 27/06/2016, Benjamin Herrenschmidt wrote:
Tell me more, when is that mapping done ? I'm changing things so that
platform probe is called much later so that might have an impact.

What consumes pci_io_base before it's been initialized ?
pas_pci_init() is the culprit. Following on from Aneesh's suggestion an
improved patch will follow shoertly.

Regards
Darren

Re: Proposed: Patch to fix boot on PA6T

From: Darren Stevens <hidden>
Date: 2016-06-29 21:17:45

Hello Michael
I can't merge this because you didn't sign it off.
TBH I wasn't really expecting you too.
See section 11 of:

  https://www.kernel.org/doc/Documentation/SubmittingPatches
Read and understood (I hope)..

Regards
Darren

Re: Proposed: Patch to fix boot on PA6T

From: Darren Stevens <hidden>
Date: 2016-06-29 21:22:55

Hello Aneesh

On 28/06/2016, Aneesh Kumar K.V wrote:
Another option is to init it along with rest of the variables as done in
hash__early_init_mmu(void)/radix__early_init_mmu(void)
*FACEPALM* Why didn't I think of that! I've made this change and seems to work
- obviously I can't test on a Radix system though, as I don't have access to
one.

Patch comming shortly

Regards
Darren
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help