Re: [kvmarm] [PATCH v10 06/14] KVM: ARM: Hypervisor inititalization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 23, 2012 at 11:27 PM, Christoffer Dall
<c.dall@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, Aug 23, 2012 at 11:08 AM, Lei Wen <adrian.wenl@xxxxxxxxx> wrote:
>> Hi Christoffer,
>>
>> [snip]
>>
>>> diff --git a/arch/arm/kvm/init.S b/arch/arm/kvm/init.S
>>> index 1dc8926..4db26cb 100644
>>> --- a/arch/arm/kvm/init.S
>>> +++ b/arch/arm/kvm/init.S
>>> @@ -15,5 +15,135 @@
>>>   * along with this program; if not, write to the Free Software
>>>   * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
>>>   */
>>> +
>>> +#include <linux/linkage.h>
>>> +#include <asm/unified.h>
>>>  #include <asm/asm-offsets.h>
>>>  #include <asm/kvm_asm.h>
>>> +#include <asm/kvm_arm.h>
>>> +
>>> +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
>>> +@  Hypervisor initialization
>>> +@    - should be called with:
>>> +@        r0 = Hypervisor pgd pointer
>>> +@        r1 = top of Hyp stack (kernel VA)
>>> +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
>>> +       .text
>>> +       .arm
>>> +        .pushsection    .hyp.idmap.text,"ax"
>>> +       .align 12
>>> +__kvm_hyp_init:
>>> +       .globl __kvm_hyp_init
>>> +
>>> +       @ Hyp-mode exception vector
>>> +       nop
>>> +       nop
>>> +       nop
>>> +       nop
>>> +       nop
>>> +       b       __do_hyp_init
>>> +       nop
>>> +       nop
>>> +
>>> +__do_hyp_init:
>>> +       @ Set the sp to end of this page and push data for later use
>>> +       mov     sp, pc
>>> +       bic     sp, sp, #0x0ff
>>> +       bic     sp, sp, #0xf00
>>> +       add     sp, sp, #0x1000
>>> +       push    {r0, r1, r2, r12}
>>
>> Is safe to use the stack here? Since our HYP memory mapping is
>> gotten valid after the following HTTBR being set as I think.
>>
>
> yes, as you can see in the end of this block we have a .align 12
> before __kvm_hyp_init_end giving us the stack space we need in this
> page (as long as this init code doesn't grow beyond ~3K

I know this area is already being mapped in hyp_init_static_idmap,
however, due to the HTTBR is not being set up yet in the below code.
So how the memory get mapped in the hyp mode? I mean what I could
understand the hyp virtual address only could be seen after HTTBR
being set up.


>
>
>
>>> +
>>> +       @ Set the HTTBR to point to the hypervisor PGD pointer passed to
>>> +       @ function and set the upper bits equal to the kernel PGD.
>>> +       mrrc    p15, 1, r1, r2, c2
>>> +       mcrr    p15, 4, r0, r2, c2
>>> +
>>
>> [snip]

Thanks,
Lei
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux