Signed-off-by: Vasilis Liaskovitis <[email protected]>
---
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
_______________________________________________
SeaBIOS mailing list
[email protected]
http://www.seabios.org/mailman/listinfo/seabios