[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/3] acpi_piix4: Call KVM_SETSTATE_VCPU ioctl on
From: |
Jan Kiszka |
Subject: |
Re: [Qemu-devel] [PATCH 3/3] acpi_piix4: Call KVM_SETSTATE_VCPU ioctl on cpu ejection |
Date: |
Fri, 13 Jan 2012 12:58:53 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
On 2012-01-13 12:11, Vasilis Liaskovitis wrote:
> Signed-off-by: Vasilis Liaskovitis <address@hidden>
> ---
> hw/acpi_piix4.c | 21 +++++++++++++++++++++
> 1 files changed, 21 insertions(+), 0 deletions(-)
>
> diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
> index 8bf30dd..12eef55 100644
> --- a/hw/acpi_piix4.c
> +++ b/hw/acpi_piix4.c
> @@ -502,6 +502,27 @@ static uint32_t cpuej_read(void *opaque, uint32_t addr)
>
> static void cpuej_write(void *opaque, uint32_t addr, uint32_t val)
> {
> + struct kvm_vcpu_state state;
> + CPUState *env;
> + int cpu;
> + int ret;
> +
> + cpu = ffs(val);
> + /* zero means no bit was set, i.e. no CPU ejection happened */
> + if (!cpu)
> + return;
> + cpu--;
> + env = cpu_phyid_to_cpu((uint64_t)cpu);
> + if (env != NULL) {
> + if (env->state == CPU_STATE_ZAPREQ) {
> + state.vcpu_id = env->cpu_index;
> + state.state = 1;
> + ret = kvm_vm_ioctl(env->kvm_state, KVM_SETSTATE_VCPU, &state);
That breaks in the absence of KVM or if it is not enabled.
Also, where was this IOCTL introduced? Where are the linux header changes?
> + if (ret)
> + fprintf(stderr, "KVM_SETSTATE_VCPU failed: %s\n",
> + strerror(ret));
> + }
> + }
> PIIX4_DPRINTF("cpuej write %x <== %d\n", addr, val);
> }
>
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux