Re: [PATCH V2 3/5] vDPA: introduce vDPA bus

From: Jason Wang
Date: Wed Feb 12 2020 - 22:34:35 EST



On 2020/2/12 äå8:51, Jason Gunthorpe wrote:
On Wed, Feb 12, 2020 at 03:55:31PM +0800, Jason Wang wrote:
The ida_simple_remove should probably be part of the class release
function to make everything work right
It looks to me bus instead of class is the correct abstraction here since
the devices share a set of programming interface but not the semantics.
device_release() doesn't call the bus release?


What it did is:

ÂÂÂÂÂÂÂ if (dev->release)
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ dev->release(dev);
ÂÂÂÂÂÂÂ else if (dev->type && dev->type->release)
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ dev->type->release(dev);
ÂÂÂÂÂÂÂ else if (dev->class && dev->class->dev_release)
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ dev->class->dev_release(dev);
ÂÂÂÂÂÂÂ else
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ WARN(1, KERN_ERR "Device '%s' does not have a release() function, it is broken and must be fixed. See Documentation/kobject.txt.\n",
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ dev_name(dev));

So it looks not.


You have dev, type or
class to choose from. Type is rarely used and doesn't seem to be used
by vdpa, so class seems the right choice

Jason


Yes, but my understanding is class and bus are mutually exclusive. So we can't add a class to a device which is already attached on a bus.

Thanks