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

Michal Privoznik mprivozn at redhat.com
Thu Sep 13 14:52:51 UTC 2012


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




More information about the libvir-list mailing list