Message ID | 20200326150841.10083-3-joro@8bytes.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iommu: Move iommu_fwspec out of 'struct device' | expand |
On 2020/3/26 23:08, Joerg Roedel wrote: > From: Joerg Roedel <jroedel@suse.de> > > Use the accessor functions instead of directly dereferencing > dev->iommu_fwspec. > > Tested-by: Hanjun Guo <guohanjun@huawei.com> > Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org> > Signed-off-by: Joerg Roedel <jroedel@suse.de> > --- > drivers/acpi/arm64/iort.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > index ed3d2d1a7ae9..7d04424189df 100644 > --- a/drivers/acpi/arm64/iort.c > +++ b/drivers/acpi/arm64/iort.c > @@ -1015,6 +1015,7 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev) > return ops; > > if (dev_is_pci(dev)) { > + struct iommu_fwspec *fwspec; > struct pci_bus *bus = to_pci_dev(dev)->bus; > struct iort_pci_alias_info info = { .dev = dev }; > > @@ -1027,8 +1028,9 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev) > err = pci_for_each_dma_alias(to_pci_dev(dev), > iort_pci_iommu_init, &info); ... > > - if (!err && iort_pci_rc_supports_ats(node)) > - dev->iommu_fwspec->flags |= IOMMU_FWSPEC_PCI_RC_ATS; > + fwspec = dev_iommu_fwspec_get(dev); > + if (fwspec && iort_pci_rc_supports_ats(node)) Should we check !err as well? Thanks Hanjun > + fwspec->flags |= IOMMU_FWSPEC_PCI_RC_ATS; > } else { > int i = 0; > >
On Fri, Mar 27, 2020 at 11:30:53AM +0800, Hanjun Guo wrote: > On 2020/3/26 23:08, Joerg Roedel wrote: > > From: Joerg Roedel <jroedel@suse.de> > > > > Use the accessor functions instead of directly dereferencing > > dev->iommu_fwspec. > > > > Tested-by: Hanjun Guo <guohanjun@huawei.com> > > Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org> > > Signed-off-by: Joerg Roedel <jroedel@suse.de> > > --- > > drivers/acpi/arm64/iort.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c > > index ed3d2d1a7ae9..7d04424189df 100644 > > --- a/drivers/acpi/arm64/iort.c > > +++ b/drivers/acpi/arm64/iort.c > > @@ -1015,6 +1015,7 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev) > > return ops; > > > > if (dev_is_pci(dev)) { > > + struct iommu_fwspec *fwspec; > > struct pci_bus *bus = to_pci_dev(dev)->bus; > > struct iort_pci_alias_info info = { .dev = dev }; > > > > @@ -1027,8 +1028,9 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev) > > err = pci_for_each_dma_alias(to_pci_dev(dev), > > iort_pci_iommu_init, &info); > > ... > > > > > - if (!err && iort_pci_rc_supports_ats(node)) > > - dev->iommu_fwspec->flags |= IOMMU_FWSPEC_PCI_RC_ATS; > > + fwspec = dev_iommu_fwspec_get(dev); > > + if (fwspec && iort_pci_rc_supports_ats(node)) > > Should we check !err as well? No need, the check should have been on fwspec from the beginning. Checking err was just a lazy shortcut on my part, as we're really just making sure that we can dereference fwspec->flags here. Thanks, Jean > > Thanks > Hanjun > > > + fwspec->flags |= IOMMU_FWSPEC_PCI_RC_ATS; > > } else { > > int i = 0; > > > > >
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c index ed3d2d1a7ae9..7d04424189df 100644 --- a/drivers/acpi/arm64/iort.c +++ b/drivers/acpi/arm64/iort.c @@ -1015,6 +1015,7 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev) return ops; if (dev_is_pci(dev)) { + struct iommu_fwspec *fwspec; struct pci_bus *bus = to_pci_dev(dev)->bus; struct iort_pci_alias_info info = { .dev = dev }; @@ -1027,8 +1028,9 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev) err = pci_for_each_dma_alias(to_pci_dev(dev), iort_pci_iommu_init, &info); - if (!err && iort_pci_rc_supports_ats(node)) - dev->iommu_fwspec->flags |= IOMMU_FWSPEC_PCI_RC_ATS; + fwspec = dev_iommu_fwspec_get(dev); + if (fwspec && iort_pci_rc_supports_ats(node)) + fwspec->flags |= IOMMU_FWSPEC_PCI_RC_ATS; } else { int i = 0;