프로그래밍

vmxon 사용시 주의점

하이퍼바이저는 vmxon 명령어를 맨 처음으로 실행 해 vmx 를 활성화 해야한다. vmxon 명령어가 실행되면 프로세서가 VMX_ROOT 모드로 진입하게 되는데 이 때 하이퍼바이저가 먼저 확인해야 하는 조건이 있다.


- CR4 레지스터의 13번째 bit인 VMXE(0x2000)를 Enable 해야한다. VMXE가 Enable 되지 않은 상태인데 실행하게 되면 #UD(undefined opcode) 예외가 발생된다.

- CR0의 NE, PG, PE 모두 VMX_ROOT 모드로 실행되는 동안에 Enable상태로 설정되어 있어야 한다. 만약에 이 비트들이 Clear 되는경우 #GP 예외가 발생된다.

- A20M#은 vmxon 을 실행하기 전에 앞서 off 가 되어야 한다. 하이퍼바이저는 vmxon 이 실행되기전에 V86 모드가 아니어야하고 (eflags.vm이 0이 되어야 한다.) 호환성모드(efer.lma && !cs.l must be false)여야 한다.

'프로그래밍' 카테고리의 다른 글

IoCreateDevice와 IoCreateDeviceSecure  (0) 2014.06.23
The funny page table terminology on AMD64  (0) 2014.06.03
TSC(Time Stamp Counter)란?  (0) 2014.04.04
20140402 구디역 벚꽃 산책코스  (0) 2014.04.02
This function is thread-safe.  (0) 2014.03.20