qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 9/15] initialize hot add system.


From: Glauber Costa
Subject: [Qemu-devel] [PATCH 9/15] initialize hot add system.
Date: Tue, 26 Feb 2008 16:56:39 -0300

Register the pios, and grab cpu_model for future usage.

Signed-off-by: Glauber Costa <address@hidden>
---
 qemu/hw/acpi.c |   34 ++++++++++++++++++++++++++++++++++
 qemu/hw/pc.c   |    1 +
 qemu/sysemu.h  |    1 +
 3 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/qemu/hw/acpi.c b/qemu/hw/acpi.c
index d2e2e3e..119b59a 100644
--- a/qemu/hw/acpi.c
+++ b/qemu/hw/acpi.c
@@ -533,6 +533,40 @@ void qemu_system_powerdown(void)
     }
 }
 #endif
+#define GPE_BASE 0xafe0
+
+struct gpe_regs {
+    uint16_t sts; /* status */
+    uint16_t en;  /* enabled */
+};
+
+static struct gpe_regs gpe;
+
+static uint32_t gpe_readb(void *opaque, uint32_t addr)
+{
+    uint32_t val = 0;
+#if defined(DEBUG)
+    printf("gpe read %lx == %lx\n", addr, val);
+#endif
+    return val;
+}
+
+static void gpe_writeb(void *opaque, uint32_t addr, uint32_t val)
+{
+#if defined(DEBUG)
+    printf("gpe write %lx <== %d\n", addr, val);
+#endif
+}
+
+static char *model;
+
+void qemu_system_hot_add_init(char *cpu_model)
+{
+    register_ioport_write(GPE_BASE, 4, 1, gpe_writeb, &gpe);
+    register_ioport_read(GPE_BASE, 4, 1,  gpe_readb, &gpe);
+
+    model = cpu_model;
+}
 
 void qemu_system_cpu_hot_add(int cpu, int state)
 {
diff --git a/qemu/hw/pc.c b/qemu/hw/pc.c
index 982377d..ab69e5c 100644
--- a/qemu/hw/pc.c
+++ b/qemu/hw/pc.c
@@ -1020,6 +1020,7 @@ #endif
         }
     }
 
+    qemu_system_hot_add_init(cpu_model);
 #define USE_HYPERCALL
 #ifdef USE_HYPERCALL
     pci_hypercall_init(pci_bus);
diff --git a/qemu/sysemu.h b/qemu/sysemu.h
index fe929b4..5692114 100644
--- a/qemu/sysemu.h
+++ b/qemu/sysemu.h
@@ -155,6 +155,7 @@ extern int drive_get_max_bus(BlockInterf
 
 /* acpi */
 void qemu_system_cpu_hot_add(int cpu, int state);
+void qemu_system_hot_add_init(char *cpu_model);
 
 /* vmchannel devices */
 
-- 
1.4.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]