Skip to content
  • Jens Freimann's avatar
    f3a85056
    qdev/qbus: add hidden device support · f3a85056
    Jens Freimann authored
    This adds support for hiding a device to the qbus and qdev APIs.  The
    first user of this will be the virtio-net failover feature but the API
    introduced with this patch could be used to implement other features as
    well, for example hiding pci devices when a pci bus is powered off.
    
    qdev_device_add() is modified to check for a failover_pair_id
    argument in the option string. A DeviceListener callback
    should_be_hidden() is added. It can be used by a standby device to
    inform qdev that this device should not be added now. The standby device
    handler can store the device options to plug the device in at a later
    point in time.
    
    One reason for hiding the device is that we don't want to expose both
    devices to the guest kernel until the respective virtio feature bit
    VIRTIO_NET_F_STANDBY was negotiated and we know that the devices will be
    handled correctly by the guest.
    
    More information on the kernel feature this is using:
     https://www.kernel.org/doc/html/latest/networking/net_failover.html
    
    
    
    An example where the primary device is a vfio-pci device and the standby
    device is a virtio-net device:
    
    A device is hidden when it has an "failover_pair_id" option, e.g.
    
     -device virtio-net-pci,...,failover=on,...
     -device vfio-pci,...,failover_pair_id=net1,...
    
    Signed-off-by: default avatarJens Freimann <jfreimann@redhat.com>
    Message-Id: <20191029114905.6856-2-jfreimann@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    f3a85056
    qdev/qbus: add hidden device support
    Jens Freimann authored
    This adds support for hiding a device to the qbus and qdev APIs.  The
    first user of this will be the virtio-net failover feature but the API
    introduced with this patch could be used to implement other features as
    well, for example hiding pci devices when a pci bus is powered off.
    
    qdev_device_add() is modified to check for a failover_pair_id
    argument in the option string. A DeviceListener callback
    should_be_hidden() is added. It can be used by a standby device to
    inform qdev that this device should not be added now. The standby device
    handler can store the device options to plug the device in at a later
    point in time.
    
    One reason for hiding the device is that we don't want to expose both
    devices to the guest kernel until the respective virtio feature bit
    VIRTIO_NET_F_STANDBY was negotiated and we know that the devices will be
    handled correctly by the guest.
    
    More information on the kernel feature this is using:
     https://www.kernel.org/doc/html/latest/networking/net_failover.html
    
    
    
    An example where the primary device is a vfio-pci device and the standby
    device is a virtio-net device:
    
    A device is hidden when it has an "failover_pair_id" option, e.g.
    
     -device virtio-net-pci,...,failover=on,...
     -device vfio-pci,...,failover_pair_id=net1,...
    
    Signed-off-by: default avatarJens Freimann <jfreimann@redhat.com>
    Message-Id: <20191029114905.6856-2-jfreimann@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Loading