Re: [PATCH 5/6] iommu/amd: Add support for non-pci devices
From: Joerg Roedel
Date: Fri Jan 08 2016 - 12:01:52 EST
On Fri, Jan 08, 2016 at 10:52:59PM +0800, Wan Zongshun wrote:
> Actually I am supposing the '.add_device' will be the first called
> in iommu initializing stage, so I think as long as having no error
> of check device here, any call-sites of get_device_id() will be
> fine, because adding device successfully should be the pre-condition
> of any iommu function can be performed, please correct me.
>
> static int amd_iommu_add_device(struct device *dev)
> {
> struct iommu_dev_data *dev_data;
> struct iommu_domain *domain;
> struct amd_iommu *iommu;
> u16 devid;
> int ret;
>
> if (!check_device(dev) || get_dev_data(dev))
> return 0;
>
> devid = get_device_id(dev);
> iommu = amd_iommu_rlookup_table[devid];
There are places in the interrupt remapping code that call get_device_id
without calling check_device first. See get_irq_domain and get_devid.
Joerg