Skip to content
Snippets Groups Projects
  • Glauber Costa's avatar
    cc3d517a
    work around xen x2apic bug · cc3d517a
    Glauber Costa authored
    The x2APIC specification says that reading from the X2APIC_ID MSR should return
    the physical apic id of the current processor. However, the Xen implementation
    (as of 4.2.2) is broken, and reads actually return old style xAPIC id. Even if
    they fix it, we still have HVs deployed around that will return the wrong ID.
    We can work around this by testing if the returned APIC id is in the form (id
    << 24), since in that case, the first 24 bits will all be zeroed. Then at least
    we can get this working everywhere. This may pose a problem if we want to ever
    support more than 1 << 24 vCPUs (or if any other HV has some random x2apic
    ids), but that is highly unlikely anyway.
    cc3d517a
    History
    work around xen x2apic bug
    Glauber Costa authored
    The x2APIC specification says that reading from the X2APIC_ID MSR should return
    the physical apic id of the current processor. However, the Xen implementation
    (as of 4.2.2) is broken, and reads actually return old style xAPIC id. Even if
    they fix it, we still have HVs deployed around that will return the wrong ID.
    We can work around this by testing if the returned APIC id is in the form (id
    << 24), since in that case, the first 24 bits will all be zeroed. Then at least
    we can get this working everywhere. This may pose a problem if we want to ever
    support more than 1 << 24 vCPUs (or if any other HV has some random x2apic
    ids), but that is highly unlikely anyway.