Commit 7cd2a869 authored by Suraj Jitindar Singh's avatar Suraj Jitindar Singh Committed by Michael Ellerman

powerpc/mm: Properly invalidate when setting process table base

The host process table base is stored in the partition table by calling
the function native_register_process_table(). Currently this just sets
the entry in memory and is missing a subsequent cache invalidation
instruction. Any update to the partition table should be followed by a
cache invalidation instruction specifying invalidation of the caching of
any partition table entries (RIC = 2, PRS = 0).

We already have a function to update the partition table with the
required cache invalidation instructions - mmu_partition_table_set_entry().
Update the native_register_process_table() function to call
mmu_partition_table_set_entry(), this ensures all appropriate
invalidation will be performed.
Signed-off-by: default avatarSuraj Jitindar Singh <sjitindarsingh@gmail.com>
Reviewed-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
[mpe: Use a local for patb0 to clean it up slightly]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent cffb717c
...@@ -28,9 +28,13 @@ ...@@ -28,9 +28,13 @@
static int native_register_process_table(unsigned long base, unsigned long pg_sz, static int native_register_process_table(unsigned long base, unsigned long pg_sz,
unsigned long table_size) unsigned long table_size)
{ {
unsigned long patb1 = base | table_size | PATB_GR; unsigned long patb0, patb1;
patb0 = be64_to_cpu(partition_tb[0].patb0);
patb1 = base | table_size | PATB_GR;
mmu_partition_table_set_entry(0, patb0, patb1);
partition_tb->patb1 = cpu_to_be64(patb1);
return 0; return 0;
} }
......
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