Hi Nadav,The last claim is true in practice, according to Gleb, but it is not necessarily so according to the specifications. Pentium 4, Intel Xeon and P6 family processors support APIC base relocation. See the Intel SDM section 10.4.5. Anyhow, Gleb claims it is not used by any OS.
Thanks for the reply, please see below.
On 07/07/2014 08:10 PM, Nadav Amit wrote:
On 7/7/14, 2:54 PM, Gleb Natapov wrote:
On Mon, Jul 07, 2014 at 02:42:27PM +0300, Nadav Amit wrote:If there is no general need, I will not send a fix. However, I think the
Tang,There is no OS out there that relocates APIC base (in fact it was not
Running some (unrelated) tests I see that KVM does not handle APIC base
relocation correctly. When the base is changed, kvm_lapic_set_base just
changes lapic->base_address without taking further action (i.e.,
modifying
the VMCS apic address in VMX).
This patch follows KVM bad behavior by using the constant
VMX_APIC_ACCESS_PAGE_ADDR instead of lapic->base_address.
always
relocatable on real HW), so there is not point in complicating the
code to support
it. In fact current APIC_ACCESS_ADDR handling relies on the fact that
all vcpus
has apic mapped at the same address.
Why would you want to fix it?
Anyhow, I didn't see anything that would make my life (in fixing the
lapic
base issue) too difficult. Yet, feel free in making it more
"fix-friendly".
very least a warning message should be appear if the guest relocates the
APIC base.
Maybe I didn't understand you question correctly. If I'm wrong, please
tell me.
This patch does not relocate APIC base in guest, but in host. Host migrates
the apic page to somewhere else, and KVM updates ept pagetable to track it.
In guest, apic base address (gpa) doesn't change.
No, it is guest physical address.
Is this lapic->base_address a hpa ?
Is there anywhere I need to update in my patch ?