powerpc/mm: Move register_process_table() out of ppc_md
We want to initialise register_process_table() before ppc_md is setup, so that it can be called as part of MMU init (at least on Radix ATM). That no longer works because probe_machine() requires that ppc_md be empty before it's called, and we now do probe_machine() much later. So make register_process_table a global for now. It will probably move into a mmu_radix_ops struct at some point in the future. This was broken by me when applying commit7025776ed1
"powerpc/mm: Move hash table ops to a separate structure" due to conflicts with other patches. Fixes:7025776ed1
("powerpc/mm: Move hash table ops to a separate structure") Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
1a058f1643
commit
eea8148c69
5 changed files with 10 additions and 5 deletions
|
@ -134,5 +134,9 @@ static inline void setup_initial_memory_limit(phys_addr_t first_memblock_base,
|
||||||
return hash__setup_initial_memory_limit(first_memblock_base,
|
return hash__setup_initial_memory_limit(first_memblock_base,
|
||||||
first_memblock_size);
|
first_memblock_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern int (*register_process_table)(unsigned long base, unsigned long page_size,
|
||||||
|
unsigned long tbl_size);
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
#endif /* _ASM_POWERPC_BOOK3S_64_MMU_H_ */
|
#endif /* _ASM_POWERPC_BOOK3S_64_MMU_H_ */
|
||||||
|
|
|
@ -219,8 +219,6 @@ struct machdep_calls {
|
||||||
#ifdef CONFIG_ARCH_RANDOM
|
#ifdef CONFIG_ARCH_RANDOM
|
||||||
int (*get_random_seed)(unsigned long *v);
|
int (*get_random_seed)(unsigned long *v);
|
||||||
#endif
|
#endif
|
||||||
int (*register_process_table)(unsigned long base, unsigned long page_size,
|
|
||||||
unsigned long tbl_size);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void e500_idle(void);
|
extern void e500_idle(void);
|
||||||
|
|
|
@ -747,5 +747,5 @@ void __init hpte_init_native(void)
|
||||||
mmu_hash_ops.hugepage_invalidate = native_hugepage_invalidate;
|
mmu_hash_ops.hugepage_invalidate = native_hugepage_invalidate;
|
||||||
|
|
||||||
if (cpu_has_feature(CPU_FTR_ARCH_300))
|
if (cpu_has_feature(CPU_FTR_ARCH_300))
|
||||||
ppc_md.register_process_table = native_register_proc_table;
|
register_process_table = native_register_proc_table;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
#include "mmu_decl.h"
|
#include "mmu_decl.h"
|
||||||
#include <trace/events/thp.h>
|
#include <trace/events/thp.h>
|
||||||
|
|
||||||
|
int (*register_process_table)(unsigned long base, unsigned long page_size,
|
||||||
|
unsigned long tbl_size);
|
||||||
|
|
||||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||||
/*
|
/*
|
||||||
* This is called when relaxing access to a hugepage. It's also called in the page
|
* This is called when relaxing access to a hugepage. It's also called in the page
|
||||||
|
|
|
@ -171,7 +171,7 @@ redo:
|
||||||
* of process table here. But our linear mapping also enable us to use
|
* of process table here. But our linear mapping also enable us to use
|
||||||
* physical address here.
|
* physical address here.
|
||||||
*/
|
*/
|
||||||
ppc_md.register_process_table(__pa(process_tb), 0, PRTB_SIZE_SHIFT - 12);
|
register_process_table(__pa(process_tb), 0, PRTB_SIZE_SHIFT - 12);
|
||||||
pr_info("Process table %p and radix root for kernel: %p\n", process_tb, init_mm.pgd);
|
pr_info("Process table %p and radix root for kernel: %p\n", process_tb, init_mm.pgd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ static void __init radix_init_partition_table(void)
|
||||||
|
|
||||||
void __init radix_init_native(void)
|
void __init radix_init_native(void)
|
||||||
{
|
{
|
||||||
ppc_md.register_process_table = native_register_process_table;
|
register_process_table = native_register_process_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init get_idx_from_shift(unsigned int shift)
|
static int __init get_idx_from_shift(unsigned int shift)
|
||||||
|
|
Loading…
Reference in a new issue