[Kimchi-devel] [PATCH] [Kimchi 1/3] Disallow hotplug of graphic cards because it is no supported
Aline Manera
alinefm at linux.vnet.ibm.com
Tue Feb 23 18:35:50 UTC 2016
On 02/23/2016 03:35 PM, Aline Manera wrote:
>
>
> On 02/22/2016 04:38 PM, Jose Ricardo Ziviani wrote:
>> - Currently it is only possible to perform cold plug of 3D graphic
>> cards, so this commit blocks hot plug of such device in the backend.
>>
>> Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
>> ---
>> i18n.py | 1 +
>> model/host.py | 15 +++++++++++++++
>> model/vmhostdevs.py | 5 +++++
>> 3 files changed, 21 insertions(+)
>>
>> diff --git a/i18n.py b/i18n.py
>> index 42ee884..4391dff 100644
>> --- a/i18n.py
>> +++ b/i18n.py
>> @@ -142,6 +142,7 @@ messages = {
>> "For AMD CPU, add 'iommu=pt iommu=1'."),
>> "KCHVMHDEV0004E": _('"name" should be a device name string'),
>> "KCHVMHDEV0005E": _('The device %(name)s is probably in use by
>> the host. Unable to attach it to the guest.'),
>> + "KCHVMHDEV0006E": _('Hot-plug of device %(name)s is not
>> supported.'),
>>
>> "KCHVMIF0001E": _("Interface %(iface)s does not exist in
>> virtual machine %(name)s"),
>> "KCHVMIF0002E": _("Network %(network)s specified for virtual
>> machine %(name)s does not exist"),
>> diff --git a/model/host.py b/model/host.py
>> index 583accd..53a8692 100644
>> --- a/model/host.py
>> +++ b/model/host.py
>> @@ -18,6 +18,7 @@
>> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>> 02110-1301 USA
>>
>> import libvirt
>> +import os
>> from collections import defaultdict
>> from lxml import objectify
>>
>> @@ -176,6 +177,7 @@ class DeviceModel(object):
>>
>> info = hostdev.get_dev_info(dev)
>> info['multifunction'] = self.is_multifunction_pci(info)
>> + info['vga3d'] = self.is_device_3D_controller(info)
>> return info
>
> As you are adding a new parameter to the API, please, update
> docs/API.md accordingly.
>
Never mind! I've just seen the last patch =)
>> def is_multifunction_pci(self, info):
>> @@ -184,6 +186,19 @@ class DeviceModel(object):
>> iommu_group_nr = int(info['iommuGroup'])
>> return len(self.iommu_groups[iommu_group_nr]) > 1
>>
>> + def is_device_3D_controller(self, info):
>> + try:
>> + with open(os.path.join(info['path'], 'class')) as f:
>> + pci_class = int(f.readline().strip(), 16)
>> +
>> + except:
>> + return False
>> +
>> + if pci_class == 0x030200:
>> + return True
>> +
>> + return False
>> +
>> @staticmethod
>> def _toint(num_str):
>> if num_str.startswith('0x'):
>> diff --git a/model/vmhostdevs.py b/model/vmhostdevs.py
>> index de52cd8..2a56f9f 100644
>> --- a/model/vmhostdevs.py
>> +++ b/model/vmhostdevs.py
>> @@ -184,6 +184,11 @@ class VMHostDevsModel(object):
>> DOM_STATE_MAP[dom.info()[0]] == "shutoff"
>> pci_infos = sorted(pci_infos, key=itemgetter('name'))
>>
>> + if dev_model.is_device_3D_controller(dev_info) and \
>> + DOM_STATE_MAP[dom.info()[0]] != "shutoff":
>> + raise InvalidOperation('KCHVMHDEV0006E',
>> + {'name': dev_info['name']})
>> +
>> # all devices in the group that is going to be attached to
>> the vm
>> # must be detached from the host first
>> with RollbackContext() as rollback:
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
More information about the Kimchi-devel
mailing list