iommu: Make iommu_device_link/unlink take a struct iommu_device
This makes the interface more consistent with iommu_device_sysfs_add/remove. Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
39ab9555c2
commit
e3d10af112
|
@ -472,7 +472,7 @@ static int iommu_init_device(struct device *dev)
|
||||||
|
|
||||||
dev->archdata.iommu = dev_data;
|
dev->archdata.iommu = dev_data;
|
||||||
|
|
||||||
iommu_device_link(&iommu->iommu.dev, dev);
|
iommu_device_link(&iommu->iommu, dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -514,7 +514,7 @@ static void iommu_uninit_device(struct device *dev)
|
||||||
if (dev_data->domain)
|
if (dev_data->domain)
|
||||||
detach_device(dev);
|
detach_device(dev);
|
||||||
|
|
||||||
iommu_device_unlink(&iommu->iommu.dev, dev);
|
iommu_device_unlink(&iommu->iommu, dev);
|
||||||
|
|
||||||
iommu_group_remove_device(dev);
|
iommu_group_remove_device(dev);
|
||||||
|
|
||||||
|
|
|
@ -5162,7 +5162,7 @@ static int intel_iommu_add_device(struct device *dev)
|
||||||
if (!iommu)
|
if (!iommu)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
iommu_device_link(&iommu->iommu.dev, dev);
|
iommu_device_link(&iommu->iommu, dev);
|
||||||
|
|
||||||
group = iommu_group_get_for_dev(dev);
|
group = iommu_group_get_for_dev(dev);
|
||||||
|
|
||||||
|
@ -5184,7 +5184,7 @@ static void intel_iommu_remove_device(struct device *dev)
|
||||||
|
|
||||||
iommu_group_remove_device(dev);
|
iommu_group_remove_device(dev);
|
||||||
|
|
||||||
iommu_device_unlink(&iommu->iommu.dev, dev);
|
iommu_device_unlink(&iommu->iommu, dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_INTEL_IOMMU_SVM
|
#ifdef CONFIG_INTEL_IOMMU_SVM
|
||||||
|
|
|
@ -95,31 +95,31 @@ void iommu_device_sysfs_remove(struct iommu_device *iommu)
|
||||||
* directory of the IOMMU device in sysfs and an "iommu" link will be
|
* directory of the IOMMU device in sysfs and an "iommu" link will be
|
||||||
* created under the linked device, pointing back at the IOMMU device.
|
* created under the linked device, pointing back at the IOMMU device.
|
||||||
*/
|
*/
|
||||||
int iommu_device_link(struct device *dev, struct device *link)
|
int iommu_device_link(struct iommu_device *iommu, struct device *link)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!dev || IS_ERR(dev))
|
if (!iommu || IS_ERR(iommu))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
ret = sysfs_add_link_to_group(&dev->kobj, "devices",
|
ret = sysfs_add_link_to_group(&iommu->dev.kobj, "devices",
|
||||||
&link->kobj, dev_name(link));
|
&link->kobj, dev_name(link));
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = sysfs_create_link_nowarn(&link->kobj, &dev->kobj, "iommu");
|
ret = sysfs_create_link_nowarn(&link->kobj, &iommu->dev.kobj, "iommu");
|
||||||
if (ret)
|
if (ret)
|
||||||
sysfs_remove_link_from_group(&dev->kobj, "devices",
|
sysfs_remove_link_from_group(&iommu->dev.kobj, "devices",
|
||||||
dev_name(link));
|
dev_name(link));
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void iommu_device_unlink(struct device *dev, struct device *link)
|
void iommu_device_unlink(struct iommu_device *iommu, struct device *link)
|
||||||
{
|
{
|
||||||
if (!dev || IS_ERR(dev))
|
if (!iommu || IS_ERR(iommu))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sysfs_remove_link(&link->kobj, "iommu");
|
sysfs_remove_link(&link->kobj, "iommu");
|
||||||
sysfs_remove_link_from_group(&dev->kobj, "devices", dev_name(link));
|
sysfs_remove_link_from_group(&iommu->dev.kobj, "devices", dev_name(link));
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,6 +224,8 @@ int iommu_device_sysfs_add(struct iommu_device *iommu,
|
||||||
const struct attribute_group **groups,
|
const struct attribute_group **groups,
|
||||||
const char *fmt, ...) __printf(4, 5);
|
const char *fmt, ...) __printf(4, 5);
|
||||||
void iommu_device_sysfs_remove(struct iommu_device *iommu);
|
void iommu_device_sysfs_remove(struct iommu_device *iommu);
|
||||||
|
int iommu_device_link(struct iommu_device *iommu, struct device *link);
|
||||||
|
void iommu_device_unlink(struct iommu_device *iommu, struct device *link);
|
||||||
|
|
||||||
static inline void iommu_device_set_ops(struct iommu_device *iommu,
|
static inline void iommu_device_set_ops(struct iommu_device *iommu,
|
||||||
const struct iommu_ops *ops)
|
const struct iommu_ops *ops)
|
||||||
|
@ -294,8 +296,6 @@ extern int iommu_domain_get_attr(struct iommu_domain *domain, enum iommu_attr,
|
||||||
void *data);
|
void *data);
|
||||||
extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
|
extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
|
||||||
void *data);
|
void *data);
|
||||||
int iommu_device_link(struct device *dev, struct device *link);
|
|
||||||
void iommu_device_unlink(struct device *dev, struct device *link);
|
|
||||||
|
|
||||||
/* Window handling function prototypes */
|
/* Window handling function prototypes */
|
||||||
extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
|
extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
|
||||||
|
|
Loading…
Reference in New Issue