Saya mencoba memahami dasar-dasar cara kerja Intel VMX/VT-x. Dalam Manual Pengembang Perangkat Lunak Intel dikatakan ini tentang VMCS:

Data VMCS diatur ke dalam enam grup logis:
Area status tamu. Status prosesor disimpan ke area status tamu pada VM keluar dan dimuat dari sana pada entri VM.
Area host-state. Status prosesor dimuat dari area host-state pada VM keluar.
...

Masuk akal bagi saya bahwa status CPU disimpan ke area tamu pada pintu keluar VM dan dimuat pada entri VM. Masuk akal juga bahwa status CPU dimuat dari area host-state pada VM keluar... tetapi kapan status CPU disimpan di area host-state? Secara intuitif saya akan mengatakan bahwa itu disimpan pada entri VM, tetapi manual tidak mengatakan demikian ... dapatkah seseorang membantu saya mengklarifikasi ini?

Terima kasih

1
davide ferrè 10 Mei 2021, 11:50

1 menjawab

Jawaban Terbaik

CPU tidak pernah menyimpan status host.
VMM (alias: hypervisor) mengontrol kapan harus mengeksekusi vmlaunch/vmresume dan dengan demikian dapat mengatur area status host yang sesuai sebelum dieksekusi.

Saat entri VM gagal karena VMCS yang tidak valid, eksekusi akan diteruskan ke instruksi berikutnya setelah vmlaunch/vmresume.
Saat entri VM gagal karena status tamu yang tidak valid, eksekusi dilanjutkan dari RIP yang disetel di area status host (seperti yang terjadi saat keluar dari VM).
Jika CPU mengatur area status host, kedua kasus akan identik.

Ini juga mengapa CPU memeriksa area status host sebelum memasuki mode non-root VMX (yaitu meluncurkan VM).

3
Margaret Bloom 10 Mei 2021, 13:56