[PATCH v2] powerpc/powernv: Initialise nest mmu
Michael Ellerman
mpe at ellerman.id.au
Sat Dec 3 21:56:22 AEDT 2016
Balbir Singh <bsingharora at gmail.com> writes:
> <snip>
>
>> static void __init radix_init_partition_table(void)
>> {
>> - unsigned long rts_field;
>> + unsigned long rts_field, ptcr;
>
> I think these functions have changed, check for conflicts against
> http://git.kernel.org/cgit/linux/kernel/git/paulus/powerpc.git/commit/?h=kvm-ppc-next&id=9d66195807ac6cb8a14231fd055ff755977c5fca
They did, I ended up with:
https://github.com/linuxppc/linux/commit/fb7314c5d6b00dbaaac14c28a52a87dee7e726df
modified arch/powerpc/mm/pgtable_64.c
@@ -44,6 +44,7 @@
#include <asm/mmu_context.h>
#include <asm/pgtable.h>
#include <asm/mmu.h>
+#include <asm/opal.h>
#include <asm/smp.h>
#include <asm/machdep.h>
#include <asm/tlb.h>
@@ -435,7 +436,7 @@ void pgtable_free_tlb(struct mmu_gather *tlb, void *table, int shift)
#ifdef CONFIG_PPC_BOOK3S_64
void __init mmu_partition_table_init(void)
{
- unsigned long patb_size = 1UL << PATB_SIZE_SHIFT;
+ unsigned long ptcr, patb_size = 1UL << PATB_SIZE_SHIFT;
BUILD_BUG_ON_MSG((PATB_SIZE_SHIFT > 36), "Partition table size too large.");
partition_tb = __va(memblock_alloc_base(patb_size, patb_size,
@@ -448,7 +449,9 @@ void __init mmu_partition_table_init(void)
* update partition table control register,
* 64 K size.
*/
- mtspr(SPRN_PTCR, __pa(partition_tb) | (PATB_SIZE_SHIFT - 12));
+ ptcr = __pa(partition_tb) | (PATB_SIZE_SHIFT - 12);
+ mtspr(SPRN_PTCR, ptcr);
+ powernv_set_ptcr(ptcr);
}
void mmu_partition_table_set_entry(unsigned int lpid, unsigned long dw0,
cheers
More information about the Linuxppc-dev
mailing list