On 11/29/2011 09:55 AM, Prerna Saxena wrote:
Recent development in KVM for 64-bit Power ISA Book3S machines, allows users to run multiple KVM guest instances on POWER7 and PPC970 processor based systems. Also qemu-system-ppc64 has been enhanced to support a new machine type "pseries" suitable for Power Book3S machines. This addition effectively brings the KVM+qemu combination to run multiple guest instances on a Power Book3S machine.
I applied this patch series on an x86 machine and ran 'make check'. I now have two tests failing due to it not making use of the proc filesystem entries anymore... TEST: nodeinfotest Expect 39 'CPUs: 2, MHz: 2800, Nodes: 1, Cores: 2 ' Actual 39 'CPUs: 8, MHz: 2800, Nodes: 1, Cores: 4 ' !Expect 39 'CPUs: 2, MHz: 2211, Nodes: 1, Cores: 2 ' Actual 39 'CPUs: 8, MHz: 2211, Nodes: 1, Cores: 4 ' !Expect 39 'CPUs: 4, MHz: 1595, Nodes: 1, Cores: 2 ' Actual 39 'CPUs: 8, MHz: 1595, Nodes: 1, Cores: 4 ' !Expect 39 'CPUs: 4, MHz: 1000, Nodes: 1, Cores: 4 ' Actual 39 'CPUs: 8, MHz: 1000, Nodes: 1, Cores: 4 ' !Expect 39 'CPUs: 4, MHz: 2814, Nodes: 1, Cores: 2 ' Actual 39 'CPUs: 8, MHz: 2814, Nodes: 1, Cores: 4 ' !Expect 39 'CPUs: 4, MHz: 1000, Nodes: 1, Cores: 2 ' Actual 39 'CPUs: 8, MHz: 1000, Nodes: 1, Cores: 4 ' ! 6 FAIL FAIL: nodeinfotest [...] TEST: qemuargv2xmltest /bin/sh: line 5: 875 Segmentation fault (core dumped) abs_top_builddir=`cd '..'; pwd` abs_top_srcdir=`cd '..'; pwd` abs_builddir=`pwd` abs_srcdir=`cd '.'; pwd` CONFIG_HEADER="`cd '..'; pwd`/config.h" PATH="`cd '..'; pwd`/daemon:`cd '..'; pwd`/tools:`cd '..'; pwd`/tests:$PATH" SHELL="/bin/sh" LIBVIRT_DRIVER_DIR="/root/tmp/libvirt-acl/src/.libs" LC_ALL=C ${dir}$tst FAIL: qemuargv2xmltest I had 'export DEBUG_TESTS=1' set to see the debugging info on the nodeinfo test. The qemuargv2xmltest fails due to the following: 0x00000038ec32e334 in __strcmp_ssse3 () from /lib64/libc.so.6 Missing separate debuginfos, use: debuginfo-install augeas-libs-0.9.0-1.fc14.x86_64 avahi-libs-0.6.27-8.fc14.x86_64 cyrus-sasl-lib-2.1.23-12.fc14.x86_64 dbus-libs-1.4.0-3.fc14.x86_64 device-mapper-libs-1.02.63-2.fc14.x86_64 glibc-2.13-2.x86_64 gnutls-2.8.6-2.fc14.x86_64 keyutils-libs-1.2-6.fc12.x86_64 krb5-libs-1.8.4-2.fc14.x86_64 libcap-ng-0.6.5-1.fc14.x86_64 libcom_err-1.41.12-6.fc14.x86_64 libcurl-7.21.0-10.fc14.x86_64 libgcc-4.5.1-4.fc14.x86_64 libgcrypt-1.4.5-4.fc13.x86_64 libgpg-error-1.9-1.fc14.x86_64 libidn-1.18-1.fc14.x86_64 libpcap-1.1.1-3.fc14.x86_64 libselinux-2.0.96-6.fc14.1.x86_64 libsepol-2.0.41-3.fc14.x86_64 libssh2-1.2.4-1.fc14.x86_64 libtasn1-2.7-1.fc14.x86_64 libudev-161-10.fc14.x86_64 libxml2-2.7.7-3.fc14.x86_64 libxslt-1.1.26-3.fc14.x86_64 netcf-libs-0.1.9-1.fc14.x86_64 nspr-4.8.8-1.fc14.x86_64 nss-3.12.10-4.fc14.x86_64 nss-softokn-freebl-3.12.10-1.fc14.x86_64 nss-util-3.12.10-1.fc14.x86_64 numactl-2.0.3-8.fc13.x86_64 openldap-2.4.23-10.fc14.x86_64 openssl-1.0.0e-1.fc14.x86_64 xen-libs-4.0.2-1.fc14.x86_64 yajl-1.0.7-3.fc13.x86_64 zlib-1.2.5-2.fc14.x86_64 (gdb) up #1 0x000000000042d56c in qemuParseCommandLine (caps=0x9b94a0, progenv=0x9badc0, progargv=0x9bae00, pidfile=0x0, monConfig=0x0, monJSON=0x0) at qemu/qemu_command.c:6694 6694 if (STREQ(def->os.arch, "i686")||STREQ(def->os.arch, "x86_64")) (gdb) print def->os $1 = {type = 0x0, arch = 0x0, machine = 0x0, nBootDevs = 0, bootDevs = {0, 0, 0, 0}, bootmenu = 0, init = 0x0, kernel = 0x0, initrd = 0x0, cmdline = 0x0, root = 0x0, loader = 0x0, bootloader = 0x0, bootloaderArgs = 0x0, smbios_mode = 0, bios = {useserial = 0}} I looked on a RHEL 5 machine (i686). The sysfs at least is there. Stefan
Libvirt continues to be the key interface to configure and manage the KVM guest instances on x86. This patch set is an effort to enable libvirt to support KVM guest configuration and management on Power Book3S machines.
Based on community discussion around the earlier version, this patch series augments the present 'kvm' driver to support PowerPC-KVM based guests.Since some of the supported devices vary between architectures, libvirt must be capable of choosing supported device backends and defaults for each architecture in qemu.
To check if qemu supports a certain feature, libvirt at present parses the -help string which is generated by running the qemu binary with the '-h' argument. This approach is gated by QEMU's inherent limitation. When generating the list of allowed options with the '-h' flags, qemu today blindly lists all options defined for any architecture/platform instead of doing any arch-specific checking. This tricks libvirt into assuming a much bigger set of host capabilities than is actually available. Ideally, it would be good to have qemu specify a list of devices for a given architecture and platform which libvirt can parse to understand supported capabilities for that guest.
As a part of this patchset, there is an attempt to cleanly bifurcate libvirt code and to remove x86-specific assumptions from generic qemu commandline code.
Series Description: ------------------- This patch series consists of 5 patches : Patch 1/5 : Use sysfs to gather host topology in place of /proc/cpuinfo. Patch 2/5 : Add PowerPC CPU Driver Patch 3/5 : Add support for qemu-system-ppc64 Patch 4/5 : Clean up x86-specific assumptions from generic qemu code. Patch 5/5 : Add address family "spapr-vio"
Changelog: --------- ** v1->v2 : * Patches 1,2,3 unchanged ; The hacks in Patch 4 of v1 replaced by a new patch to neatly select arch-specific features.
** v2->v3 : * Patches 1,2,3 have minor cleanups ; Patch 4 no longer has an arch-specific handler routine. It is now replaced by a much simpler patch that merely removes x86/pc-specific assumptions from libvirt.
** v3->v4 : * Patches 1,2,3,4 unchanged ; patch 5 is a new addition from Michael Ellerman that adds a new device-tree based addressing mechanism for the 'pseries' guest.