[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 4/7] acpi/cpu: add cpu hot unplug callback functi
From: |
Zhu Guihua |
Subject: |
[Qemu-devel] [PATCH v3 4/7] acpi/cpu: add cpu hot unplug callback function |
Date: |
Fri, 13 Feb 2015 18:40:19 +0800 |
Signed-off-by: Zhu Guihua <address@hidden>
Signed-off-by: Gu Zheng <address@hidden>
---
cpus.c | 7 +++++++
hw/acpi/cpu_hotplug.c | 8 ++++++++
include/hw/acpi/cpu_hotplug.h | 3 +++
include/qom/cpu.h | 9 +++++++++
4 files changed, 27 insertions(+)
diff --git a/cpus.c b/cpus.c
index 67d10a7..d6e5a5f 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1188,6 +1188,13 @@ void resume_all_vcpus(void)
}
}
+void cpu_remove(CPUState *cpu)
+{
+ cpu->stop = true;
+ cpu->exit = true;
+ qemu_cpu_kick(cpu);
+}
+
/* For temporary buffers for forming a name */
#define VCPU_THREAD_NAME_SIZE 16
diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c
index 42109cd..c47909c 100644
--- a/hw/acpi/cpu_hotplug.c
+++ b/hw/acpi/cpu_hotplug.c
@@ -92,6 +92,14 @@ void acpi_cpu_unplug_request_cb(ACPIREGS *ar, qemu_irq irq,
acpi_send_gpe_event(ar, irq, ACPI_CPU_HOTPLUG_STATUS);
}
+void acpi_cpu_unplug_cb(ACPIREGS *ar, qemu_irq irq, AcpiCpuHotplug *g,
+ DeviceState *dev, Error **errp)
+{
+ CPUState *cpu = CPU(dev);
+
+ cpu_remove(cpu);
+}
+
void acpi_cpu_hotplug_init(MemoryRegion *parent, Object *owner,
AcpiCpuHotplug *gpe_cpu, uint16_t base)
{
diff --git a/include/hw/acpi/cpu_hotplug.h b/include/hw/acpi/cpu_hotplug.h
index 8b15a3d..0f84adb 100644
--- a/include/hw/acpi/cpu_hotplug.h
+++ b/include/hw/acpi/cpu_hotplug.h
@@ -27,6 +27,9 @@ void acpi_cpu_unplug_request_cb(ACPIREGS *ar, qemu_irq irq,
AcpiCpuHotplug *g, DeviceState *dev,
Error **errp);
+void acpi_cpu_unplug_cb(ACPIREGS *ar, qemu_irq irq,
+ AcpiCpuHotplug *g, DeviceState *dev, Error **errp);
+
void acpi_cpu_hotplug_init(MemoryRegion *parent, Object *owner,
AcpiCpuHotplug *gpe_cpu, uint16_t base);
#endif
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index a7d601b..e5e0f2c 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -250,6 +250,7 @@ struct CPUState {
bool created;
bool stop;
bool stopped;
+ bool exit;
volatile sig_atomic_t exit_request;
uint32_t interrupt_request;
int singlestep_enabled;
@@ -614,6 +615,14 @@ void cpu_exit(CPUState *cpu);
void cpu_resume(CPUState *cpu);
/**
+ * cpu_remove:
+ * @cpu: The vCPU to remove.
+ *
+ * Requests the CPU @cpu to be removed.
+ */
+void cpu_remove(CPUState *cpu);
+
+/**
* qemu_init_vcpu:
* @cpu: The vCPU to initialize.
*
--
1.9.3
- [Qemu-devel] [PATCH v3 0/7] cpu: add i386 cpu hot remove support, Zhu Guihua, 2015/02/13
- [Qemu-devel] [PATCH v3 2/7] acpi/cpu: add cpu hot unplug request callback function, Zhu Guihua, 2015/02/13
- [Qemu-devel] [PATCH v3 1/7] x86: add x86_cpu_unrealizefn() for cpu apic remove, Zhu Guihua, 2015/02/13
- [Qemu-devel] [PATCH v3 3/7] acpi, pc: add cpu hot unplug request callback support, Zhu Guihua, 2015/02/13
- [Qemu-devel] [PATCH v3 4/7] acpi/cpu: add cpu hot unplug callback function,
Zhu Guihua <=
- [Qemu-devel] [PATCH v3 5/7] acpi, pc: add cpu hot unplug callback support, Zhu Guihua, 2015/02/13
- [Qemu-devel] [PATCH v3 6/7] cpu hotplug: implement function cpu_status_write() for vcpu ejection, Zhu Guihua, 2015/02/13
- [Qemu-devel] [PATCH v3 7/7] cpus: reclaim allocated vCPU objects, Zhu Guihua, 2015/02/13
- Re: [Qemu-devel] [PATCH v3 0/7] cpu: add i386 cpu hot remove support, Gu Zheng, 2015/02/23