|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC 1/2] arm, smmu: add support for iommu_fwspec functions
On Tue, 14 Jan 2020, Julien Grall wrote:
> Hi Brian,
>
> On 10/01/2020 01:26, Brian Woods wrote:
> > Modify the smmu driver so that it uses the iommu_fwspec helper
> > functions. This means both ARM IOMMU drivers will both use the
> > iommu_fwspec helper functions, making enabling generic device tree
> > bindings in the SMMU driver much cleaner.
> >
> > Signed-off-by: Brian Woods <brian.woods@xxxxxxxxxx>
> > ---
> > RFC especially wanted on:
> > - Check in device_tree.c. This is needed, otherwise it won't boot due
> > to dev_iommu_fwspec_get(dev) being true and returning EEXIST. I'm
> > not completely sure what type of check is best here.
>
> I guess this because the masters are registered during the initialization of
> the SMMU. Could we instead look at registering them from the add_device
> callback?
>
> I understand this would mean to go through all the SMMU and require a bit more
> work. But I think it will help longer term as the workflow for registering a
> master would be similar whether legacy or generic bindings are used.
>
> @Stefano any opinions?
Yeah, add_device looks like a better fit for the new bindings.
> > xen/drivers/passthrough/arm/smmu.c | 74
> > ++++++++++++++++++++++-------------
> > xen/drivers/passthrough/device_tree.c | 3 ++ > 2 files changed, 49
> > insertions(+), 28 deletions(-)
> >
> > diff --git a/xen/drivers/passthrough/arm/smmu.c
> > b/xen/drivers/passthrough/arm/smmu.c
> > index 94662a8..c5db5be 100644
> > --- a/xen/drivers/passthrough/arm/smmu.c
> > +++ b/xen/drivers/passthrough/arm/smmu.c
> > @@ -49,6 +49,7 @@
> > #include <asm/atomic.h>
> > #include <asm/device.h>
> > #include <asm/io.h>
> > +#include <asm/iommu_fwspec.h>
> > #include <asm/platform.h>
> > /* Xen: The below defines are redefined within the file. Undef it */
> > @@ -597,8 +598,7 @@ struct arm_smmu_smr {
> > };
> > struct arm_smmu_master_cfg {
> > - int num_streamids;
> > - u16 streamids[MAX_MASTER_STREAMIDS];
>
> Now that we use fwspec, do we really need to keep the MAX_MASTER_STREAMIDS
> limit?
>
> > + struct iommu_fwspec *fwspec;
>
> NIT: Can the content be const?
>
> > struct arm_smmu_smr *smrs;
> > };
> > @@ -779,7 +779,7 @@ static int register_smmu_master(struct arm_smmu_device
> > *smmu,
> > struct device *dev,
> > struct of_phandle_args *masterspec)
> > {
> > - int i;
> > + int i, ret = 0;
> > struct arm_smmu_master *master;
> > master = find_smmu_master(smmu, masterspec->np);
> > @@ -798,26 +798,37 @@ static int register_smmu_master(struct arm_smmu_device
> > *smmu,
> > }
> > master = devm_kzalloc(dev, sizeof(*master), GFP_KERNEL);
> > - if (!master)
> > + if (!master) {
> > return -ENOMEM;
> > + }
>
> NIT: May I ask why did you add the {} here?
>
>
> Cheers,
>
> --
> Julien Grall
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |