
----- Original Message -----
From: "Daniel P. Berrange" <berrange@redhat.com> To: "Eli Mesika" <emesika@redhat.com> Cc: engine-devel@ovirt.org Sent: Wednesday, November 30, 2011 5:54:34 PM Subject: Re: [Engine-devel] Stable PCI Addresses design wiki
On Wed, Nov 30, 2011 at 10:06:37AM -0500, Eli Mesika wrote:
http://www.ovirt.org/wiki/Features/Design/StablePCIAddresses
My primary comment on this is that you likely don't want to restrict yourself to PCI addresses.
Sure, this is a bad name, have changed that to "Stable Device Addresses" In the term Device we include PCI, VirtIO Serial, SCSI, IDE, CCID and actually anything libvirt supports. Page was changed to : http://www.ovirt.org/wiki/Features/Design/StableDeviceAddresses Thanks
If RHEVM intends to use virtio-serial controllers you want to maintain stable virtio serial addresses
If RHEVM intends to use CCID smartcard controllers you want to maintain stable CCID device addresses
If RHEVM intends to use SCSI controllers you will want to maintain SCSI drive addresses
If RHEVM intends to use USB controllers you will want to maintain USB device addresses
I think you get the idea :-) In general you can say that every single device listed in the XML will ultimately have an address associated with it. The type address will vary depending on what type of controller the device is attached to.
In addition, when you start dealing with these other non-PCI address types, you will also need to start dealing with controller devices.
eg, if you add a SCSI disk to the XML
<disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/test/disk0.raw'/> <target dev='sda' bus='scsi'/> </disk>
First of all libvirt will want to assign an address to this drive
<disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/test/disk0.raw'/> <target dev='sda' bus='scsi'/> <address type='drive' controller='0' bus='0' unit='0'/> </disk>
Then, if the corresponding controller does not exist already, libvirt will auto-add a controller device, which itself has an address you will need to track:
<controller type='scsi' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </controller>
In addition, when QEMU gains support for PCI bridges, or multiple PCI root complexes, there will also be the possibility of dealing with multiple PCI controllers in the XML too.
So even if you only implement PCI address support in the first iteration, I'd really encourage you to at least consider how you will cope with the other address types sooner, rather than later.
Regards, 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 :|