* [PATCH] arm64: map FDT as RW for early_init_dt_scan()
@ 2022-08-31 20:32 Michael Bestas
2022-09-01 9:57 ` Greg KH
0 siblings, 1 reply; 10+ messages in thread
From: Michael Bestas @ 2022-08-31 20:32 UTC (permalink / raw)
To: stable
Cc: Hsin-Yi Wang, Stephen Boyd, Mike Rapoport, Will Deacon, Michael Bestas
From: Hsin-Yi Wang <hsinyi@chromium.org>
commit e112b032a72c78f15d0c803c5dc6be444c2e6c66 upstream.
Currently in arm64, FDT is mapped to RO before it's passed to
early_init_dt_scan(). However, there might be some codes
(eg. commit "fdt: add support for rng-seed") that need to modify FDT
during init. Map FDT to RO after early fixups are done.
Cc: stable@vger.kernel.org # 4.14
Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
Signed-off-by: Will Deacon <will@kernel.org>
[mkbestas: fixed trivial conflicts for 4.14 backport]
Signed-off-by: Michael Bestas <mkbestas@gmail.com>
---
arch/arm64/include/asm/mmu.h | 2 +-
arch/arm64/kernel/kaslr.c | 5 +----
arch/arm64/kernel/setup.c | 9 ++++++++-
arch/arm64/mm/mmu.c | 15 +--------------
4 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h
index 5a77dc775cc3c4..9494e35bf3a2a7 100644
--- a/arch/arm64/include/asm/mmu.h
+++ b/arch/arm64/include/asm/mmu.h
@@ -91,7 +91,7 @@ extern void init_mem_pgprot(void);
extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
unsigned long virt, phys_addr_t size,
pgprot_t prot, bool page_mappings_only);
-extern void *fixmap_remap_fdt(phys_addr_t dt_phys);
+extern void *fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot);
extern void mark_linear_text_alias_ro(void);
#endif /* !__ASSEMBLY__ */
diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index ae727828609491..17fa1d363fff2c 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -65,9 +65,6 @@ static __init const u8 *kaslr_get_cmdline(void *fdt)
return default_cmdline;
}
-extern void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size,
- pgprot_t prot);
-
/*
* This routine will be executed with the kernel mapped at its default virtual
* address, and if it returns successfully, the kernel will be remapped, and
@@ -96,7 +93,7 @@ u64 __init kaslr_early_init(u64 dt_phys)
* attempt at mapping the FDT in setup_machine()
*/
early_fixmap_init();
- fdt = __fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
+ fdt = fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
if (!fdt)
return 0;
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index d4b740538ad574..01b15d9dd8d62d 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -179,9 +179,13 @@ static void __init smp_build_mpidr_hash(void)
static void __init setup_machine_fdt(phys_addr_t dt_phys)
{
- void *dt_virt = fixmap_remap_fdt(dt_phys);
+ int size;
+ void *dt_virt = fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
const char *name;
+ if (dt_virt)
+ memblock_reserve(dt_phys, size);
+
if (!dt_virt || !early_init_dt_scan(dt_virt)) {
pr_crit("\n"
"Error: invalid device tree blob at physical address %pa (virtual address 0x%p)\n"
@@ -193,6 +197,9 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys)
cpu_relax();
}
+ /* Early fixups are done, map the FDT as read-only now */
+ fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL_RO);
+
name = of_flat_dt_get_machine_name();
if (!name)
return;
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 4d472907194dd3..ce8c57d70e5fc7 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -836,7 +836,7 @@ void __set_fixmap(enum fixed_addresses idx,
}
}
-void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
+void *__init fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
{
const u64 dt_virt_base = __fix_to_virt(FIX_FDT);
int offset;
@@ -889,19 +889,6 @@ void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
return dt_virt;
}
-void *__init fixmap_remap_fdt(phys_addr_t dt_phys)
-{
- void *dt_virt;
- int size;
-
- dt_virt = __fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL_RO);
- if (!dt_virt)
- return NULL;
-
- memblock_reserve(dt_phys, size);
- return dt_virt;
-}
-
int __init arch_ioremap_pud_supported(void)
{
/*
--
2.37.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] arm64: map FDT as RW for early_init_dt_scan()
2022-08-31 20:32 [PATCH] arm64: map FDT as RW for early_init_dt_scan() Michael Bestas
@ 2022-09-01 9:57 ` Greg KH
2022-09-01 10:57 ` Michael Bestas
0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2022-09-01 9:57 UTC (permalink / raw)
To: Michael Bestas
Cc: stable, Hsin-Yi Wang, Stephen Boyd, Mike Rapoport, Will Deacon
On Wed, Aug 31, 2022 at 11:32:00PM +0300, Michael Bestas wrote:
> From: Hsin-Yi Wang <hsinyi@chromium.org>
>
> commit e112b032a72c78f15d0c803c5dc6be444c2e6c66 upstream.
>
> Currently in arm64, FDT is mapped to RO before it's passed to
> early_init_dt_scan(). However, there might be some codes
> (eg. commit "fdt: add support for rng-seed") that need to modify FDT
> during init. Map FDT to RO after early fixups are done.
>
> Cc: stable@vger.kernel.org # 4.14
> Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
> Signed-off-by: Will Deacon <will@kernel.org>
> [mkbestas: fixed trivial conflicts for 4.14 backport]
> Signed-off-by: Michael Bestas <mkbestas@gmail.com>
> ---
> arch/arm64/include/asm/mmu.h | 2 +-
> arch/arm64/kernel/kaslr.c | 5 +----
> arch/arm64/kernel/setup.c | 9 ++++++++-
> arch/arm64/mm/mmu.c | 15 +--------------
> 4 files changed, 11 insertions(+), 20 deletions(-)
>
Both now queued up, thanks.
greg k-h
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm64: map FDT as RW for early_init_dt_scan()
2022-09-01 9:57 ` Greg KH
@ 2022-09-01 10:57 ` Michael Bestas
2022-09-01 12:07 ` Greg KH
0 siblings, 1 reply; 10+ messages in thread
From: Michael Bestas @ 2022-09-01 10:57 UTC (permalink / raw)
To: gregkh; +Cc: hsinyi, mkbestas, rppt, stable, swboyd, will
On Thu, 1 Sep 2022 11:57:55 +0200
Greg KH <gregkh@linuxfoundation.org> wrote:
> Both now queued up, thanks.
>
> greg k-h
Could you also queue the 4.9 patch or I need to send it again?
https://lore.kernel.org/all/20220809145624.1819905-1-mkbestas@gmail.com/
Thanks,
Michael Bestas
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm64: map FDT as RW for early_init_dt_scan()
2022-09-01 10:57 ` Michael Bestas
@ 2022-09-01 12:07 ` Greg KH
0 siblings, 0 replies; 10+ messages in thread
From: Greg KH @ 2022-09-01 12:07 UTC (permalink / raw)
To: Michael Bestas; +Cc: hsinyi, rppt, stable, swboyd, will
On Thu, Sep 01, 2022 at 01:57:27PM +0300, Michael Bestas wrote:
> On Thu, 1 Sep 2022 11:57:55 +0200
> Greg KH <gregkh@linuxfoundation.org> wrote:
>
> > Both now queued up, thanks.
> >
> > greg k-h
>
> Could you also queue the 4.9 patch or I need to send it again?
> https://lore.kernel.org/all/20220809145624.1819905-1-mkbestas@gmail.com/
Ah, thanks for pointing that out, it was long-gone from my queue. Now
added.
greg k-h
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] arm64: map FDT as RW for early_init_dt_scan()
@ 2022-08-31 20:30 Michael Bestas
0 siblings, 0 replies; 10+ messages in thread
From: Michael Bestas @ 2022-08-31 20:30 UTC (permalink / raw)
To: stable
Cc: Hsin-Yi Wang, Stephen Boyd, Mike Rapoport, Will Deacon, Michael Bestas
From: Hsin-Yi Wang <hsinyi@chromium.org>
commit e112b032a72c78f15d0c803c5dc6be444c2e6c66 upstream.
Currently in arm64, FDT is mapped to RO before it's passed to
early_init_dt_scan(). However, there might be some codes
(eg. commit "fdt: add support for rng-seed") that need to modify FDT
during init. Map FDT to RO after early fixups are done.
Cc: stable@vger.kernel.org # 4.19
Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
Signed-off-by: Will Deacon <will@kernel.org>
[mkbestas: fixed trivial conflicts for 4.19 backport]
Signed-off-by: Michael Bestas <mkbestas@gmail.com>
---
arch/arm64/include/asm/mmu.h | 2 +-
arch/arm64/kernel/kaslr.c | 5 +----
arch/arm64/kernel/setup.c | 9 ++++++++-
arch/arm64/mm/mmu.c | 15 +--------------
4 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h
index b37d185e0e841c..3dda6ff32efd7f 100644
--- a/arch/arm64/include/asm/mmu.h
+++ b/arch/arm64/include/asm/mmu.h
@@ -98,7 +98,7 @@ extern void init_mem_pgprot(void);
extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
unsigned long virt, phys_addr_t size,
pgprot_t prot, bool page_mappings_only);
-extern void *fixmap_remap_fdt(phys_addr_t dt_phys);
+extern void *fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot);
extern void mark_linear_text_alias_ro(void);
#endif /* !__ASSEMBLY__ */
diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index 06941c1fe418e0..92bb53460401c0 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -65,9 +65,6 @@ static __init const u8 *kaslr_get_cmdline(void *fdt)
return default_cmdline;
}
-extern void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size,
- pgprot_t prot);
-
/*
* This routine will be executed with the kernel mapped at its default virtual
* address, and if it returns successfully, the kernel will be remapped, and
@@ -96,7 +93,7 @@ u64 __init kaslr_early_init(u64 dt_phys)
* attempt at mapping the FDT in setup_machine()
*/
early_fixmap_init();
- fdt = __fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
+ fdt = fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
if (!fdt)
return 0;
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index b3354ff94e7984..43e9786f1d6044 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -183,9 +183,13 @@ static void __init smp_build_mpidr_hash(void)
static void __init setup_machine_fdt(phys_addr_t dt_phys)
{
- void *dt_virt = fixmap_remap_fdt(dt_phys);
+ int size;
+ void *dt_virt = fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
const char *name;
+ if (dt_virt)
+ memblock_reserve(dt_phys, size);
+
if (!dt_virt || !early_init_dt_scan(dt_virt)) {
pr_crit("\n"
"Error: invalid device tree blob at physical address %pa (virtual address 0x%p)\n"
@@ -197,6 +201,9 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys)
cpu_relax();
}
+ /* Early fixups are done, map the FDT as read-only now */
+ fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL_RO);
+
name = of_flat_dt_get_machine_name();
if (!name)
return;
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index b0a83dbed2dc44..7042fbb6d92bac 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -859,7 +859,7 @@ void __set_fixmap(enum fixed_addresses idx,
}
}
-void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
+void *__init fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
{
const u64 dt_virt_base = __fix_to_virt(FIX_FDT);
int offset;
@@ -912,19 +912,6 @@ void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
return dt_virt;
}
-void *__init fixmap_remap_fdt(phys_addr_t dt_phys)
-{
- void *dt_virt;
- int size;
-
- dt_virt = __fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL_RO);
- if (!dt_virt)
- return NULL;
-
- memblock_reserve(dt_phys, size);
- return dt_virt;
-}
-
int __init arch_ioremap_pud_supported(void)
{
/*
--
2.37.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] arm64: map FDT as RW for early_init_dt_scan()
2022-08-09 18:17 ` Michael Bestas
@ 2022-08-19 11:07 ` Greg KH
0 siblings, 0 replies; 10+ messages in thread
From: Greg KH @ 2022-08-19 11:07 UTC (permalink / raw)
To: Michael Bestas; +Cc: hsinyi, rppt, stable, swboyd, will
On Tue, Aug 09, 2022 at 09:17:53PM +0300, Michael Bestas wrote:
> On Tue, 9 Aug 2022 19:12:54 +0200
> Greg KH <gregkh@linuxfoundation.org> wrote:
>
> > What about 4.14.y and newer?
> >
> > thanks,
> >
> > greg k-h
>
> This patch should be required on all stable kernels that got commit
> "fdt: add support for rng-seed", however I have not tested it.
>
> A similar backport exists in android 4.19 kernel:
> https://android-review.googlesource.com/c/kernel/common/+/1238592
Great, please submit it so that we can include it.
Also for 4.14.y. I can't take a patch for an older kernel tree without
the same commit being in a newer one, otherwise people would have
regressions when upgrading.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm64: map FDT as RW for early_init_dt_scan()
2022-08-09 17:12 ` Greg KH
2022-08-09 18:11 ` Michael Bestas
@ 2022-08-09 18:17 ` Michael Bestas
2022-08-19 11:07 ` Greg KH
1 sibling, 1 reply; 10+ messages in thread
From: Michael Bestas @ 2022-08-09 18:17 UTC (permalink / raw)
To: gregkh; +Cc: hsinyi, mkbestas, rppt, stable, swboyd, will
On Tue, 9 Aug 2022 19:12:54 +0200
Greg KH <gregkh@linuxfoundation.org> wrote:
> What about 4.14.y and newer?
>
> thanks,
>
> greg k-h
This patch should be required on all stable kernels that got commit
"fdt: add support for rng-seed", however I have not tested it.
A similar backport exists in android 4.19 kernel:
https://android-review.googlesource.com/c/kernel/common/+/1238592
Without this patch, Google Pixel 3/3a fails at a very early boot
stage after merging v4.9.320+ due to the random backport.
Sorry if I messed something up with the emails, this is the first
time I submit something to a mailing list.
Thanks,
Michael Bestas
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm64: map FDT as RW for early_init_dt_scan()
2022-08-09 17:12 ` Greg KH
@ 2022-08-09 18:11 ` Michael Bestas
2022-08-09 18:17 ` Michael Bestas
1 sibling, 0 replies; 10+ messages in thread
From: Michael Bestas @ 2022-08-09 18:11 UTC (permalink / raw)
To: Greg KH; +Cc: stable, Hsin-Yi Wang, Stephen Boyd, Mike Rapoport, Will Deacon
On Tue, 9 Aug 2022 19:12:54 +0200
Greg KH <gregkh@linuxfoundation.org> wrote:
> What about 4.14.y and newer?
>
> thanks,
>
> greg k-h
This patch should be required on all stable kernels that got commit
"fdt: add support for rng-seed", however I have not tested it.
A similar backport exists in android 4.19 kernel:
https://android-review.googlesource.com/c/kernel/common/+/1238592
Without this patch, Google Pixel 3/3a fails at a very early boot
stage after merging v4.9.320+ due to the random backport.
Thanks,
Michael Bestas
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm64: map FDT as RW for early_init_dt_scan()
2022-08-09 14:56 Michael Bestas
@ 2022-08-09 17:12 ` Greg KH
2022-08-09 18:11 ` Michael Bestas
2022-08-09 18:17 ` Michael Bestas
0 siblings, 2 replies; 10+ messages in thread
From: Greg KH @ 2022-08-09 17:12 UTC (permalink / raw)
To: Michael Bestas
Cc: stable, Hsin-Yi Wang, Stephen Boyd, Mike Rapoport, Will Deacon
On Tue, Aug 09, 2022 at 05:56:24PM +0300, Michael Bestas wrote:
> From: Hsin-Yi Wang <hsinyi@chromium.org>
>
> commit e112b032a72c78f15d0c803c5dc6be444c2e6c66 upstream.
>
> Currently in arm64, FDT is mapped to RO before it's passed to
> early_init_dt_scan(). However, there might be some codes
> (eg. commit "fdt: add support for rng-seed") that need to modify FDT
> during init. Map FDT to RO after early fixups are done.
>
> Cc: stable@vger.kernel.org # 4.9+
> Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
> Signed-off-by: Will Deacon <will@kernel.org>
> [mkbestas: fixed trivial conflicts for 4.9 backport]
> Signed-off-by: Michael Bestas <mkbestas@gmail.com>
> ---
> arch/arm64/include/asm/mmu.h | 2 +-
> arch/arm64/kernel/kaslr.c | 5 +----
> arch/arm64/kernel/setup.c | 9 ++++++++-
> arch/arm64/mm/mmu.c | 15 +--------------
> 4 files changed, 11 insertions(+), 20 deletions(-)
What about 4.14.y and newer?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] arm64: map FDT as RW for early_init_dt_scan()
@ 2022-08-09 14:56 Michael Bestas
2022-08-09 17:12 ` Greg KH
0 siblings, 1 reply; 10+ messages in thread
From: Michael Bestas @ 2022-08-09 14:56 UTC (permalink / raw)
To: stable
Cc: Hsin-Yi Wang, Stephen Boyd, Mike Rapoport, Will Deacon, Michael Bestas
From: Hsin-Yi Wang <hsinyi@chromium.org>
commit e112b032a72c78f15d0c803c5dc6be444c2e6c66 upstream.
Currently in arm64, FDT is mapped to RO before it's passed to
early_init_dt_scan(). However, there might be some codes
(eg. commit "fdt: add support for rng-seed") that need to modify FDT
during init. Map FDT to RO after early fixups are done.
Cc: stable@vger.kernel.org # 4.9+
Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
Signed-off-by: Will Deacon <will@kernel.org>
[mkbestas: fixed trivial conflicts for 4.9 backport]
Signed-off-by: Michael Bestas <mkbestas@gmail.com>
---
arch/arm64/include/asm/mmu.h | 2 +-
arch/arm64/kernel/kaslr.c | 5 +----
arch/arm64/kernel/setup.c | 9 ++++++++-
arch/arm64/mm/mmu.c | 15 +--------------
4 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h
index f4377b005cba90..c944253b3a4b63 100644
--- a/arch/arm64/include/asm/mmu.h
+++ b/arch/arm64/include/asm/mmu.h
@@ -90,7 +90,7 @@ extern void init_mem_pgprot(void);
extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
unsigned long virt, phys_addr_t size,
pgprot_t prot, bool allow_block_mappings);
-extern void *fixmap_remap_fdt(phys_addr_t dt_phys);
+extern void *fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot);
#endif /* !__ASSEMBLY__ */
#endif
diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index c9ca903462a68d..6a9668f6e933f3 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -65,9 +65,6 @@ static __init const u8 *kaslr_get_cmdline(void *fdt)
return default_cmdline;
}
-extern void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size,
- pgprot_t prot);
-
/*
* This routine will be executed with the kernel mapped at its default virtual
* address, and if it returns successfully, the kernel will be remapped, and
@@ -96,7 +93,7 @@ u64 __init kaslr_early_init(u64 dt_phys, u64 modulo_offset)
* attempt at mapping the FDT in setup_machine()
*/
early_fixmap_init();
- fdt = __fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
+ fdt = fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
if (!fdt)
return 0;
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index f534f492a26874..ae82d9694542cd 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -178,7 +178,11 @@ static void __init smp_build_mpidr_hash(void)
static void __init setup_machine_fdt(phys_addr_t dt_phys)
{
- void *dt_virt = fixmap_remap_fdt(dt_phys);
+ int size;
+ void *dt_virt = fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL);
+
+ if (dt_virt)
+ memblock_reserve(dt_phys, size);
if (!dt_virt || !early_init_dt_scan(dt_virt)) {
pr_crit("\n"
@@ -191,6 +195,9 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys)
cpu_relax();
}
+ /* Early fixups are done, map the FDT as read-only now */
+ fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL_RO);
+
dump_stack_set_arch_desc("%s (DT)", of_flat_dt_get_machine_name());
}
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 36bd50091c4bbc..784ea7c8d99667 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -718,7 +718,7 @@ void __set_fixmap(enum fixed_addresses idx,
}
}
-void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
+void *__init fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
{
const u64 dt_virt_base = __fix_to_virt(FIX_FDT);
int offset;
@@ -771,19 +771,6 @@ void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
return dt_virt;
}
-void *__init fixmap_remap_fdt(phys_addr_t dt_phys)
-{
- void *dt_virt;
- int size;
-
- dt_virt = __fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL_RO);
- if (!dt_virt)
- return NULL;
-
- memblock_reserve(dt_phys, size);
- return dt_virt;
-}
-
int __init arch_ioremap_pud_supported(void)
{
/*
--
2.37.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-09-01 12:07 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-31 20:32 [PATCH] arm64: map FDT as RW for early_init_dt_scan() Michael Bestas
2022-09-01 9:57 ` Greg KH
2022-09-01 10:57 ` Michael Bestas
2022-09-01 12:07 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2022-08-31 20:30 Michael Bestas
2022-08-09 14:56 Michael Bestas
2022-08-09 17:12 ` Greg KH
2022-08-09 18:11 ` Michael Bestas
2022-08-09 18:17 ` Michael Bestas
2022-08-19 11:07 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).