On Sat, Aug 3, 2013 at 9:11 PM, Laine Stump <laine(a)laine.org>
wrote:
> On 08/03/2013 10:06 PM, Doug Goldstein wrote:
>> On Sat, Aug 3, 2013 at 8:48 PM, Laine Stump <laine(a)laine.org> wrote:
>>> On 08/03/2013 09:36 PM, Doug Goldstein wrote:
>>>> On Sat, Aug 3, 2013 at 6:28 PM, Laine Stump <laine(a)laine.org>
wrote:
>>>>> ...and here is the result of applying all 10 patches of this 7 patch
>>>>> series, and starting up a domain using the config file attached to
the
>>>>> end of this message:
>>>>>
>>>>> # lspci
>>>>> 00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express
DRAM
>>>>> Controller
>>>>> 00:01.0 VGA compatible controller: Red Hat, Inc. Device 0100 (rev
04)
>>>>> 00:02.0 PCI bridge: Red Hat, Inc. Device 0001
>>>>> 00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface
>>>>> Controller (rev 02)
>>>>> 00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH
(ICH9R/DO/DH) 6
>>>>> port SATA AHCI Controller (rev 02)
>>>>> 00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus
Controller
>>>>> (rev 02)
>>>>> 01:01.0 PCI bridge: Red Hat, Inc. Device 0001
>>>>> 02:01.0 Ethernet controller: Red Hat, Inc Virtio network device
>>>>> 02:02.0 Ethernet controller: Red Hat, Inc Virtio network device
>>>>> 02:03.0 Multimedia audio controller: Intel Corporation 82801AA
AC'97
>>>>> Audio Controller (rev 01)
>>>>> 02:04.0 Communication controller: Red Hat, Inc Virtio console
>>>>> 02:05.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI
>>>>> Controller #1 (rev 03)
>>>>> 02:05.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI
>>>>> Controller #2 (rev 03)
>>>>> 02:05.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI
>>>>> Controller #3 (rev 03)
>>>>> 02:05.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2
EHCI
>>>>> Controller #1 (rev 03)
>>>>> 02:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
>>>>> 02:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory
balloon
>>>>> 02:08.0 SATA controller: Intel Corporation 82801IR/IO/IH
(ICH9R/DO/DH) 6
>>>>> port SATA AHCI Controller (rev 02)
>>>>>
>>>>> You'll notice that everything except the VGA, the implicit
devices are
>>>>>
>>>>> Yay!
>>>>>
>>>>> Now if virt-manager just provided a way to change the machinetype of
>>>>> guests as they were being created... (does virt-manager explicitly
>>>>> specify USB controllers? Currently the Q35 doesn't automatically
create
>>>>> a USB controller (see the patch comments)
>>>>>
>>>>> =========
>>>>> <domain type='kvm'>
>>>>> <name>F15-q35</name>
>>>>> <memory unit='KiB'>1048576</memory>
>>>>> <currentMemory
unit='KiB'>1048576</currentMemory>
>>>>> <os>
>>>>> <type arch='x86_64'
machine='pc-q35-1.5'>hvm</type>
>>>>> <boot dev='hd'/>
>>>>> <bootmenu enable='yes'/>
>>>>> </os>
>>>>> <features>
>>>>> <acpi/>
>>>>> <apic/>
>>>>> <pae/>
>>>>> </features>
>>>>> <clock offset='utc'/>
>>>>> <devices>
>>>>> <emulator>/usr/bin/qemu-kvm</emulator>
>>>>> <disk type='file' device='disk'>
>>>>> <driver name='qemu' type='raw'/>
>>>>> <source file='/var/lib/libvirt/images/F15.img'/>
>>>>> <target dev='vda' bus='virtio'/>
>>>>> </disk>
>>>>> <disk type='file' device='cdrom'>
>>>>> <driver name='qemu' type='raw'/>
>>>>> <source file='/home/laine/example.iso'/>
>>>>> <target dev='hdc' bus='sata'/>
>>>>> <readonly/>
>>>>> <address type='drive' controller='0'
bus='0' target='0' unit='0'/>
>>>>> </disk>
>>>>> <controller type='virtio-serial'
index='0'/>
>>>>> <controller type='usb' index='0'
model='ich9-ehci1'/>
>>>>> <controller type='usb' index='0'
model='ich9-uhci1'>
>>>>> <master startport='0'/>
>>>>> <address type='pci' domain='0x0000'
bus='0x02' slot='0x05'
>>>>> function='0x0' multifunction='on'/>
>>>>> </controller>
>>>>> <controller type='usb' index='0'
model='ich9-uhci2'>
>>>>> <master startport='2'/>
>>>>> <address type='pci' domain='0x0000'
bus='0x02' slot='0x05'
>>>>> function='0x1'/>
>>>>> </controller>
>>>>> <controller type='usb' index='0'
model='ich9-uhci3'>
>>>>> <master startport='4'/>
>>>>> <address type='pci' domain='0x0000'
bus='0x02' slot='0x05'
>>>>> function='0x2'/>
>>>>> </controller>
>>>>> <controller type='sata' index='0'/>
>>>>> <controller type='sata' index='1'/>
>>>>> <controller type='pci' index='0'
model='pcie-root'/>
>>>>> <interface type='network'>
>>>>> <source network='ipv6'/>
>>>>> <model type='virtio'/>
>>>>> </interface>
>>>>> <interface type='network'>
>>>>> <source network='isolated'/>
>>>>> <model type='virtio'/>
>>>>> </interface>
>>>>> <serial type='pty'>
>>>>> <target port='0'/>
>>>>> </serial>
>>>>> <console type='pty'>
>>>>> <target type='serial' port='0'/>
>>>>> </console>
>>>>> <input type='mouse' bus='ps2'/>
>>>>> <graphics type='vnc' port='-1'
autoport='yes'/>
>>>>> <sound model='ac97'/>
>>>>> <video>
>>>>> <model type='qxl' ram='65536'
vram='9216' heads='1'/>
>>>>> </video>
>>>>> <memballoon model='virtio'/>
>>>>> </devices>
>>>>> </domain>
>>>>>
>>>>> --
>>>>> libvir-list mailing list
>>>>> libvir-list(a)redhat.com
>>>>>
https://www.redhat.com/mailman/listinfo/libvir-list
>>>> Excellent thanks for providing a reference example. I've been trying
>>>> to review all your patches and work through testing bits and pieces
>>>> myself. I should have probably spoke up on the ML rather than
>>>> remaining silent. I'll finish up testing it tonight and ACK a
handful
>>>> shortly.
>>>>
>>> I have made some small changes to some of the other patches in the
>>> meantime. If you're serious to the point of actually testing them out, I
>>> should repost the ones I haven't yet pushed (only the first three).
>>> Coming up momentarily...
>> Yeah please repost. Until you mentioned the seabios stuff in your last
>> e-mail I had been debugging that.
>
>
> That took me a while to figure out too (and I was getting really worried
> until I did). I'm just glad that Alex Williamson had previously told me
> that qemu wasn't strict about the "can't plug a PCI device into a PCIe
> slot" rule.
>
>
>> I've got a CentOS 6.4 VM I'm trying
>> to get up under Q35 on qemu-1.5.2 + libvirt master + your patch set as
>> part of my review.
>
> Cool! The more real world testing the better! Thanks for taking the time
> to do that. (My testing has been with an existing Fedora 15 guest that
> was hanging around. Not sure why I picked that one; maybe because it was
> the most disposable item on the list :-)
So with v2 I've achieved success as well with my CentOS 6.4 VM. Your
domain XML is shorter than mine (I'm using dumpxml --inactive) but
I'll post mine.
<domain type='kvm'>
<name>altima</name>
<uuid>c2ca3b04-2ae9-0dd2-9855-109dcd90e38c</uuid>
<description>CentOS 6.2 i386</description>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-q35-1.5'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup' track='guest'>
<catchup threshold='123' slew='120' limit='10000'/>
</timer>
<timer name='pit' tickpolicy='delay'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/vms/altima.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x04'
function='0x0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1'
target='0' unit='0'/>
</disk>
<controller type='sata' index='0'>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x1f'
function='0x2'/>
</controller>
<controller type='sata' index='1'>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x02'
function='0x0'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x03'
function='0x0'/>
</controller>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1'
model='dmi-to-pci-bridge'>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x02'
function='0x0'/>
</controller>
<controller type='pci' index='2' model='pci-bridge'>
<address type='pci' domain='0x0000' bus='0x01'
slot='0x01'
function='0x0'/>
</controller>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x07'
function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x06'
function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x06'
function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x06'
function='0x2'/>
</controller>
<controller type='ide' index='0'/>
<interface type='bridge'>
<mac address='52:54:00:a6:23:4f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x01'
function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<source mode='bind'
path='/var/lib/libvirt/qemu/altima.agent'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0'
port='1'/>
</channel>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0'
port='2'/>
</channel>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<graphics type='spice' autoport='yes'/>
<video>
<model type='qxl' ram='65536' vram='65536'
heads='1'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x01'
function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x02'
slot='0x05'
function='0x0'/>
</memballoon>
</devices>
</domain>
[root@altima ~]# lspci
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 VGA compatible controller: Red Hat, Inc. Device 0100 (rev 04)
00:02.0 PCI bridge: Red Hat, Inc. Device 0001
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface
Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH)
6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:01.0 PCI bridge: Red Hat, Inc. Device 0001
02:01.0 Ethernet controller: Red Hat, Inc Virtio network device
02:02.0 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH)
6 port SATA Controller [AHCI mode] (rev 02)
02:03.0 Communication controller: Red Hat, Inc Virtio console
02:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
02:05.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
02:06.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #1 (rev 03)
02:06.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #2 (rev 03)
02:06.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #3 (rev 03)
I did notice that the EHCI USB controller is missing on bus 2 slot 7
function 7. Not sure if I did something wrong there in my config or
we're still missing some of that plumbing.
--
Doug Goldstein
Now for the ugly side...
You can see below I clearly screwed up the config with regards to the
bus, but I just wanted to see how it would react.
domain type='kvm'>
<name>altima</name>
<uuid>c2ca3b04-2ae9-0dd2-9855-109dcd90e38c</uuid>
<description>CentOS 6.2 i386</description>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-q35-1.5'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup' track='guest'>
<catchup threshold='123' slew='120' limit='10000'/>
</timer>
<timer name='pit' tickpolicy='delay'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/vms/altima.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x04'
function='0x0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1'
target='0' unit='0'/>
</disk>
<controller type='sata' index='0'/>
<controller type='sata' index='1'/>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x06'
function='0x0'/>
</controller>
<controller type='pci' index='0' model='pcie-root'/>
<interface type='bridge'>
<mac address='52:54:00:a6:23:4f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x03'
function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<source mode='bind'
path='/var/lib/libvirt/qemu/altima.agent'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0'
port='1'/>
</channel>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0'
port='2'/>
</channel>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<graphics type='spice' autoport='yes'/>
<video>
<model type='qxl' ram='65536' vram='65536'
heads='1'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x02'
function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x05'
function='0x0'/>
</memballoon>
</devices>
</domain>
Results in the following:
error: internal error: PCI bus 0000:00 is not compatible with the
device. Device requires a standard PCI slot, which is not provided by
this bus
Two issues:
- Not sure I'd really call that a VIR_ERR_INTERNAL_ERROR.
- What device? I screwed them all up. Might be nice to provide some
info about the device in the error message.
That was in patch 3/7 from the original series, which is already pushed.
--
Doug Goldstein