Merge tag 'pinctrl-v4.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[sfrench/cifs-2.6.git] / arch / arm64 / kvm / hyp-init.S
index 6fd91b31a131857c9dd70002245f99220adc5a31..4576b86a5579ccb227d8533c4b0c4fa5ad22de93 100644 (file)
@@ -57,6 +57,7 @@ __invalid:
         * x0: HYP pgd
         * x1: HYP stack
         * x2: HYP vectors
+        * x3: per-CPU offset
         */
 __do_hyp_init:
        /* Check for a stub HVC call */
@@ -64,6 +65,9 @@ __do_hyp_init:
        b.lo    __kvm_handle_stub_hvc
 
        phys_to_ttbr x4, x0
+alternative_if ARM64_HAS_CNP
+       orr     x4, x4, #TTBR_CNP_BIT
+alternative_else_nop_endif
        msr     ttbr0_el2, x4
 
        mrs     x4, tcr_el1
@@ -119,9 +123,8 @@ CPU_BE(     orr     x4, x4, #SCTLR_ELx_EE)
        mov     sp, x1
        msr     vbar_el2, x2
 
-       /* copy tpidr_el1 into tpidr_el2 for use by HYP */
-       mrs     x1, tpidr_el1
-       msr     tpidr_el2, x1
+       /* Set tpidr_el2 for use by HYP */
+       msr     tpidr_el2, x3
 
        /* Hello, World! */
        eret