[libvirt] [PATCH 2/2] qemu: Add support for EOI with APIC

Martin Kletzander mkletzan at redhat.com
Fri Sep 14 06:45:24 UTC 2012


On 09/13/2012 04:52 PM, Michal Privoznik wrote:
> On 13.09.2012 16:12, Martin Kletzander wrote:
>> This patch adds full support for EOI setting for domains. Because this
>> is CPU feature (flag), the model needs to be added even when it's not
>> specified. Fortunately this problem was already solved with kvmclock,
>> so this patch simply abuses that.
>>
>> And due to the size of the patch (17 lines) I dared to include the tests.
>> ---
>>  src/qemu/qemu_command.c                            | 17 +++++++++++++
>>  .../qemuxml2argv-cpu-eoi-disabled.args             |  4 ++++
>>  .../qemuxml2argv-cpu-eoi-disabled.xml              | 28 ++++++++++++++++++++++
>>  .../qemuxml2argv-cpu-eoi-enabled.args              |  4 ++++
>>  .../qemuxml2argv-cpu-eoi-enabled.xml               | 28 ++++++++++++++++++++++
>>  .../qemuxml2argv-eoi-disabled.args                 |  4 ++++
>>  .../qemuxml2argvdata/qemuxml2argv-eoi-disabled.xml | 25 +++++++++++++++++++
>>  .../qemuxml2argvdata/qemuxml2argv-eoi-enabled.args |  4 ++++
>>  .../qemuxml2argvdata/qemuxml2argv-eoi-enabled.xml  | 25 +++++++++++++++++++
>>  tests/qemuxml2argvtest.c                           |  5 ++++
>>  tests/qemuxml2xmltest.c                            |  6 +++++
>>  11 files changed, 150 insertions(+)
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-disabled.args
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-disabled.xml
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-enabled.args
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-enabled.xml
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-eoi-disabled.args
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-eoi-disabled.xml
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-eoi-enabled.args
>>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-eoi-enabled.xml
>>
>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>> index cd4ee93..4aed8f6 100644
>> --- a/src/qemu/qemu_command.c
>> +++ b/src/qemu/qemu_command.c
>> @@ -4193,6 +4193,18 @@ qemuBuildCpuArgStr(const struct qemud_driver *driver,
>>          }
>>      }
>>
>> +    if (def->apic_eoi) {
>> +        char sign;
>> +        if (def->apic_eoi == VIR_DOMAIN_APIC_EOI_ON)
>> +            sign = '+';
>> +        else
>> +            sign = '-';
>> +
>> +        virBufferAsprintf(&buf, "%s,%ckvm_pv_eoi",
>> +                          have_cpu ? "" : default_model,
>> +                          sign);
>> +    }
>> +
>>      if (virBufferError(&buf))
>>          goto no_memory;
>>
>> @@ -7650,6 +7662,11 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
>>                  }
>>                  dom->clock.timers[i]->present = present;
>>                  ret = 0;
>> +            } else if (STREQ(feature, "kvm_pv_eoi")) {
>> +                if (policy == VIR_CPU_FEATURE_REQUIRE)
>> +                    dom->apic_eoi = VIR_DOMAIN_APIC_EOI_ON;
>> +                else
>> +                    dom->apic_eoi = VIR_DOMAIN_APIC_EOI_OFF;
> 
> Hey, this is nice. I feel like we are forgetting this part sometimes.
> 
>>              } else {
>>                  if (!cpu) {
>>                      if (!(cpu = qemuInitGuestCPU(dom)))
> 
> ACK
> 
> Michal
> 

Thanks, pushed.

Martin




More information about the libvir-list mailing list