powerpc/pseries: move process table registration away from hash-specific code
authorNicholas Piggin <npiggin@gmail.com>
Wed, 1 Dec 2021 14:41:40 +0000 (00:41 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 2 Dec 2021 11:57:23 +0000 (22:57 +1100)
This reduces ifdefs in a later change which makes hash support configurable.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211201144153.2456614-6-npiggin@gmail.com
arch/powerpc/platforms/pseries/lpar.c

index 3df6bdf..06d6a82 100644 (file)
@@ -712,6 +712,34 @@ void vpa_init(int cpu)
 
 #ifdef CONFIG_PPC_BOOK3S_64
 
+static int pseries_lpar_register_process_table(unsigned long base,
+                       unsigned long page_size, unsigned long table_size)
+{
+       long rc;
+       unsigned long flags = 0;
+
+       if (table_size)
+               flags |= PROC_TABLE_NEW;
+       if (radix_enabled()) {
+               flags |= PROC_TABLE_RADIX;
+               if (mmu_has_feature(MMU_FTR_GTSE))
+                       flags |= PROC_TABLE_GTSE;
+       } else
+               flags |= PROC_TABLE_HPT_SLB;
+       for (;;) {
+               rc = plpar_hcall_norets(H_REGISTER_PROC_TBL, flags, base,
+                                       page_size, table_size);
+               if (!H_IS_LONG_BUSY(rc))
+                       break;
+               mdelay(get_longbusy_msecs(rc));
+       }
+       if (rc != H_SUCCESS) {
+               pr_err("Failed to register process table (rc=%ld)\n", rc);
+               BUG();
+       }
+       return rc;
+}
+
 static long pSeries_lpar_hpte_insert(unsigned long hpte_group,
                                     unsigned long vpn, unsigned long pa,
                                     unsigned long rflags, unsigned long vflags,
@@ -1680,34 +1708,6 @@ static int pseries_lpar_resize_hpt(unsigned long shift)
        return 0;
 }
 
-static int pseries_lpar_register_process_table(unsigned long base,
-                       unsigned long page_size, unsigned long table_size)
-{
-       long rc;
-       unsigned long flags = 0;
-
-       if (table_size)
-               flags |= PROC_TABLE_NEW;
-       if (radix_enabled()) {
-               flags |= PROC_TABLE_RADIX;
-               if (mmu_has_feature(MMU_FTR_GTSE))
-                       flags |= PROC_TABLE_GTSE;
-       } else
-               flags |= PROC_TABLE_HPT_SLB;
-       for (;;) {
-               rc = plpar_hcall_norets(H_REGISTER_PROC_TBL, flags, base,
-                                       page_size, table_size);
-               if (!H_IS_LONG_BUSY(rc))
-                       break;
-               mdelay(get_longbusy_msecs(rc));
-       }
-       if (rc != H_SUCCESS) {
-               pr_err("Failed to register process table (rc=%ld)\n", rc);
-               BUG();
-       }
-       return rc;
-}
-
 void __init hpte_init_pseries(void)
 {
        mmu_hash_ops.hpte_invalidate     = pSeries_lpar_hpte_invalidate;