Skip to content

Commit 2c86f08

Browse files
committed
fix merge "riscv: Move early dtb mapping into the fixmap region"
1 parent 857fe56 commit 2c86f08

File tree

5 files changed

+6
-37
lines changed

5 files changed

+6
-37
lines changed

arch/riscv/Kconfig

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -424,12 +424,6 @@ menu "Kernel features"
424424

425425
source "kernel/Kconfig.hz"
426426

427-
config RISCV_FIXMAP_DTB
428-
bool "Keep DT mapping in fixmap"
429-
default n
430-
help
431-
This config allows kernel to load DT into fixmap"
432-
433427
config RISCV_SBI_V01
434428
bool "SBI v0.1 support"
435429
default y

arch/riscv/Kconfig.socs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ config ARCH_SUNXI
8080
bool "Allwinner RISC-V SoC Family"
8181
select RISCV_SUNXI
8282
select RISCV_XUANTIE
83-
select RISCV_FIXMAP_DTB
8483
select RISCV_RELAXED_ALLOC_RWX
8584
help
8685
This enables support for SUNXI SoC platform hardware.

arch/riscv/include/asm/fixmap.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@
2222
*/
2323
enum fixed_addresses {
2424
FIX_HOLE,
25-
#ifdef CONFIG_RISCV_FIXMAP_DTB
26-
#define FIX_FDT_SIZE SZ_256K
25+
/*
26+
* The fdt fixmap mapping must be PMD aligned and will be mapped
27+
* using PMD entries in fixmap_pmd in 64-bit and a PGD entry in 32-bit.
28+
*/
2729
FIX_FDT_END,
2830
FIX_FDT = FIX_FDT_END + FIX_FDT_SIZE / PAGE_SIZE - 1,
29-
#endif
31+
32+
/* Below fixmaps will be mapped using fixmap_pte */
3033
FIX_PTE,
3134
FIX_PMD,
3235
FIX_TEXT_POKE1,
@@ -39,11 +42,7 @@ enum fixed_addresses {
3942
* before ioremap() is functional.
4043
*/
4144
#define NR_FIX_BTMAPS (SZ_256K / PAGE_SIZE)
42-
#ifdef CONFIG_RISCV_FIXMAP_DTB
43-
#define FIX_BTMAPS_SLOTS 6
44-
#else
4545
#define FIX_BTMAPS_SLOTS 7
46-
#endif
4746
#define TOTAL_FIX_BTMAPS (NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS)
4847

4948
FIX_BTMAP_END = __end_of_permanent_fixed_addresses,

arch/riscv/include/asm/pgtable.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -723,11 +723,7 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
723723

724724
extern char _start[];
725725
extern void *_dtb_early_va;
726-
#ifdef CONFIG_RISCV_FIXMAP_DTB
727-
extern phys_addr_t _dtb_early_pa;
728-
#else
729726
extern uintptr_t _dtb_early_pa;
730-
#endif
731727
#if defined(CONFIG_XIP_KERNEL) && defined(CONFIG_MMU)
732728
#define dtb_early_va (*(void **)XIP_FIXUP(&_dtb_early_va))
733729
#define dtb_early_pa (*(uintptr_t *)XIP_FIXUP(&_dtb_early_pa))

arch/riscv/mm/init.c

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,7 @@ EXPORT_SYMBOL(empty_zero_page);
5353

5454
extern char _start[];
5555
void *_dtb_early_va __initdata;
56-
#ifdef CONFIG_RISCV_FIXMAP_DTB
57-
phys_addr_t _dtb_early_pa __initdata;
58-
#else
5956
uintptr_t _dtb_early_pa __initdata;
60-
#endif
6157

6258
struct pt_alloc_ops {
6359
pte_t *(*get_pte_virt)(phys_addr_t pa);
@@ -578,20 +574,6 @@ static void __init create_kernel_page_table(pgd_t *pgdir, bool early)
578574
static void __init create_fdt_early_page_table(uintptr_t fix_fdt_va,
579575
uintptr_t dtb_pa)
580576
{
581-
#if defined(CONFIG_RISCV_FIXMAP_DTB)
582-
uintptr_t va, end_va;
583-
584-
/* Create fixed mapping for early FDT parsing */
585-
end_va = __fix_to_virt(FIX_FDT) + FIX_FDT_SIZE;
586-
for (va = __fix_to_virt(FIX_FDT); va < end_va; va += PAGE_SIZE)
587-
create_pte_mapping(fixmap_pte, va,
588-
dtb_pa + (va - __fix_to_virt(FIX_FDT)),
589-
PAGE_SIZE, PAGE_KERNEL);
590-
591-
/* Save pointer to DTB for early FDT parsing */
592-
dtb_early_va = (void *)fix_to_virt(FIX_FDT) + (dtb_pa & ~PAGE_MASK);
593-
/* Save physical address for memblock reservation */
594-
#else
595577
#ifndef CONFIG_BUILTIN_DTB
596578
uintptr_t pa = dtb_pa & ~(PMD_SIZE - 1);
597579

@@ -618,7 +600,6 @@ static void __init create_fdt_early_page_table(uintptr_t fix_fdt_va,
618600
* kernel is mapped in the linear mapping, that makes no difference.
619601
*/
620602
dtb_early_va = kernel_mapping_pa_to_va(XIP_FIXUP(dtb_pa));
621-
#endif
622603
#endif
623604

624605
dtb_early_pa = dtb_pa;

0 commit comments

Comments
 (0)