[libvirt] [PATCH] ARMHF: CPU Support for armhf.

Adding CPU encoder/decoder for armhf to avoid runtime error messages. Signed-off-by: Chuck Short <chuck.short@canonical.com> --- src/Makefile.am | 1 + src/cpu/cpu.c | 2 ++ src/cpu/cpu_arm.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/cpu/cpu_arm.h | 32 ++++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 src/cpu/cpu_arm.c create mode 100644 src/cpu/cpu_arm.h diff --git a/src/Makefile.am b/src/Makefile.am index 6c3eaa7..bfe74d3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -567,6 +567,7 @@ CPU_SOURCES = \ cpu/cpu_generic.h cpu/cpu_generic.c \ cpu/cpu_x86.h cpu/cpu_x86.c cpu/cpu_x86_data.h \ cpu/cpu_s390.h cpu/cpu_s390.c \ + cpu/cpu_arm.h cpu/cpu_arm.c \ cpu/cpu_map.h cpu/cpu_map.c cpu/cpu_powerpc.h \ cpu/cpu_powerpc.c diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 70a1da5..0ccbd4c 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -30,6 +30,7 @@ #include "cpu_x86.h" #include "cpu_powerpc.h" #include "cpu_s390.h" +#include "cpu_arm.h" #include "cpu_generic.h" @@ -40,6 +41,7 @@ static struct cpuArchDriver *drivers[] = { &cpuDriverX86, &cpuDriverPowerPC, &cpuDriverS390, + &cpuDriverArm, /* generic driver must always be the last one */ &cpuDriverGeneric }; diff --git a/src/cpu/cpu_arm.c b/src/cpu/cpu_arm.c new file mode 100644 index 0000000..fe97425 --- /dev/null +++ b/src/cpu/cpu_arm.c @@ -0,0 +1,76 @@ + +/* + * cpu_arm.c: CPU driver for arm CPUs + * + * Copyright Canonical Ltd. 2012 + * + * 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: + * Chuck Short <chuck.short@canonical.com> + */ + +#include <config.h> + +#include "memory.h" +#include "cpu.h" + +#define VIR_FROM_THIS VIR_FROM_CPU + +static const char *archs[] = { "armv7l" }; + +static union cpuData * +ArmNodeData(void) +{ + union cpuData *data; + + if (VIR_ALLOC(data) < 0) { + virReportOOMError(); + return NULL; + } + + return data; +} + +static int +ArmDecode(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 +ArmDataFree(union cpuData *data) +{ + VIR_FREE(data); +} + +struct cpuArchDriver cpuDriverArm = { + .name = "arm", + .arch = archs, + .narch = ARRAY_CARDINALITY(archs), + .compare = NULL, + .decode = ArmDecode, + .encode = NULL, + .free = ArmDataFree, + .nodeData = ArmNodeData, + .guestData = NULL, + .baseline = NULL, + .update = NULL, + .hasFeature = NULL, +}; diff --git a/src/cpu/cpu_arm.h b/src/cpu/cpu_arm.h new file mode 100644 index 0000000..4b7ddc5 --- /dev/null +++ b/src/cpu/cpu_arm.h @@ -0,0 +1,32 @@ + +/* + * cpu_arm.h: CPU driver for arm CPUs + * + * Copyright Canonical Ltd. 2012 + * + * 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: + * Chuck Short <chuck.short@canonical.com> + */ + +#ifndef __VIR_CPU_ARM_H__ +#define __VIR_CPU_ARM_H__ + +#include "cpu.h" + +extern struct cpuArchDriver cpuDriverArm; + +#endif /* __VIR_CPU_ARM_H__ */ -- 1.7.10.4

On Thu, Jul 12, 2012 at 10:28:17AM -0500, Chuck Short wrote:
Adding CPU encoder/decoder for armhf to avoid runtime error messages.
Signed-off-by: Chuck Short <chuck.short@canonical.com> --- src/Makefile.am | 1 + src/cpu/cpu.c | 2 ++ src/cpu/cpu_arm.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/cpu/cpu_arm.h | 32 ++++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 src/cpu/cpu_arm.c create mode 100644 src/cpu/cpu_arm.h
diff --git a/src/Makefile.am b/src/Makefile.am index 6c3eaa7..bfe74d3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -567,6 +567,7 @@ CPU_SOURCES = \ cpu/cpu_generic.h cpu/cpu_generic.c \ cpu/cpu_x86.h cpu/cpu_x86.c cpu/cpu_x86_data.h \ cpu/cpu_s390.h cpu/cpu_s390.c \ + cpu/cpu_arm.h cpu/cpu_arm.c \ cpu/cpu_map.h cpu/cpu_map.c cpu/cpu_powerpc.h \ cpu/cpu_powerpc.c
diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 70a1da5..0ccbd4c 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -30,6 +30,7 @@ #include "cpu_x86.h" #include "cpu_powerpc.h" #include "cpu_s390.h" +#include "cpu_arm.h" #include "cpu_generic.h"
@@ -40,6 +41,7 @@ static struct cpuArchDriver *drivers[] = { &cpuDriverX86, &cpuDriverPowerPC, &cpuDriverS390, + &cpuDriverArm, /* generic driver must always be the last one */ &cpuDriverGeneric }; diff --git a/src/cpu/cpu_arm.c b/src/cpu/cpu_arm.c new file mode 100644 index 0000000..fe97425 --- /dev/null +++ b/src/cpu/cpu_arm.c @@ -0,0 +1,76 @@ +
Opps leading blank line crept in here
+/* + * cpu_arm.c: CPU driver for arm CPUs + * + * Copyright Canonical Ltd. 2012
Just need s/Copyright/Copyright (C)/
+ * + * 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: + * Chuck Short <chuck.short@canonical.com> + */ + +#include <config.h> + +#include "memory.h" +#include "cpu.h" + +#define VIR_FROM_THIS VIR_FROM_CPU + +static const char *archs[] = { "armv7l" }; + +static union cpuData * +ArmNodeData(void) +{ + union cpuData *data; + + if (VIR_ALLOC(data) < 0) { + virReportOOMError(); + return NULL; + } + + return data; +} + +static int +ArmDecode(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 +ArmDataFree(union cpuData *data) +{ + VIR_FREE(data); +} + +struct cpuArchDriver cpuDriverArm = { + .name = "arm", + .arch = archs, + .narch = ARRAY_CARDINALITY(archs), + .compare = NULL, + .decode = ArmDecode, + .encode = NULL, + .free = ArmDataFree, + .nodeData = ArmNodeData, + .guestData = NULL, + .baseline = NULL, + .update = NULL, + .hasFeature = NULL, +}; diff --git a/src/cpu/cpu_arm.h b/src/cpu/cpu_arm.h new file mode 100644 index 0000000..4b7ddc5 --- /dev/null +++ b/src/cpu/cpu_arm.h @@ -0,0 +1,32 @@ +
Another blank line
+/* + * cpu_arm.h: CPU driver for arm CPUs + * + * Copyright Canonical Ltd. 2012
Likewise s/Copyright/Copyright (C)/
+ * + * 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: + * Chuck Short <chuck.short@canonical.com> + */ + +#ifndef __VIR_CPU_ARM_H__ +#define __VIR_CPU_ARM_H__ + +#include "cpu.h" + +extern struct cpuArchDriver cpuDriverArm; + +#endif /* __VIR_CPU_ARM_H__ */
ACK. /me wonders if our syntax-check whitespace rule should check for blank lines at the start of file, as well as the end of file. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 07/12/2012 10:53 AM, Daniel P. Berrange wrote:
On Thu, Jul 12, 2012 at 10:28:17AM -0500, Chuck Short wrote:
Adding CPU encoder/decoder for armhf to avoid runtime error messages.
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Chuck: you used two different email addresses (gmail for authorship, canonical for s-o-b). Which one do you want listed in AUTHORS, or should I even alter the authorship to go by your preferred address? Once your commit is applied, 'make syntax-check' won't pass until we also update AUTHORS to match your preferred listing.
+++ b/src/cpu/cpu_arm.c @@ -0,0 +1,76 @@ +
Opps leading blank line crept in here
ACK.
I've fixed the mentioned nits in my local tree, but don't want to push until I get resolution on the AUTHORS question.
/me wonders if our syntax-check whitespace rule should check for blank lines at the start of file, as well as the end of file.
Should be easy enough; I'll propose that as a separate patch. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

Hi, On Fri, 13 Jul 2012 08:20:16 -0600 Eric Blake <eblake@redhat.com> wrote:
On 07/12/2012 10:53 AM, Daniel P. Berrange wrote:
On Thu, Jul 12, 2012 at 10:28:17AM -0500, Chuck Short wrote:
Adding CPU encoder/decoder for armhf to avoid runtime error messages.
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Chuck: you used two different email addresses (gmail for authorship, canonical for s-o-b). Which one do you want listed in AUTHORS, or should I even alter the authorship to go by your preferred address? Once your commit is applied, 'make syntax-check' won't pass until we also update AUTHORS to match your preferred listing.
Please use the canonical.com email address.
+++ b/src/cpu/cpu_arm.c @@ -0,0 +1,76 @@ +
Opps leading blank line crept in here
ACK.
I've fixed the mentioned nits in my local tree, but don't want to push until I get resolution on the AUTHORS question.
/me wonders if our syntax-check whitespace rule should check for blank lines at the start of file, as well as the end of file.
Should be easy enough; I'll propose that as a separate patch.

On 07/13/2012 10:00 AM, Chuck Short wrote:
Chuck: you used two different email addresses (gmail for authorship, canonical for s-o-b). Which one do you want listed in AUTHORS, or should I even alter the authorship to go by your preferred address? Once your commit is applied, 'make syntax-check' won't pass until we also update AUTHORS to match your preferred listing.
Please use the canonical.com email address.
ACK.
I've fixed the mentioned nits in my local tree, but don't want to push until I get resolution on the AUTHORS question.
I tweaked AUTHORS, re-authored the patch ('git commit --amend --author=...') to match, and pushed. Thanks for your first contribution, and looking forward to more! By the way, you can set up 'git commit' and 'git send-email' to list correct authorship, even when you develop on a machine normally tied to an alternate account, by having this in your project/.git/config (or globally at ~/.gitconfig): [user] email = preferred@address When the commit is created with the preferred authorship, then 'git send-email' will inject a 'From:' line to any message sent from a different email account, which 'git am' then honors in preference to the actual email headers. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
participants (4)
-
Chuck Short
-
Chuck Short
-
Daniel P. Berrange
-
Eric Blake