[Kimchi-devel] [PATCH 2/3] Check for usb xhci controller in Power platform

Daniel Henrique Barboza dhbarboza82 at gmail.com
Thu Jul 9 14:21:27 UTC 2015


Reviewed-by: Daniel Barboza <dhbarboza82 at gmail.com>

On 07/08/2015 02:42 PM, Jose Ricardo Ziviani wrote:
>   - Today it is not possible to hotplug a PCI in Power Systems without an
>     USB xhci controller existing in the VM. This commit checks if there
>     is such controller in the VM, displaying an error message if not.
>
> Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
> ---
>   src/kimchi/model/vmhostdevs.py | 28 +++++++++++++++++++++++++++-
>   1 file changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/src/kimchi/model/vmhostdevs.py b/src/kimchi/model/vmhostdevs.py
> index ea75fce..186e542 100644
> --- a/src/kimchi/model/vmhostdevs.py
> +++ b/src/kimchi/model/vmhostdevs.py
> @@ -171,6 +171,26 @@ class VMHostDevsModel(object):
>               if rc != 0:
>                   kimchi_log.warning("Unable to turn on sebool virt_use_sysfs")
>   
> +    def _have_xhci_usb_controller(self, xmlstr):
> +        root = objectify.fromstring(xmlstr)
> +
> +        try:
> +            controllers = root.devices.controller
> +
> +        except AttributeError:
> +            return False
> +
> +        for controller in controllers:
> +
> +            if 'model' not in controller.attrib:
> +                continue
> +
> +            if controller.attrib['type'] == 'usb' and \
> +               controller.attrib['model'] == 'nec-xhci':
> +                return True
> +
> +        return False
> +
>       def _attach_pci_device(self, vmid, dev_info):
>           self._validate_pci_passthrough_env()
>   
> @@ -180,11 +200,17 @@ class VMHostDevsModel(object):
>           driver = ('vfio' if DOM_STATE_MAP[dom.info()[0]] == "shutoff" and
>                     self.caps.kernel_vfio else 'kvm')
>   
> -        # on powerkvm systems it must be vfio driver.
>           distro, _, _ = platform.linux_distribution()
>           if distro == 'IBM_PowerKVM':
> +            # on powerkvm systems, the driver must be vfio.
>               driver = 'vfio'
>   
> +            # powerkvm requires a xhci usb controller in order to support
> +            # pci hotplug.
> +            if DOM_STATE_MAP[dom.info()[0]] != "shutoff" and \
> +               not self._have_xhci_usb_controller(dom.XMLDesc(0)):
> +                raise InvalidOperation("KCHVMHDEV0006E", {'vmid': vmid})
> +
>           # Attach all PCI devices in the same IOMMU group
>           dev_model = DeviceModel(conn=self.conn)
>           devs_model = DevicesModel(conn=self.conn)




More information about the Kimchi-devel mailing list