]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Add PPC cpu driver.
authorPrerna Saxena <prerna@linux.vnet.ibm.com>
Mon, 3 Oct 2011 12:56:20 +0000 (05:56 -0700)
committerEric Blake <eblake@redhat.com>
Wed, 30 Nov 2011 19:38:17 +0000 (12:38 -0700)
To add support for running libvirt on PowerPC, a CPU driver for the
PowerPC platform must be added.
Most generic cpu driver routines such as CPU compare, decode, etc
are based on CPUID comparison and are not relevant for non-x86
platforms.
Here, we introduce stubs for relevant PowerPC routines invoked by libvirt.

Signed-off-by: Prerna Saxena <prerna@linux.vnet.ibm.com>
Signed-off-by: Anton Blanchard <anton@au.ibm.com>
AUTHORS
src/Makefile.am
src/cpu/cpu.c
src/cpu/cpu_powerpc.c [new file with mode: 0644]
src/cpu/cpu_powerpc.h [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
index b22e3a2a2958e213e8d901d7f5954dcc14085c38..f2918593a116c8759092cc77ef7d1da656a8234a 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -210,6 +210,7 @@ Patches have also been contributed by:
   Chang Liu            <lingjiao.lc@taobao.com>
   Lorin Hochstein      <lorin@isi.edu>
   Christian Franke     <nobody@nowhere.ws>
+  Prerna Saxena        <prerna@linux.vnet.ibm.com>
 
   [....send patches to get your name here....]
 
index c2812e2ca4b0230c8e76952ce73e2d85ad64c579..4c9839766881bfe709546475d51135c6a20ad487 100644 (file)
@@ -535,7 +535,8 @@ CPU_SOURCES =                                                       \
                cpu/cpu.h cpu/cpu.c                             \
                cpu/cpu_generic.h cpu/cpu_generic.c             \
                cpu/cpu_x86.h cpu/cpu_x86.c cpu/cpu_x86_data.h  \
-               cpu/cpu_map.h cpu/cpu_map.c
+               cpu/cpu_map.h cpu/cpu_map.c cpu/cpu_powerpc.h   \
+               cpu/cpu_powerpc.c
 
 VMX_SOURCES =                                                  \
                vmx/vmx.c vmx/vmx.h
index b919b6e2e022c0a68930d653ee4c591e7598456c..e4149e284a6372585d1d21a53600c84233632728 100644 (file)
@@ -28,6 +28,7 @@
 #include "xml.h"
 #include "cpu.h"
 #include "cpu_x86.h"
+#include "cpu_powerpc.h"
 #include "cpu_generic.h"
 
 
@@ -36,6 +37,7 @@
 
 static struct cpuArchDriver *drivers[] = {
     &cpuDriverX86,
+    &cpuDriverPowerPC,
     /* generic driver must always be the last one */
     &cpuDriverGeneric
 };
diff --git a/src/cpu/cpu_powerpc.c b/src/cpu/cpu_powerpc.c
new file mode 100644 (file)
index 0000000..ed81694
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * cpu_powerpc.h: CPU driver for PowerPC CPUs
+ *
+ * Copyright (C) Copyright (C) IBM Corporation, 2010
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+ *
+ * Authors:
+ *      Anton Blanchard <anton@au.ibm.com>
+ *      Prerna Saxena <prerna@linux.vnet.ibm.com>
+ */
+
+#include <config.h>
+
+#include "memory.h"
+#include "cpu.h"
+
+
+#define VIR_FROM_THIS VIR_FROM_CPU
+
+static const char *archs[] = { "ppc64" };
+
+static union cpuData *
+PowerPCNodeData(void)
+{
+    union cpuData *data;
+
+    if (VIR_ALLOC(data) < 0) {
+        virReportOOMError();
+        return NULL;
+    }
+
+    return data;
+}
+
+
+static int
+PowerPCDecode(virCPUDefPtr cpu ATTRIBUTE_UNUSED,
+              const union cpuData *data ATTRIBUTE_UNUSED,
+              const char **models ATTRIBUTE_UNUSED,
+              unsigned int nmodels ATTRIBUTE_UNUSED,
+              const char *preferred ATTRIBUTE_UNUSED)
+{
+        return 0;
+}
+
+static void
+PowerPCDataFree(union cpuData *data)
+{
+   if (data == NULL)
+       return;
+
+   VIR_FREE(data);
+}
+
+struct cpuArchDriver cpuDriverPowerPC = {
+    .name = "ppc64",
+    .arch = archs,
+    .narch = ARRAY_CARDINALITY(archs),
+    .compare    = NULL,
+    .decode     = PowerPCDecode,
+    .encode     = NULL,
+    .free       = PowerPCDataFree,
+    .nodeData   = PowerPCNodeData,
+    .guestData  = NULL,
+    .baseline   = NULL,
+    .update     = NULL,
+    .hasFeature = NULL,
+};
diff --git a/src/cpu/cpu_powerpc.h b/src/cpu/cpu_powerpc.h
new file mode 100644 (file)
index 0000000..2e0c1a5
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * cpu_powerpc.h: CPU driver for PowerPC CPUs
+ *
+ * Copyright (C) Copyright (C) IBM Corporation, 2010
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+ *
+ * Authors:
+ *      Anton Blanchard <anton@au.ibm.com>
+ *      Prerna Saxena <prerna@linux.vnet.ibm.com>
+ */
+
+#ifndef __VIR_CPU_POWERPC_H__
+# define __VIR_CPU_POWERPC_H__
+
+# include "cpu.h"
+
+extern struct cpuArchDriver cpuDriverPowerPC;
+
+#endif /* __VIR_CPU_POWERPC_H__ */