Commit 83209bc8 authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Michael Ellerman

powerpc/mm/radix: Update machine call back to support new HCALL.

This update the machine dep callback such that we can use the same
callback to register process table. The interface is updated such that
we can easily call H_REGISTER_PROC_TBL hcall. The HCALL itself is
introduced in a later patch.

No functionality change introduced by this patch.
Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 09cf5bcb
...@@ -256,7 +256,8 @@ struct machdep_calls { ...@@ -256,7 +256,8 @@ 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 (*update_partition_table)(u64); 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);
......
...@@ -725,8 +725,14 @@ static void native_flush_hash_range(unsigned long number, int local) ...@@ -725,8 +725,14 @@ static void native_flush_hash_range(unsigned long number, int local)
local_irq_restore(flags); local_irq_restore(flags);
} }
static int native_update_partition_table(u64 patb1) static int native_register_proc_table(unsigned long base, unsigned long page_size,
unsigned long table_size)
{ {
unsigned long patb1 = base << 25; /* VSID */
patb1 |= (page_size << 5); /* sllp */
patb1 |= table_size;
partition_tb->patb1 = cpu_to_be64(patb1); partition_tb->patb1 = cpu_to_be64(patb1);
return 0; return 0;
} }
...@@ -743,5 +749,5 @@ void __init hpte_init_native(void) ...@@ -743,5 +749,5 @@ void __init hpte_init_native(void)
ppc_md.hugepage_invalidate = native_hugepage_invalidate; ppc_md.hugepage_invalidate = native_hugepage_invalidate;
if (cpu_has_feature(CPU_FTR_ARCH_300)) if (cpu_has_feature(CPU_FTR_ARCH_300))
ppc_md.update_partition_table = native_update_partition_table; ppc_md.register_process_table = native_register_proc_table;
} }
...@@ -21,8 +21,11 @@ ...@@ -21,8 +21,11 @@
#include <trace/events/thp.h> #include <trace/events/thp.h>
static int native_update_partition_table(u64 patb1) static int native_register_process_table(unsigned long base, unsigned long pg_sz,
unsigned long table_size)
{ {
unsigned long patb1 = base | table_size | PATB_GR;
partition_tb->patb1 = cpu_to_be64(patb1); partition_tb->patb1 = cpu_to_be64(patb1);
return 0; return 0;
} }
...@@ -168,7 +171,7 @@ static void __init radix_init_pgtable(void) ...@@ -168,7 +171,7 @@ static void __init radix_init_pgtable(void)
* 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.update_partition_table(__pa(process_tb) | (PRTB_SIZE_SHIFT - 12) | PATB_GR); ppc_md.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);
} }
...@@ -195,7 +198,7 @@ static void __init radix_init_partition_table(void) ...@@ -195,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.update_partition_table = native_update_partition_table; ppc_md.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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment