[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9da468bc-e6fd-1d7c-a6ce-69be87a7472a@arm.com>
Date: Fri, 22 Apr 2022 20:02:12 +0100
From: Robin Murphy <robin.murphy@....com>
To: Krishna Reddy <vdumpa@...dia.com>,
"joro@...tes.org" <joro@...tes.org>,
"will@...nel.org" <will@...nel.org>
Cc: "iommu@...ts.linux-foundation.org" <iommu@...ts.linux-foundation.org>,
"sven@...npeter.dev" <sven@...npeter.dev>,
"robdclark@...il.com" <robdclark@...il.com>,
"m.szyprowski@...sung.com" <m.szyprowski@...sung.com>,
"baolu.lu@...ux.intel.com" <baolu.lu@...ux.intel.com>,
"yong.wu@...iatek.com" <yong.wu@...iatek.com>,
"mjrosato@...ux.ibm.com" <mjrosato@...ux.ibm.com>,
"gerald.schaefer@...ux.ibm.com" <gerald.schaefer@...ux.ibm.com>,
"zhang.lyra@...il.com" <zhang.lyra@...il.com>,
"thierry.reding@...il.com" <thierry.reding@...il.com>,
"jean-philippe@...aro.org" <jean-philippe@...aro.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 02/13] iommu: Move bus setup to IOMMU device registration
On 2022-04-22 19:37, Krishna Reddy wrote:
> Good effort to isolate bus config from smmu drivers.
> Reviewed-By: Krishna Reddy <vdumpa@...dia.com>
Thanks!
> I have an orthogonal question here.
> Can the following code handle the case, where different buses have different type of SMMU instances(like one bus has SMMUv2 and another bus has SMMUv3)?
> If it need to handle the above case, can the smmu device bus be matched with specific bus here and ops set only for that bus?
Not yet, but that is one of the end goals that this is all working
towards. I think the stuff that I've added to the dev branch[1] today
should have reached the point where that becomes viable, but I'll need
to rig up a system to test it next week.
Intermediate solutions aren't worth it because in practice you
inevitably end up needing both IOMMU drivers to share the platform "bus"
anyway.
Cheers,
Robin.
[1] https://gitlab.arm.com/linux-arm/linux-rm/-/commits/iommu/bus
>
>
>> + for (int i = 0; i < ARRAY_SIZE(iommu_buses); i++) {
>> + struct bus_type *bus = iommu_buses[i];
>> + const struct iommu_ops *bus_ops = bus->iommu_ops;
>> + int err;
>> +
>> + WARN_ON(bus_ops && bus_ops != ops);
>> + bus->iommu_ops = ops;
>> + err = bus_iommu_probe(bus);
>> + if (err) {
>> + bus_for_each_dev(bus, NULL, iommu,
>> remove_iommu_group);
>> + bus->iommu_ops = bus_ops;
>> + return err;
>> + }
>> + }
>
>
> -KR
Powered by blists - more mailing lists