[Engine-devel] Stable PCI Addresses design wiki

Eli Mesika emesika at redhat.com
Thu Dec 1 11:21:41 UTC 2011



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



More information about the Engine-devel mailing list