On 06/15/2010 01:30 AM, Marcelo Tosatti wrote:
Use information provided in exit_qualification to shortcut EOI path.

Reduces EOI latency from 4k to 2k cycles on Nehalem.


This already came up once - IIRC from Eddie Dong.

  static int handle_apic_access(struct kvm_vcpu *vcpu)
  {
+       unsigned long exit_qualification = vmcs_readl(EXIT_QUALIFICATION);
+       int access_type, offset;
+
+       access_type = (exit_qualification>>  12)&  0xf;
+       offset = exit_qualification&  0xfff;
+       if (access_type == 1&&  offset == APIC_EOI) {
+               kvm_lapic_set_eoi(vcpu);
+               skip_emulated_instruction(vcpu);
+               return 1;
+       }
+
        return emulate_instruction(vcpu, 0, 0, 0) == EMULATE_DONE;
  }


This fails if the instruction is STOS, MOVS, or a RMW instruction as it doesn't update registers and flags.

We could try to do tricks to detect this, but we already have x2apic for Linux and the corresponding Hyper-V extension, which improve a lot of other stuff, at least for newer guests.

\

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to