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
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>
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.
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
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
@@ -341,6 +342,10 @@ out:staticvoid__initpas_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
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
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