I'm studying Intel PT that trace the guest mode with KVM-QEMU in Linux.
To ensure Intel PT targeting 'VM Only', I found that the cpu need to support three pre-conditions.
Firstly, the "Intel PT uses guest physical addresses" should be 1 in Secondary Processor-Based VM-Execution Controls fields.
Secondly, the "Load IA32_RTIT_CTL" should be 1 in VM-ENTRY CONTROL fields.
Lastly, the "Clear IA32_RTIT_CTL" also should be 1 in VM-EXIT CONTROL fields.
(see SDM [page 3997])
I tested on Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz & Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz and checked that the MSR_IA32_VMX_MISC supports Intel PT.
However, I get the same results as below.
[2215679.123797] rdmsr(MSR_IA32_VMX_PROCBASED_CTLS2, LOW, HIGH)
[2215679.123798] [REFERENCE]SECONDARY_EXEC_PT_USE_GPA is 0x1000000
[2215679.123799] [REFERENCE]Enable_EPT is 0x10
[2215679.123800] LOW : 0x0
[2215679.123802] HIGH: 0x25f7fff
[2215679.123805] rdmsr(MSR_IA32_VMX_EXIT_CTLS, LOW, HIGH)
[2215679.123806] [REFERENCE]VM_EXIT_CLEAR_IA32_RTIT_CTL is 0x2000000
[2215679.123808] LOW : 0x36dff
[2215679.123809] HIGH: 0x1ffffff
[2215679.123812] rdmsr(MSR_IA32_VMX_ENTRY_CTLS, LOW, HIGH)
[2215679.123814] [REFERENCE]VM_ENTRY_LOAD_IA32_RTIT_CTL is 0x40000
[2215679.123815] LOW : 0x11ff
[2215679.123817] HIGH: 0x3ffff
It does not support the above mentioned options.
Do I have to set the any options in BIOS or buy any new CPU? (I've already set up VT-x, VT-d in BIOS)
Thank you :)
For more complete information about compiler optimizations, see our Optimization Notice.