Commit 4b7a3504 authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Michael Ellerman

powerpc/mm/hash: Update SDR1 size encoding as documented in ISA 3.0

ISA 3.0 document hash table size in bytes = 2^(HTABSIZE + 18)

No functionality change 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 56547411
...@@ -714,10 +714,9 @@ int remove_section_mapping(unsigned long start, unsigned long end) ...@@ -714,10 +714,9 @@ int remove_section_mapping(unsigned long start, unsigned long end)
#endif /* CONFIG_MEMORY_HOTPLUG */ #endif /* CONFIG_MEMORY_HOTPLUG */
static void __init hash_init_partition_table(phys_addr_t hash_table, static void __init hash_init_partition_table(phys_addr_t hash_table,
unsigned long pteg_count) unsigned long htab_size)
{ {
unsigned long ps_field; unsigned long ps_field;
unsigned long htab_size;
unsigned long patb_size = 1UL << PATB_SIZE_SHIFT; unsigned long patb_size = 1UL << PATB_SIZE_SHIFT;
/* /*
...@@ -725,7 +724,7 @@ static void __init hash_init_partition_table(phys_addr_t hash_table, ...@@ -725,7 +724,7 @@ static void __init hash_init_partition_table(phys_addr_t hash_table,
* We can ignore that for lpid 0 * We can ignore that for lpid 0
*/ */
ps_field = 0; ps_field = 0;
htab_size = __ilog2(pteg_count) - 11; htab_size = __ilog2(htab_size) - 18;
BUILD_BUG_ON_MSG((PATB_SIZE_SHIFT > 24), "Partition table size too large."); BUILD_BUG_ON_MSG((PATB_SIZE_SHIFT > 24), "Partition table size too large.");
partition_tb = __va(memblock_alloc_base(patb_size, patb_size, partition_tb = __va(memblock_alloc_base(patb_size, patb_size,
...@@ -811,7 +810,7 @@ static void __init htab_initialize(void) ...@@ -811,7 +810,7 @@ static void __init htab_initialize(void)
htab_address = __va(table); htab_address = __va(table);
/* htab absolute addr + encoded htabsize */ /* htab absolute addr + encoded htabsize */
_SDR1 = table + __ilog2(pteg_count) - 11; _SDR1 = table + __ilog2(htab_size_bytes) - 18;
/* Initialize the HPT with no entries */ /* Initialize the HPT with no entries */
memset((void *)table, 0, htab_size_bytes); memset((void *)table, 0, htab_size_bytes);
...@@ -820,7 +819,7 @@ static void __init htab_initialize(void) ...@@ -820,7 +819,7 @@ static void __init htab_initialize(void)
/* Set SDR1 */ /* Set SDR1 */
mtspr(SPRN_SDR1, _SDR1); mtspr(SPRN_SDR1, _SDR1);
else else
hash_init_partition_table(table, pteg_count); hash_init_partition_table(table, htab_size_bytes);
} }
prot = pgprot_val(PAGE_KERNEL); prot = pgprot_val(PAGE_KERNEL);
......
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