----- Original Message -----
From: "Daniel P. Berrange" <berrange(a)redhat.com>
To: "Eli Mesika" <emesika(a)redhat.com>
Cc: engine-devel(a)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 :|