All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH master] mach-k3: enable mmu after reserved memory is unmapped
@ 2026-05-12 11:03 Anshul Dalal
  2026-05-13  4:51 ` Anshul Dalal
  2026-05-18  8:04 ` Ilias Apalodimas
  0 siblings, 2 replies; 6+ messages in thread
From: Anshul Dalal @ 2026-05-12 11:03 UTC (permalink / raw)
  To: u-boot
  Cc: Tom Rini, Ilias Apalodimas, Dhruva Gole, Mark Kettenis,
	Patrice Chotard, Moteen Shah, Beleswar Padhi, Wadim Egorov,
	Chintan Vankar, Anshul Dalal

Currently the sequence to enable caches for the A53/A72 core on K3
devices looks as follows:

 1. Map entire DDR banks
 2. Setup page tables and enable MMU (done by mmu_setup)
 3. Unmap reserved-memory regions
 4. Enable caches

However there is a brief period of execution between #2 and #3 where the
core can issue speculative accesses to the entire DDR space (including
the reserved-memory regions) despite the caches being disabled.

A firewall exception is triggered whenever such speculative access is
made to secure DDR region of TFA or OP-TEE. This patch fixes the issue
by re-ordering the sequence as follows:

 1. Map entire DDR banks
 2. Setup page tables
 3. Unmap reserved-memory regions
 4. Enable MMU
 5. Enable caches

Fixes: f1c694b8fdde ("mach-k3: map all banks using mem_map_from_dram_banks")
Signed-off-by: Anshul Dalal <anshuld@ti.com>
---
For testing, I had used an AM62p with the following diff to enable
logging from TIFS:

  --- a/board/ti/am62px/board-cfg.yaml
  +++ b/board/ti/am62px/board-cfg.yaml
  @@ -33,5 +33,5 @@ board-cfg:
           subhdr:
               magic: 0x020C
               size: 8
  -        trace_dst_enables: 0x00
  -        trace_src_enables: 0x00
  +        trace_dst_enables: 0xd
  +        trace_src_enables: 0x3f

Without this patch an exception[1] similar to the following is observed
at A53 SPL stage:

  FWL Bit  0x1
  Exception addr  0x45B08000
  FWL Exception  0x1000100
   0x60000
   0x80002880
   0x0
   0x141201
   0x40

[1]: https://software-dl.ti.com/tisci/esd/latest/6_topic_user_guides/firewall_faq.html#how-do-i-debug-firewall-issues
---
 arch/arm/cpu/armv8/cache_v8.c    |  2 +-
 arch/arm/include/asm/armv8/mmu.h |  1 +
 arch/arm/mach-k3/common.c        | 10 +++++++++-
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
index 39479df7b21..169e68627e1 100644
--- a/arch/arm/cpu/armv8/cache_v8.c
+++ b/arch/arm/cpu/armv8/cache_v8.c
@@ -777,7 +777,7 @@ void setup_pgtables(void)
 		add_map(&mem_map[i]);
 }
 
-static void setup_all_pgtables(void)
+void setup_all_pgtables(void)
 {
 	u64 tlb_addr = gd->arch.tlb_addr;
 	u64 tlb_size = gd->arch.tlb_size;
diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h
index 8aa5f9721c4..969f1745445 100644
--- a/arch/arm/include/asm/armv8/mmu.h
+++ b/arch/arm/include/asm/armv8/mmu.h
@@ -197,6 +197,7 @@ struct mm_region {
 /* Used as the memory map for MMU configuration by mmu_setup */
 extern struct mm_region *mem_map;
 void setup_pgtables(void);
+void setup_all_pgtables(void);
 
 /**
  * mem_map_from_dram_banks() - Populate mem_map with entries corresponding to
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
index b0a75988714..a910c6e3725 100644
--- a/arch/arm/mach-k3/common.c
+++ b/arch/arm/mach-k3/common.c
@@ -265,8 +265,10 @@ void board_prep_linux(struct bootm_headers *images)
 void enable_caches(void)
 {
 	void *fdt = (void *)gd->fdt_blob;
+	int el = current_el();
 	int ret;
 
+	/* Map all DDR banks as Normal memory */
 	ret = mem_map_from_dram_banks(K3_MEM_MAP_FIRST_BANK_IDX, K3_MEM_MAP_LEN,
 				     PTE_BLOCK_MEMTYPE(MT_NORMAL) |
 					     PTE_BLOCK_INNER_SHARE);
@@ -278,8 +280,11 @@ void enable_caches(void)
 		printf("%s: Failed to perform reserved-memory fixups (%s)\n",
 		       __func__, fdt_strerror(ret));
 
-	mmu_setup();
+	setup_all_pgtables();
+	set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(NULL, NULL),
+			  MEMORY_ATTRIBUTES);
 
+	/* Unmap reserved memory regions */
 	if (CONFIG_K3_ATF_LOAD_ADDR >= CFG_SYS_SDRAM_BASE) {
 		ret = mmu_unmap_reserved_mem("tfa", true);
 		if (ret)
@@ -294,6 +299,9 @@ void enable_caches(void)
 			       __func__, ret);
 	}
 
+	/* enable the mmu */
+	set_sctlr(get_sctlr() | CR_M);
+
 	icache_enable();
 	dcache_enable();
 }

---
base-commit: 525ef034e5bed619c0f822da5373ed1fdadc8501
change-id: 20260512-am62_firewall_exception_fix-20a335cca769

Best regards,
--  
Anshul Dalal <anshuld@ti.com>


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH master] mach-k3: enable mmu after reserved memory is unmapped
  2026-05-12 11:03 [PATCH master] mach-k3: enable mmu after reserved memory is unmapped Anshul Dalal
@ 2026-05-13  4:51 ` Anshul Dalal
  2026-05-18  8:04 ` Ilias Apalodimas
  1 sibling, 0 replies; 6+ messages in thread
From: Anshul Dalal @ 2026-05-13  4:51 UTC (permalink / raw)
  To: Anshul Dalal, u-boot
  Cc: Tom Rini, Ilias Apalodimas, Dhruva Gole, Mark Kettenis,
	Patrice Chotard, Moteen Shah, Beleswar Padhi, Wadim Egorov,
	Chintan Vankar, Suhaas Joshi

On Tue May 12, 2026 at 4:33 PM IST, Anshul Dalal wrote:
> Currently the sequence to enable caches for the A53/A72 core on K3
> devices looks as follows:
>
>  1. Map entire DDR banks
>  2. Setup page tables and enable MMU (done by mmu_setup)
>  3. Unmap reserved-memory regions
>  4. Enable caches
>
> However there is a brief period of execution between #2 and #3 where the
> core can issue speculative accesses to the entire DDR space (including
> the reserved-memory regions) despite the caches being disabled.
>
> A firewall exception is triggered whenever such speculative access is
> made to secure DDR region of TFA or OP-TEE. This patch fixes the issue
> by re-ordering the sequence as follows:
>
>  1. Map entire DDR banks
>  2. Setup page tables
>  3. Unmap reserved-memory regions
>  4. Enable MMU
>  5. Enable caches
>
> Fixes: f1c694b8fdde ("mach-k3: map all banks using mem_map_from_dram_banks")
> Signed-off-by: Anshul Dalal <anshuld@ti.com>

Forgot to add:

  Reported-by: Suhaas Joshi <s-joshi@ti.com>

--
Anshul Dalal <anshuld@ti.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH master] mach-k3: enable mmu after reserved memory is unmapped
  2026-05-12 11:03 [PATCH master] mach-k3: enable mmu after reserved memory is unmapped Anshul Dalal
  2026-05-13  4:51 ` Anshul Dalal
@ 2026-05-18  8:04 ` Ilias Apalodimas
  2026-05-18  9:12   ` Anshul Dalal
  1 sibling, 1 reply; 6+ messages in thread
From: Ilias Apalodimas @ 2026-05-18  8:04 UTC (permalink / raw)
  To: Anshul Dalal
  Cc: u-boot, Tom Rini, Dhruva Gole, Mark Kettenis, Patrice Chotard,
	Moteen Shah, Beleswar Padhi, Wadim Egorov, Chintan Vankar

Hi Anshul

On Tue, 12 May 2026 at 14:03, Anshul Dalal <anshuld@ti.com> wrote:
>
> Currently the sequence to enable caches for the A53/A72 core on K3
> devices looks as follows:
>
>  1. Map entire DDR banks
>  2. Setup page tables and enable MMU (done by mmu_setup)
>  3. Unmap reserved-memory regions
>  4. Enable caches
>
> However there is a brief period of execution between #2 and #3 where the
> core can issue speculative accesses to the entire DDR space (including
> the reserved-memory regions) despite the caches being disabled.

This is indeed a problem and the fix looks correct.
What worries me though is that the mmu is common across v8 boards. Is
there a way to generalize this instead of adding per board variants?

Thanks
/Ilias

>
> A firewall exception is triggered whenever such speculative access is
> made to secure DDR region of TFA or OP-TEE. This patch fixes the issue
> by re-ordering the sequence as follows:
>
>  1. Map entire DDR banks
>  2. Setup page tables
>  3. Unmap reserved-memory regions
>  4. Enable MMU
>  5. Enable caches
>
> Fixes: f1c694b8fdde ("mach-k3: map all banks using mem_map_from_dram_banks")
> Signed-off-by: Anshul Dalal <anshuld@ti.com>
> ---
> For testing, I had used an AM62p with the following diff to enable
> logging from TIFS:
>
>   --- a/board/ti/am62px/board-cfg.yaml
>   +++ b/board/ti/am62px/board-cfg.yaml
>   @@ -33,5 +33,5 @@ board-cfg:
>            subhdr:
>                magic: 0x020C
>                size: 8
>   -        trace_dst_enables: 0x00
>   -        trace_src_enables: 0x00
>   +        trace_dst_enables: 0xd
>   +        trace_src_enables: 0x3f
>
> Without this patch an exception[1] similar to the following is observed
> at A53 SPL stage:
>
>   FWL Bit  0x1
>   Exception addr  0x45B08000
>   FWL Exception  0x1000100
>    0x60000
>    0x80002880
>    0x0
>    0x141201
>    0x40
>
> [1]: https://software-dl.ti.com/tisci/esd/latest/6_topic_user_guides/firewall_faq.html#how-do-i-debug-firewall-issues
> ---
>  arch/arm/cpu/armv8/cache_v8.c    |  2 +-
>  arch/arm/include/asm/armv8/mmu.h |  1 +
>  arch/arm/mach-k3/common.c        | 10 +++++++++-
>  3 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
> index 39479df7b21..169e68627e1 100644
> --- a/arch/arm/cpu/armv8/cache_v8.c
> +++ b/arch/arm/cpu/armv8/cache_v8.c
> @@ -777,7 +777,7 @@ void setup_pgtables(void)
>                 add_map(&mem_map[i]);
>  }
>
> -static void setup_all_pgtables(void)
> +void setup_all_pgtables(void)
>  {
>         u64 tlb_addr = gd->arch.tlb_addr;
>         u64 tlb_size = gd->arch.tlb_size;
> diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h
> index 8aa5f9721c4..969f1745445 100644
> --- a/arch/arm/include/asm/armv8/mmu.h
> +++ b/arch/arm/include/asm/armv8/mmu.h
> @@ -197,6 +197,7 @@ struct mm_region {
>  /* Used as the memory map for MMU configuration by mmu_setup */
>  extern struct mm_region *mem_map;
>  void setup_pgtables(void);
> +void setup_all_pgtables(void);
>
>  /**
>   * mem_map_from_dram_banks() - Populate mem_map with entries corresponding to
> diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
> index b0a75988714..a910c6e3725 100644
> --- a/arch/arm/mach-k3/common.c
> +++ b/arch/arm/mach-k3/common.c
> @@ -265,8 +265,10 @@ void board_prep_linux(struct bootm_headers *images)
>  void enable_caches(void)
>  {
>         void *fdt = (void *)gd->fdt_blob;
> +       int el = current_el();
>         int ret;
>
> +       /* Map all DDR banks as Normal memory */
>         ret = mem_map_from_dram_banks(K3_MEM_MAP_FIRST_BANK_IDX, K3_MEM_MAP_LEN,
>                                      PTE_BLOCK_MEMTYPE(MT_NORMAL) |
>                                              PTE_BLOCK_INNER_SHARE);
> @@ -278,8 +280,11 @@ void enable_caches(void)
>                 printf("%s: Failed to perform reserved-memory fixups (%s)\n",
>                        __func__, fdt_strerror(ret));
>
> -       mmu_setup();
> +       setup_all_pgtables();
> +       set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(NULL, NULL),
> +                         MEMORY_ATTRIBUTES);
>
> +       /* Unmap reserved memory regions */
>         if (CONFIG_K3_ATF_LOAD_ADDR >= CFG_SYS_SDRAM_BASE) {
>                 ret = mmu_unmap_reserved_mem("tfa", true);
>                 if (ret)
> @@ -294,6 +299,9 @@ void enable_caches(void)
>                                __func__, ret);
>         }
>
> +       /* enable the mmu */
> +       set_sctlr(get_sctlr() | CR_M);
> +
>         icache_enable();
>         dcache_enable();
>  }
>
> ---
> base-commit: 525ef034e5bed619c0f822da5373ed1fdadc8501
> change-id: 20260512-am62_firewall_exception_fix-20a335cca769
>
> Best regards,
> --
> Anshul Dalal <anshuld@ti.com>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH master] mach-k3: enable mmu after reserved memory is unmapped
  2026-05-18  8:04 ` Ilias Apalodimas
@ 2026-05-18  9:12   ` Anshul Dalal
  2026-05-18  9:48     ` Ilias Apalodimas
  0 siblings, 1 reply; 6+ messages in thread
From: Anshul Dalal @ 2026-05-18  9:12 UTC (permalink / raw)
  To: Ilias Apalodimas, Anshul Dalal
  Cc: u-boot, Tom Rini, Dhruva Gole, Mark Kettenis, Patrice Chotard,
	Moteen Shah, Beleswar Padhi, Wadim Egorov, Chintan Vankar

On Mon May 18, 2026 at 1:34 PM IST, Ilias Apalodimas wrote:
> Hi Anshul
>
> On Tue, 12 May 2026 at 14:03, Anshul Dalal <anshuld@ti.com> wrote:
>>
>> Currently the sequence to enable caches for the A53/A72 core on K3
>> devices looks as follows:
>>
>>  1. Map entire DDR banks
>>  2. Setup page tables and enable MMU (done by mmu_setup)
>>  3. Unmap reserved-memory regions
>>  4. Enable caches
>>
>> However there is a brief period of execution between #2 and #3 where the
>> core can issue speculative accesses to the entire DDR space (including
>> the reserved-memory regions) despite the caches being disabled.
>
> This is indeed a problem and the fix looks correct.
> What worries me though is that the mmu is common across v8 boards. Is
> there a way to generalize this instead of adding per board variants?
>

I think the issue here is that mmu_setup does two things, first it sets
up the page tables and then it enables the MMU right after that.

We could modify mmu_setup so that it only does the former as follows:

	--- a/arch/arm/cpu/armv8/cache_v8.c
	+++ b/arch/arm/cpu/armv8/cache_v8.c
	@@ -801,20 +801,20 @@ static void setup_all_pgtables(void)
	 /* to activate the MMU we need to set up virtual memory */
	 __weak void mmu_setup(void)
	 {
		int el;

	+       /* disable the mmu */
	+       set_sctlr(get_sctlr() & ~CR_M);
	+
		/* Set up page tables only once */
		if (!gd->arch.tlb_fillptr)
			setup_all_pgtables();

		el = current_el();
		set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(NULL, NULL),
				  MEMORY_ATTRIBUTES);
	-
	-       /* enable the mmu */
	-       set_sctlr(get_sctlr() | CR_M);
	 }

Then we can have an `mmu_enable` to explicitly enable the MMU:

	void mmu_enable(void) {
		/* enable the mmu */
		set_sctlr(get_sctlr() | CR_M);
	}

Regards,
Anshul

>
>>
>> A firewall exception is triggered whenever such speculative access is
>> made to secure DDR region of TFA or OP-TEE. This patch fixes the issue
>> by re-ordering the sequence as follows:
>>
>>  1. Map entire DDR banks
>>  2. Setup page tables
>>  3. Unmap reserved-memory regions
>>  4. Enable MMU
>>  5. Enable caches
>>
>> Fixes: f1c694b8fdde ("mach-k3: map all banks using mem_map_from_dram_banks")
>> Signed-off-by: Anshul Dalal <anshuld@ti.com>
>> ---

[snip]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH master] mach-k3: enable mmu after reserved memory is unmapped
  2026-05-18  9:12   ` Anshul Dalal
@ 2026-05-18  9:48     ` Ilias Apalodimas
  2026-05-18 10:08       ` Anshul Dalal
  0 siblings, 1 reply; 6+ messages in thread
From: Ilias Apalodimas @ 2026-05-18  9:48 UTC (permalink / raw)
  To: Anshul Dalal
  Cc: u-boot, Tom Rini, Dhruva Gole, Mark Kettenis, Patrice Chotard,
	Moteen Shah, Beleswar Padhi, Wadim Egorov, Chintan Vankar

On Mon, 18 May 2026 at 12:12, Anshul Dalal <anshuld@ti.com> wrote:
>
> On Mon May 18, 2026 at 1:34 PM IST, Ilias Apalodimas wrote:
> > Hi Anshul
> >
> > On Tue, 12 May 2026 at 14:03, Anshul Dalal <anshuld@ti.com> wrote:
> >>
> >> Currently the sequence to enable caches for the A53/A72 core on K3
> >> devices looks as follows:
> >>
> >>  1. Map entire DDR banks
> >>  2. Setup page tables and enable MMU (done by mmu_setup)
> >>  3. Unmap reserved-memory regions
> >>  4. Enable caches
> >>
> >> However there is a brief period of execution between #2 and #3 where the
> >> core can issue speculative accesses to the entire DDR space (including
> >> the reserved-memory regions) despite the caches being disabled.
> >
> > This is indeed a problem and the fix looks correct.
> > What worries me though is that the mmu is common across v8 boards. Is
> > there a way to generalize this instead of adding per board variants?
> >
>
> I think the issue here is that mmu_setup does two things, first it sets
> up the page tables and then it enables the MMU right after that.
>
> We could modify mmu_setup so that it only does the former as follows:
>
>         --- a/arch/arm/cpu/armv8/cache_v8.c
>         +++ b/arch/arm/cpu/armv8/cache_v8.c
>         @@ -801,20 +801,20 @@ static void setup_all_pgtables(void)
>          /* to activate the MMU we need to set up virtual memory */
>          __weak void mmu_setup(void)
>          {
>                 int el;
>
>         +       /* disable the mmu */
>         +       set_sctlr(get_sctlr() & ~CR_M);
>         +
>                 /* Set up page tables only once */
>                 if (!gd->arch.tlb_fillptr)
>                         setup_all_pgtables();
>
>                 el = current_el();
>                 set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(NULL, NULL),
>                                   MEMORY_ATTRIBUTES);
>         -
>         -       /* enable the mmu */
>         -       set_sctlr(get_sctlr() | CR_M);
>          }
>
> Then we can have an `mmu_enable` to explicitly enable the MMU:
>
>         void mmu_enable(void) {
>                 /* enable the mmu */
>                 set_sctlr(get_sctlr() | CR_M);
>         }

Ok that sounds reasonable. I greped for mmu_setup() and
dcache_enable(), but I can't estimate how intrusive this is going to
be to include all v8 boards.

Thanks
/Ilias
>
> Regards,
> Anshul
>
> >
> >>
> >> A firewall exception is triggered whenever such speculative access is
> >> made to secure DDR region of TFA or OP-TEE. This patch fixes the issue
> >> by re-ordering the sequence as follows:
> >>
> >>  1. Map entire DDR banks
> >>  2. Setup page tables
> >>  3. Unmap reserved-memory regions
> >>  4. Enable MMU
> >>  5. Enable caches
> >>
> >> Fixes: f1c694b8fdde ("mach-k3: map all banks using mem_map_from_dram_banks")
> >> Signed-off-by: Anshul Dalal <anshuld@ti.com>
> >> ---
>
> [snip]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH master] mach-k3: enable mmu after reserved memory is unmapped
  2026-05-18  9:48     ` Ilias Apalodimas
@ 2026-05-18 10:08       ` Anshul Dalal
  0 siblings, 0 replies; 6+ messages in thread
From: Anshul Dalal @ 2026-05-18 10:08 UTC (permalink / raw)
  To: Ilias Apalodimas, Anshul Dalal
  Cc: u-boot, Tom Rini, Dhruva Gole, Mark Kettenis, Patrice Chotard,
	Moteen Shah, Beleswar Padhi, Wadim Egorov, Chintan Vankar

On Mon May 18, 2026 at 3:18 PM IST, Ilias Apalodimas wrote:
> On Mon, 18 May 2026 at 12:12, Anshul Dalal <anshuld@ti.com> wrote:
>>
>> On Mon May 18, 2026 at 1:34 PM IST, Ilias Apalodimas wrote:
>> > Hi Anshul
>> >
>> > On Tue, 12 May 2026 at 14:03, Anshul Dalal <anshuld@ti.com> wrote:
>> >>
>> >> Currently the sequence to enable caches for the A53/A72 core on K3
>> >> devices looks as follows:
>> >>
>> >>  1. Map entire DDR banks
>> >>  2. Setup page tables and enable MMU (done by mmu_setup)
>> >>  3. Unmap reserved-memory regions
>> >>  4. Enable caches
>> >>
>> >> However there is a brief period of execution between #2 and #3 where the
>> >> core can issue speculative accesses to the entire DDR space (including
>> >> the reserved-memory regions) despite the caches being disabled.
>> >
>> > This is indeed a problem and the fix looks correct.
>> > What worries me though is that the mmu is common across v8 boards. Is
>> > there a way to generalize this instead of adding per board variants?
>> >
>>
>> I think the issue here is that mmu_setup does two things, first it sets
>> up the page tables and then it enables the MMU right after that.
>>
>> We could modify mmu_setup so that it only does the former as follows:
>>
>>         --- a/arch/arm/cpu/armv8/cache_v8.c
>>         +++ b/arch/arm/cpu/armv8/cache_v8.c
>>         @@ -801,20 +801,20 @@ static void setup_all_pgtables(void)
>>          /* to activate the MMU we need to set up virtual memory */
>>          __weak void mmu_setup(void)
>>          {
>>                 int el;
>>
>>         +       /* disable the mmu */
>>         +       set_sctlr(get_sctlr() & ~CR_M);
>>         +
>>                 /* Set up page tables only once */
>>                 if (!gd->arch.tlb_fillptr)
>>                         setup_all_pgtables();
>>
>>                 el = current_el();
>>                 set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(NULL, NULL),
>>                                   MEMORY_ATTRIBUTES);
>>         -
>>         -       /* enable the mmu */
>>         -       set_sctlr(get_sctlr() | CR_M);
>>          }
>>
>> Then we can have an `mmu_enable` to explicitly enable the MMU:
>>
>>         void mmu_enable(void) {
>>                 /* enable the mmu */
>>                 set_sctlr(get_sctlr() | CR_M);
>>         }
>
> Ok that sounds reasonable. I greped for mmu_setup() and
> dcache_enable(), but I can't estimate how intrusive this is going to
> be to include all v8 boards.
>

From what I can see, mach-k3 is the only user that explicitly calls
default mmu_setup whereas others just override the weak definition.

I'll test the next revision on several K3 boards and post the fix.

Thanks!

>> >
>> >>
>> >> A firewall exception is triggered whenever such speculative access is
>> >> made to secure DDR region of TFA or OP-TEE. This patch fixes the issue
>> >> by re-ordering the sequence as follows:
>> >>
>> >>  1. Map entire DDR banks
>> >>  2. Setup page tables
>> >>  3. Unmap reserved-memory regions
>> >>  4. Enable MMU
>> >>  5. Enable caches
>> >>
>> >> Fixes: f1c694b8fdde ("mach-k3: map all banks using mem_map_from_dram_banks")
>> >> Signed-off-by: Anshul Dalal <anshuld@ti.com>
>> >> ---
>>
>> [snip]


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-05-18 10:09 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-12 11:03 [PATCH master] mach-k3: enable mmu after reserved memory is unmapped Anshul Dalal
2026-05-13  4:51 ` Anshul Dalal
2026-05-18  8:04 ` Ilias Apalodimas
2026-05-18  9:12   ` Anshul Dalal
2026-05-18  9:48     ` Ilias Apalodimas
2026-05-18 10:08       ` Anshul Dalal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.