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:
Родитель
39ab9555c2
Коммит
e3d10af112
|
@ -472,7 +472,7 @@ static int iommu_init_device(struct device *dev)
|
|||
|
||||
dev->archdata.iommu = dev_data;
|
||||
|
||||
iommu_device_link(&iommu->iommu.dev, dev);
|
||||
iommu_device_link(&iommu->iommu, dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -514,7 +514,7 @@ static void iommu_uninit_device(struct device *dev)
|
|||
if (dev_data->domain)
|
||||
detach_device(dev);
|
||||
|
||||
iommu_device_unlink(&iommu->iommu.dev, dev);
|
||||
iommu_device_unlink(&iommu->iommu, dev);
|
||||
|
||||
iommu_group_remove_device(dev);
|
||||
|
||||
|
|
|
@ -5162,7 +5162,7 @@ static int intel_iommu_add_device(struct device *dev)
|
|||
if (!iommu)
|
||||
return -ENODEV;
|
||||
|
||||
iommu_device_link(&iommu->iommu.dev, dev);
|
||||
iommu_device_link(&iommu->iommu, 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_device_unlink(&iommu->iommu.dev, dev);
|
||||
iommu_device_unlink(&iommu->iommu, dev);
|
||||
}
|
||||
|
||||
#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
|
||||
* 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;
|
||||
|
||||
if (!dev || IS_ERR(dev))
|
||||
if (!iommu || IS_ERR(iommu))
|
||||
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));
|
||||
if (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)
|
||||
sysfs_remove_link_from_group(&dev->kobj, "devices",
|
||||
sysfs_remove_link_from_group(&iommu->dev.kobj, "devices",
|
||||
dev_name(link));
|
||||
|
||||
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;
|
||||
|
||||
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 char *fmt, ...) __printf(4, 5);
|
||||
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,
|
||||
const struct iommu_ops *ops)
|
||||
|
@ -294,8 +296,6 @@ extern int iommu_domain_get_attr(struct iommu_domain *domain, enum iommu_attr,
|
|||
void *data);
|
||||
extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
|
||||
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 */
|
||||
extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
|
||||
|
|
Загрузка…
Ссылка в новой задаче