コラム3

KVM shadow pagingの実装の特徴

KVM用語

  • level
    page tableのレベル。
    page tableの段数の事で、リーフから数えてMMUのルート側に向かって1、2、3、4とつけます。

 

トップレベル(レベル数がもっとも大きいものを)をrootと呼びます。仮想アドレス空間にマップされるページをレベル0と呼ぶことがあります。

64bitの場合 4 level
32bit PAEの場合 3 level
32bitの場合 2 level

このようにレベルをつけるとpage tableの段数によらず、page table pageはlevel 1でpage directoryはlevel 2となり、コードを共有化する上で好都合となります。これに対応して次の定数が定義されています。

#define PT64_ROOT_LEVEL 4
#define PT32_ROOT_LEVEL 2
#define PT32E_ROOT_LEVEL 3
#define PT_DIRECTORY_LEVEL 2
#define PT_PAGE_TABLE_LEVEL 1

この用語はXenに由来すると思われます。

コード上では次の略語及び対応する型が使われています。

 

  • gpa (gpa_t)
    Guest Physical Address
  • gfn (gfn_t)
    Guest Frame Number
  • gpte
    Guest Page Table Entry
  • gva (gva_t)
    Guest Virtual Address
  • spte
    Shadow Page Table Entry