> On 13 Jan 2023, at 10:11, Julien Grall <jul...@xen.org> wrote:
> 
> From: Julien Grall <jgr...@amazon.com>
> 
> At the moment, switch_ttbr() is switching the TTBR whilst the MMU is
> still on.
> 
> Switching TTBR is like replacing existing mappings with new ones. So
> we need to follow the break-before-make sequence.
> 
> In this case, it means the MMU needs to be switched off while the
> TTBR is updated. In order to disable the MMU, we need to first
> jump to an identity mapping.
> 
> Rename switch_ttbr() to switch_ttbr_id() and create an helper on
> top to temporary map the identity mapping and call switch_ttbr()
> via the identity address.
> 
> switch_ttbr_id() is now reworked to temporarily turn off the MMU
> before updating the TTBR.
> 
> We also need to make sure the helper switch_ttbr() is part of the
> identity mapping. So move _end_boot past it.
> 
> The arm32 code will use a different approach. So this issue is for now
> only resolved on arm64.
> 
> Signed-off-by: Julien Grall <jgr...@amazon.com>

The sequence looks ok to me, also the reasoning about barriers and
register dependencies discussed in the previous version.

Reviewed-by: Luca Fancellu <luca.fance...@arm.com>

I’ve also built for arm32/64 and test this patch on fvp, booting Dom0
and creating/running/destroying some guests

Tested-by: Luca Fancellu <luca.fance...@arm.com>



Reply via email to