[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/3] acpi_piix4: Call KVM_SETSTATE_VCPU ioctl on cpu
From: |
Vasilis Liaskovitis |
Subject: |
[Qemu-devel] [PATCH 3/3] acpi_piix4: Call KVM_SETSTATE_VCPU ioctl on cpu ejection |
Date: |
Fri, 13 Jan 2012 12:11:32 +0100 |
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);
+ if (ret)
+ fprintf(stderr, "KVM_SETSTATE_VCPU failed: %s\n",
+ strerror(ret));
+ }
+ }
PIIX4_DPRINTF("cpuej write %x <== %d\n", addr, val);
}
--
1.7.7.3
[Qemu-devel] [PATCH 3/3] acpi_piix4: Call KVM_SETSTATE_VCPU ioctl on cpu ejection,
Vasilis Liaskovitis <=