Create as many CPU socket objects as necessary to contain the
max_cpus.

Signed-off-by: Bharata B Rao <bhar...@linux.vnet.ibm.com>
---
 vl.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/vl.c b/vl.c
index e656f53..83d08c6 100644
--- a/vl.c
+++ b/vl.c
@@ -124,6 +124,7 @@ int main(int argc, char **argv)
 #include "crypto/init.h"
 #include "sysemu/replay.h"
 #include "qapi/qmp/qerror.h"
+#include "hw/cpu/socket.h"
 
 #define MAX_VIRTIO_CONSOLES 1
 #define MAX_SCLP_CONSOLES 1
@@ -3014,6 +3015,7 @@ int main(int argc, char **argv, char **envp)
     FILE *vmstate_dump_file = NULL;
     Error *main_loop_err = NULL;
     Error *err = NULL;
+    int sockets;
 
     qemu_init_cpu_loop();
     qemu_mutex_lock_iothread();
@@ -4154,6 +4156,17 @@ int main(int argc, char **argv, char **envp)
     }
 
     /*
+     * Create CPU socket objects which house CPU cores.
+     */
+    sockets = DIV_ROUND_UP(max_cpus, smp_cores * smp_threads);
+    for (i = 0; i < sockets; i++) {
+        char id[32];
+
+        snprintf(id, 32, "" TYPE_CPU_SOCKET "%d", i);
+        object_add(TYPE_CPU_SOCKET, id, NULL, NULL, &error_abort);
+    }
+
+    /*
      * Get the default machine options from the machine if it is not already
      * specified either by the configuration file or by the command line.
      */
-- 
2.1.0


Reply via email to