[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] Reserve first 3 PCI slots for hardcoded devices



On Fri, Mar 25, 2011 at 07:47:45PM +0100, Philipp Hahn wrote:
> If a domain is initially created without a <vidoe> device but with other
> devices (like <interface>), PCI device slots normally reserved for
> hardcoded devices (host bridge, IDE controller, video) get assigned to
> these. If than later on a <video> device is added without removing the
> already assigned <addresse>s, the re-definition fails in
> qemuAssignDevicePCISlots() with the error message "Primary video card
> must have PCI address 0:0:2.0"
> 
> To simplify editing existing domains just reserve the first three slots
> for internal usage by setting qemuDomainPCIAddressSet.nextslot = 3.
> 
> Signed-off-by: Philipp Hahn <hahn univention de>

The motivation for this patch is ok, but the impl isn't quite
robust enough. When nextslot gets to 31, libvirt resets it back
to 0 and starts searching again (in case there are now gaps from
unplugged devices). So when this happens, it'll pick up slot 2
again.

In qemuAssignDevicePCISlots() we do this

    if (!reservedIDE &&
        qemuDomainPCIAddressReserveSlot(addrs, 1) < 0)
        goto error;

To ensure the PIIX is always reserved, even if no IDE disks
are present. I think we can just do the same with VGA but
with s/1/2/ in the slot number.

> ---
>  src/qemu/qemu_command.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index c63de09..c359fd0 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -733,6 +733,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def)
>          if (!(addrs = qemuDomainPCIAddressSetCreate(def)))
>              goto cleanup;
>  
> +        /* reserve first 3 slots for hardcoded devices */
> +        addrs->nextslot = 3;
> +
>          if (qemuAssignDevicePCISlots(def, addrs) < 0)
>              goto cleanup;
>      }


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 :|


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]