Skip to the content.

ARM KVM 的大致代码流程

很难的哇

资源

内存虚拟化

中断虚拟化

整个 kvm 只有 17000 行,其中 kvm/vgic 下有 7000 行

简单跟踪一下其中的源码

找到 exit 的流程

在 handle_exit 中引用的几个内容为,他们是什么含义,为什么在 handle_exit 中处于几乎无需处理的状态:

#define ARM_EXCEPTION_IRQ     0
#define ARM_EXCEPTION_EL1_SERROR  1
#define ARM_EXCEPTION_TRAP    2
#define ARM_EXCEPTION_IL      3

将 arm_exit_handlers 中,找到对应的手册

D13.2.37 中

查看一下 kvm_vcpu_arch 中的内容

ARM 的 SERROR

SMC : Secure Monitor Call

ARM exception

ARM data abort

ARM page walking

TTBR 和 TTBCR 基础知识

TTBR0 用于存放用户空间的一级页表基址,TTBR1 存放内核空间的一级页表基址。

ARM Address Space

分析一下 ARM 的 exception

首先在这里定义的:

SYM_CODE_START(vectors)
    kernel_ventry   1, t, 64, sync      // Synchronous EL1t
    kernel_ventry   1, t, 64, irq       // IRQ EL1t
    kernel_ventry   1, t, 64, fiq       // FIQ EL1h
    kernel_ventry   1, t, 64, error     // Error EL1t

    kernel_ventry   1, h, 64, sync      // Synchronous EL1h
    kernel_ventry   1, h, 64, irq       // IRQ EL1h
    kernel_ventry   1, h, 64, fiq       // FIQ EL1h
    kernel_ventry   1, h, 64, error     // Error EL1h

    kernel_ventry   0, t, 64, sync      // Synchronous 64-bit EL0
    kernel_ventry   0, t, 64, irq       // IRQ 64-bit EL0
    kernel_ventry   0, t, 64, fiq       // FIQ 64-bit EL0
    kernel_ventry   0, t, 64, error     // Error 64-bit EL0

    kernel_ventry   0, t, 32, sync      // Synchronous 32-bit EL0
    kernel_ventry   0, t, 32, irq       // IRQ 32-bit EL0
    kernel_ventry   0, t, 32, fiq       // FIQ 32-bit EL0
    kernel_ventry   0, t, 32, error     // Error 32-bit EL0

[x] arm 需要额外分配很多空间吗?

如何理解 pkvm

https://source.android.com/docs/core/virtualization/architecture?hl=zh-cn

了解下 ARM 中的 virt machine type

最大支持的内存修改的好随意啊

arm sve

https://alastairreid.github.io/papers/sve-ieee-micro-2017.pdf

访问时钟是如何确定的?

看看

有趣的 TODO

  1. 为什么 arm 有那么多的 vgic 版本?
    • 而且 arch/arm64/kvm/vgic/vgic-v5.c 的代码量这么小?
    • kvm 选择使用那一个 vgic 是在哪里决定的?
    • 虚拟机是如何知道 kvm 提供那一个 vgic ,是从哪里知道的。
  2. 也许从 arm 的 vgic 中看 irqfd ,以及什么 gsi 之类的东西: arch/arm64/kvm/vgic/vgic-irqfd.c

  3. 看看 arm 对于变长指令的支持的情况

arm 这个必须看看

https://www.cnblogs.com/LoyenWang/p/13584020.html

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。