|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 12/17] xen/arm64: head: Move assembly switch to the runtime PT in secondary CPUs path
On Mon, 10 Jun 2019, Julien Grall wrote:
> The assembly switch to the runtime PT is only necessary for the
> secondary CPUs. So move the code in the secondary CPUs path.
>
> While this is definitely not compliant with the Arm Arm as we are
> switching between two differents set of page-tables without turning off
> the MMU. Turning off the MMU is impossible here as the ID map may clash
> with other mappings in the runtime page-tables. This will require more
> rework to avoid the problem. So for now add a TODO in the code.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> xen/arch/arm/arm64/head.S | 33 +++++++++++++++++----------------
> 1 file changed, 17 insertions(+), 16 deletions(-)
>
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index d673f7c0d8..6be4af7579 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -344,6 +344,23 @@ GLOBAL(init_secondary)
> br x0
> secondary_switched:
> bl setup_fixmap
> +
> + /*
> + * Non-boot CPUs need to move on to the proper pagetables, which were
> + * setup in init_secondary_pagetables.
> + *
> + * XXX: This is not compliant with the Arm Arm.
> + */
> + ldr x4, =init_ttbr /* VA of TTBR0_EL2 stashed by CPU 0 */
> + ldr x4, [x4] /* Actual value */
> + dsb sy
> + msr TTBR0_EL2, x4
> + dsb sy
> + isb
> + tlbi alle2
> + dsb sy /* Ensure completion of TLB flush */
> + isb
> +
> b launch
> ENDPROC(init_secondary)
>
> @@ -657,22 +674,6 @@ ENDPROC(setup_fixmap)
> launch:
> PRINT("- Ready -\r\n")
>
> - /* The boot CPU should go straight into C now */
> - cbz x22, launch
> -
> - /* Non-boot CPUs need to move on to the proper pagetables, which were
> - * setup in init_secondary_pagetables. */
> -
> - ldr x4, =init_ttbr /* VA of TTBR0_EL2 stashed by CPU 0 */
> - ldr x4, [x4] /* Actual value */
> - dsb sy
> - msr TTBR0_EL2, x4
> - dsb sy
> - isb
> - tlbi alle2
> - dsb sy /* Ensure completion of TLB flush */
> - isb
> -
> ldr x0, =init_data
> add x0, x0, #INITINFO_stack /* Find the boot-time stack */
> ldr x0, [x0]
> --
> 2.11.0
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |