on 2014/10/04 00:53, Aline Manera wrote:
On 09/30/2014 07:00 AM, Zhou Zheng Sheng wrote:
> +def _get_same_iommugroup_devices(dev_infos, device_info):
> + dev_dict = dict([(dev_info['name'], dev_info) for dev_info in
> dev_infos])
> +
> + def get_iommu_group(dev_info):
> + # Find out the iommu group of a given device.
> + # Child device belongs to the same iommu group as the parent
> device.
> + try:
> + return dev_info['iommuGroup']
> + except KeyError:
> + pass
> +
> + parent = dev_info['parent']
> + while parent is not None:
> + try:
> + parent_info = dev_dict[parent]
> + except KeyError:
> + kimchi_log.error("Parent %s of device %s does not
> exist",
> + parent, dev_info['name'])
> + break
> +
> + try:
> + iommuGroup = parent_info['iommuGroup']
> + except KeyError:
> + pass
> + else:
> + return iommuGroup
> +
> + parent = parent_info['parent']
> +
> + return -1
> +
minor comment: true/false (or None) is more like python
> + iommu_group = get_iommu_group(device_info)
> +
> + if iommu_group == -1:
> + return []
> +
> + return [dev_info for dev_info in dev_infos
> + if dev_info['name'] != device_info['name'] and
> + get_iommu_group(dev_info) == iommu_group]
> +
> +
Thank you Aline. This function was re-written several times. I should
have noticed this problem.