summaryrefslogtreecommitdiff
path: root/arch/arc/include/asm/pgtable-levels.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@kernel.org>2021-08-12 12:54:43 -0700
committerVineet Gupta <vgupta@kernel.org>2021-08-26 13:42:42 -0700
commitd9820ff76f95fa26d33e412254a89cd65b23142d (patch)
tree4f7fcc648a3b08f5533923b05abbd00c29879b6d /arch/arc/include/asm/pgtable-levels.h
parentf35534a2bcc7fd614a11aa7e3d91a0b1d6c962fb (diff)
ARC: mm: switch pgtable_t back to struct page *
So far ARC pgtable_t has not been struct page based to avoid extra page_address() calls involved. However the differences are down to noise and get in the way of using generic code, hence this patch. This also allows us to reuse generic THP depost/withdraw code. There's some additional consideration for PGDIR_SHIFT in 4K page config. Now due to page tables being PAGE_SIZE deep only, the address split can't be really arbitrary. Tested-by: kernel test robot <lkp@intel.com> Suggested-by: Mike Rapoport <rppt@linux.ibm.com> Acked-by: Mike Rapoport <rppt@linux.ibm.com> Signed-off-by: Vineet Gupta <vgupta@kernel.org>
Diffstat (limited to 'arch/arc/include/asm/pgtable-levels.h')
-rw-r--r--arch/arc/include/asm/pgtable-levels.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/arc/include/asm/pgtable-levels.h b/arch/arc/include/asm/pgtable-levels.h
index e65fb8c9da12..561dedab79ed 100644
--- a/arch/arc/include/asm/pgtable-levels.h
+++ b/arch/arc/include/asm/pgtable-levels.h
@@ -35,9 +35,15 @@
#else
/*
* No Super page case
- * Default value provides 11:8:13 (8K), 11:9:12 (4K)
+ * Default value provides 11:8:13 (8K), 10:10:12 (4K)
+ * Limits imposed by pgtable_t only PAGE_SIZE long
+ * (so 4K page can only have 1K entries: or 10 bits)
*/
+#ifdef CONFIG_ARC_PAGE_SIZE_4K
+#define PGDIR_SHIFT 22
+#else
#define PGDIR_SHIFT 21
+#endif
#endif