Dear Friends,
Thanks for your assistance!
We would like to ask you a question about the KVM internals.
Our module includes a timer which (once in every second) fetches the IDT value
of every online VCPU in the system using the kvm_x86_ops->get_idt ; the code
looks like:
struct kvm_vcpu *curr_vcpu;
struct desc_ptr dt;
list_for_each_entry(kvm, vms_list, vm_list)
{
for (i = 0; i < kvm->online_vcpus.counter; i++)
{
curr_vcpu = kvm->vcpus[i];
kvm_x86_ops->get_idt(curr_vcpu, &dt);
}
}
We have noticed that get_idt returns DIFFERENT values for the same VCPU (i.e.
for the same value of i that refers to a given VCPU). We cannot understand this
issue; could you explain ?
It is very strange since nobody changes the IDT value (as , for example,
rootkits do).
Regards,
the Israeli KVM team