|
@@ -921,13 +921,18 @@ void *__init fixmap_remap_fdt(phys_addr_t dt_phys)
|
|
|
|
|
|
|
|
int __init arch_ioremap_pud_supported(void)
|
|
int __init arch_ioremap_pud_supported(void)
|
|
|
{
|
|
{
|
|
|
- /* only 4k granule supports level 1 block mappings */
|
|
|
|
|
- return IS_ENABLED(CONFIG_ARM64_4K_PAGES);
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Only 4k granule supports level 1 block mappings.
|
|
|
|
|
+ * SW table walks can't handle removal of intermediate entries.
|
|
|
|
|
+ */
|
|
|
|
|
+ return IS_ENABLED(CONFIG_ARM64_4K_PAGES) &&
|
|
|
|
|
+ !IS_ENABLED(CONFIG_ARM64_PTDUMP_DEBUGFS);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int __init arch_ioremap_pmd_supported(void)
|
|
int __init arch_ioremap_pmd_supported(void)
|
|
|
{
|
|
{
|
|
|
- return 1;
|
|
|
|
|
|
|
+ /* See arch_ioremap_pud_supported() */
|
|
|
|
|
+ return !IS_ENABLED(CONFIG_ARM64_PTDUMP_DEBUGFS);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
|
|
int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
|