Re: [PATCH v6 02/11] driver core: Add dma_cleanup callback in bus_type

Robin Murphy
2022-02-21T20:43:44Z

On 2022-02-19 07:32, Christoph Hellwig wrote:
> So we are back to the callback madness instead of the nice and simple
> flag? Sigh.

TBH, I *think* this part could be a fair bit simpler. It looks like this
whole callback mess is effectively just to decrement group->owner_cnt,
but since we should only care about ownership at probe, hotplug, and
other places well outside critical fast-paths, I'm not sure we really
need to keep track of that anyway - it can always be recalculated by
walking the group->devices list, and some of the relevant places have to
do that anyway. It should be pretty straightforward for
iommu_bus_notifier to clear group->owner automatically upon an unbind of
the matching driver when it's no longer bound to any other devices in
the group either. And if we still want to entertain the notion of VFIO
being able to release ownership without unbinding (I'm not entirely
convinced that's a realistically necessary use-case) then it should be
up to VFIO to decide when it's finally finished with the whole group,
rather than pretending we can keep track of nested ownership claims from
inside the API.

Furthermore, If Greg was willing to compromise just far enough to let us
put driver_managed_dma in the 3-byte hole in the generic struct
device_driver, we wouldn't have to have quite so much boilerplate
repeated across the various bus implementations (I'm not suggesting to
move any actual calls back into the driver core, just the storage of
flag itself). FWIW I have some ideas for re-converging .dma_configure in
future which I think should probably be able to subsume this into a
completely generic common path, given a common flag.

Robin.