Date: Wed, 6 Jan 2010 10:09:55 -0500
From: crobinso(a)redhat.com
To: x_k_123(a)hotmail.com
CC: berrange(a)redhat.com; libvirt-list(a)redhat.com
Subject: Re: [libvirt] [virt-tools-list] Questions about virt-manager running on Arch of
Itanium 64
On 01/04/2010 08:27 PM, Dustin Xiong wrote:
>
>
>
>
>> Date: Mon, 4 Jan 2010 11:46:06 -0500
>> From: crobinso(a)redhat.com
>> To: x_k_123(a)hotmail.com
>> CC: berrange(a)redhat.com; libvirt-list(a)redhat.com
>> Subject: Re: [libvirt] [virt-tools-list] Questions about virt-manager running on
Arch of Itanium 64
>>
>> On 12/25/2009 03:48 AM, Dustin Xiong wrote:
>>
>>>>> If i want to update qemu_conf.c to handle ia64 , which files or
>>>>> datastruct needs to update ? Only the qemu_conf.c ?
>>>>
>>>> If you search for the table
>>>>
>>>> static const struct qemu_arch_info const arch_info_hvm[] = {
>>>>
>>>> It is probably (hopefully?) sufficient to just add
>>>>
>>>> { "ia64", 64, NULL, "/usr/bin/qemu-system-ia64",
NULL, NULL, 0 },
>>>>
>>>> The key test is that when you later run
>>>>
>>>> virsh capabilities
>>>>
>>>> it should show the /usr/bin/qemu-system-ia64 binary, and also report
that
>>>> KVM is present.
>>>>
>>>> I have a feeling you might also need to add code to the src/nodeinfo.c
>>>> file, since I think that /proc/cpuinfo on ia64 is in a different format
>>>> to that on x86_64. ie, change the linuxNodeInfoCPUPopulate() method so
>>>> it can also parse the ia64 format. This is used by the command
>>>>
>>>> virsh nodeinfo
>>>>
>>>>
>>>> So once 'capabilities' and 'nodeinfo' are working on
ia64, then it should
>>>> be possible to use virt-manager properly
>>>>
>>> I modify the src, and build it to rpm. The libvirt could work.
>>>
>>> And as you said, i add ia64 info into the qemu_conf.c. The result as below:
>>>
>>>
>>>
>>> [root@kvm bin]# virsh capabilities
>>> <capabilities>
>>>
>>> <host>
>>> <cpu>
>>> <arch>ia64</arch>
>>> </cpu>
>>> <topology>
>>> <cells num='1'>
>>> <cell id='0'>
>>> <cpus num='16'>
>>> <cpu id='0'/>
>>> <cpu id='1'/>
>>> <cpu id='2'/>
>>> <cpu id='3'/>
>>> <cpu id='4'/>
>>> <cpu id='5'/>
>>> <cpu id='6'/>
>>> <cpu id='7'/>
>>> <cpu id='8'/>
>>> <cpu id='9'/>
>>> <cpu id='10'/>
>>> <cpu id='11'/>
>>> <cpu id='12'/>
>>> <cpu id='13'/>
>>> <cpu id='14'/>
>>> <cpu id='15'/>
>>> </cpus>
>>> </cell>
>>> </cells>
>>> </topology>
>>> </host>
>>>
>>> <guest>
>>> <os_type>hvm</os_type>
>>> <arch name='ia64'>
>>> <wordsize>64</wordsize>
>>> <emulator>/usr/bin/qemu-system-ia64</emulator>
>>> <machine>ia64</machine>
>>> <machine>xenner</machine>
>>> <domain type='qemu'>
>>> </domain>
>>> <domain type='kvm'>
>>> <emulator>/usr/bin/kvm</emulator>
>>> </domain>
>>> </arch>
>>> <features>
>>> <acpi default='on' toggle='yes'/>
>>> <apic default='on' toggle='no'/>
>>> </features>
>>> </guest>
>>>
>>> </capabilities>
>>>
>>>
>>>
>>> [root@kvm bin]# virsh nodeinfo
>>> CPU model: ia64
>>> CPU(s): 16
>>> CPU frequency: 1330 MHz
>>> CPU socket(s): 16
>>> Core(s) per socket: 1
>>> Thread(s) per core: 1
>>> NUMA cell(s): 1
>>> Memory size: 8252480 kB
>>>
>>>
>>>
>>> But the virt-manager still can't work. When i create a new vm.
>>>
>>> The error as below:
>>>
>>>
>>>
>>> Unable to complete install 'libvirt.libvirtError internal error Domain
ad didn't show up
>>>
>>> Traceback (most recent call last):
>>> File "/usr/share/virt-manager/virtManager/create.py", line 718, in
do_install
>>> dom = guest.start_install(False, meter = meter)
>>> File "/usr/lib/python2.4/site-packages/virtinst/Guest.py", line
660, in start_install
>>> return self._do_install(consolecb, meter, removeOld, wait)
>>> File "/usr/lib/python2.4/site-packages/virtinst/Guest.py", line
758, in _do_install
>>> self.domain = self.conn.createLinux(install_xml, 0)
>>> File "/usr/lib/python2.4/site-packages/libvirt.py", line 974, in
createLinux
>>> if ret is None:raise libvirtError('virDomainCreateLinux() failed',
conn=self)
>>> libvirtError: internal error Domain ad didn't show up
>>>
>>>
>>> I don't know how to resolve this error.
>>>
>>> Thank you for your advice.
>>>
>>
>> What is the output in /var/log/libvirt/qemu/$vmname.log ?
>
>
> The output in /var/log/libvirt/qemu/vm10.log is :
>
> LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin HOME=/ /usr/bin/kvm -S -M ia64 -m 512
-smp 1 -name vm10 -uuid 8adb1d1d-147f-710a-6d13-c71ba185f811 -monitor pty -pidfile
/var/run/libvirt/qemu//vm10.pid -no-reboot -boot d -drive
file=/var/lib/libvirt/images/vm10.img,if=ide,index=0,format=raw -drive
file=/var/lib/libvirt/images/rhel-server-5.4-ia64-disc1.iso,if=ide,media=cdrom,index=2,format=raw
-net nic,macaddr=52:54:00:59:bb:26,vlan=0 -net tap,fd=16,script=,vlan=0,ifname=vnet0
-serial pty -parallel none -usb -vnc 127.0.0.1:0 -k en-us
> Supported machines are:
> itanium Itanium Platform (default)
>
>
>
> -dustin
>
Hmm, not sure why libvirt is passing '-M ia64' when the kvm binary only
expects '-M itanium'. Can you attach the diff you applied to the code?
Make sure you are building the latest code (either from tar.gz or git
checkout).
What's the output of 'kvm -M ?' and 'qemu-system-ia64 -M ?'
- Cole
I sloved the problem. I modify the libvirt /src/qemu_conf.c. Add the arch ia64 into the
static const struct qemu_arch_info const arch_info_hvm[] = {}
as berrange said. So the libvirt passing -M ia64.
But the kvm binary only experts '-M itanium'.
So i replaced the ia64 by itanium in the file /src/qemu_conf.c.
Then the virt-manager finally could work on the arch of Itanium.
Thank you for your help.
Thank you, everyone here.
-Dustin
_________________________________________________________________
Keep your friends updated―even when you’re not signed in.
http://www.microsoft.com/middleeast/windows/windowslive/see-it-in-action/...