Hi, On 05/12/2018 04:54 AM, Jacob Pan wrote: > DMA faults can be detected by IOMMU at device level. Adding a pointer > to struct device allows IOMMU subsystem to report relevant faults > back to the device driver for further handling. > For direct assigned device (or user space drivers), guest OS holds > responsibility to handle and respond per device IOMMU fault. > Therefore we need fault reporting mechanism to propagate faults beyond > IOMMU subsystem. > > There are two other IOMMU data pointers under struct device today, here > we introduce iommu_param as a parent pointer such that all device IOMMU > data can be consolidated here. The idea was suggested here by Greg KH > and Joerg. The name iommu_param is chosen here since iommu_data has been used.
This doesn't match what you've done in the patch. Maybe you forgot to cleanup? :-) The idea is to create a parent pointer under device struct and move previous iommu_group and iommu_fwspec together with the iommu fault related data into it. Best regards, Lu Baolu > > Suggested-by: Greg Kroah-Hartman <[email protected]> > Reviewed-by: Greg Kroah-Hartman <[email protected]> > Signed-off-by: Jacob Pan <[email protected]> > Link: https://lkml.org/lkml/2017/10/6/81 > --- > include/linux/device.h | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/include/linux/device.h b/include/linux/device.h > index 4779569..c1b1796 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -41,6 +41,7 @@ struct iommu_ops; > struct iommu_group; > struct iommu_fwspec; > struct dev_pin_info; > +struct iommu_param; > > struct bus_attribute { > struct attribute attr; > @@ -899,6 +900,7 @@ struct dev_links_info { > * device (i.e. the bus driver that discovered the device). > * @iommu_group: IOMMU group the device belongs to. > * @iommu_fwspec: IOMMU-specific properties supplied by firmware. > + * @iommu_param: Per device generic IOMMU runtime data > * > * @offline_disabled: If set, the device is permanently online. > * @offline: Set after successful invocation of bus type's .offline(). > @@ -988,6 +990,7 @@ struct device { > void (*release)(struct device *dev); > struct iommu_group *iommu_group; > struct iommu_fwspec *iommu_fwspec; > + struct iommu_param *iommu_param; > > bool offline_disabled:1; > bool offline:1;

