On 01/23/2015 01:20 PM, Ramon Medeiros wrote:
On LE systems, some changes on libvirt xml is needed. The input
device
for keyboard is not kbd anymore, the architecture is still ppc64 and the
qemu binary is not qemu-kvm as in the other archs.
Signed-off-by: Ramon Medeiros <ramonn(a)linux.vnet.ibm.com>
---
src/kimchi/config.py.in | 11 +++++++++--
src/kimchi/osinfo.py | 6 +++++-
src/kimchi/vmtemplate.py | 8 ++++++++
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/src/kimchi/config.py.in b/src/kimchi/config.py.in
index 83a5dd0..f0089dc 100644
--- a/src/kimchi/config.py.in
+++ b/src/kimchi/config.py.in
@@ -68,12 +68,19 @@ def find_qemu_binary(find_emulator=False):
raise Exception("Unable to get qemu binary location: %s" % e)
try:
xml = connect.getCapabilities()
+
+ # ISSUE #573: On POWER8 debian little endian, the qemu binary is
+ # qemu-system-ppc64, not qemu-system-ppc64el as expected
+ arch = platform.machine()
+ if platform.machine() == "ppc64le":
+ arch = "ppc64"
+
if find_emulator:
expr = "/capabilities/guest/arch[@name='%s']\
- /emulator" % platform.machine()
+ /emulator" % arch
else:
expr = "/capabilities/guest/arch[@name='%s']\
- /domain[@type='kvm']/emulator" % platform.machine()
+ /domain[@type='kvm']/emulator" % arch
res = xpath_get_text(xml, expr)
location = res[0]
except Exception, e:
diff --git a/src/kimchi/osinfo.py b/src/kimchi/osinfo.py
index 0e16b50..2f6558d 100644
--- a/src/kimchi/osinfo.py
+++ b/src/kimchi/osinfo.py
@@ -29,7 +29,7 @@ from kimchi.config import paths
SUPPORTED_ARCHS = {'x86': ('i386', 'i686', 'x86_64'),
- 'power': ('ppc', 'ppc64')}
+ 'power': ('ppc', 'ppc64',
'ppc64le')}
common_spec = {'cpus': 1, 'memory': 1024, 'disks':
[{'index': 0, 'size': 10}],
@@ -94,6 +94,10 @@ def lookup(distro, version):
params['os_version'] = version
arch = _get_arch()
+ # ppc64le hack: qemu ppc64le uses ppc64 in libvirt xml
+ if params["arch"] == "ppc64le":
+ params["arch"] = "ppc64"
I suggest we add a new item
"ppc_le" in "template_specs", because it is
a different arch, and does not use kdb. So that we do not need to hack
it to be "ppc"
+
if distro in modern_version_bases[arch]:
if LooseVersion(version) >= LooseVersion(
modern_version_bases[arch][distro]):
diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py
index e41a959..a017874 100644
--- a/src/kimchi/vmtemplate.py
+++ b/src/kimchi/vmtemplate.py
@@ -245,9 +245,17 @@ class VMTemplate(object):
mouse = """
<input type='mouse' bus='%(mouse_bus)s'/>
"""
+
keyboard = """
<input type='kbd' bus='%(kbd_bus)s'> </input>
"""
+
+ # PPC64EL does not uses kbd
+ if os.uname()[4] == "ppc64le":
+ keyboard = """
+ <input type='keyboard' bus='%(kbd_bus)s'>
</input>
+ """
+
tablet = """
<input type='tablet' bus='%(kbd_bus)s'>
</input>
"""