On Friday, September 23, 2016 03:50:02 PM Lukas Wunner wrote:
On Fri, Sep 23, 2016 at 02:49:20PM +0200, Rafael J. Wysocki wrote:
On Tuesday, September 20, 2016 10:51:13 AM Marek Szyprowski wrote:Hm, Marek, why isn't it possible to set up the links from the consumer's
On 2016-09-19 23:45, Tobias Jakobi wrote:
I did some tests with the new version today. Sadly the reboot/shutdownThanks for the report. I've managed to reproduce this issue and it is again
issues are still present.
caused by modifying device on devices_kset list before it will be finally
added by device_add(). I thought that the new patchset allows creating
links to a device, which has not been yet added to system device list.
->probe hook in this case?
I know what that function is, but using it alone is not sufficient,device_link_add() could be changed to call device_reorder_to_tail()Should it be allowed to create a link to device, whichWhile it would be easy to require both the consumer and producer devices to
has not yet been added to system device list by device_add()?
be registered for creating a link between them, that would just make it
harder to use links in the first place.
So ideally, it should be possible to create links between devices before
registering them, but since I didn't take that into account in the current
patch series, some quite substantial changes are needed to cover that.
Additional link states come to mind, but then the "stateless" links are
affected by this problem too.
only if device_is_registered(consumer) returns true.
That's an inline function defined in <linux/device.h> which returns
dev->kobj.state_in_sysfs, a flag which is set in kobject_add().
because dev->kobj.state_in_sysfs is set before the device is added to
dpm_list.
Then device_add() would have to check if any links are alreadyThere are some cases to consider and some races to avoid AFAICS.
set up and reorder the consumer behind the suppliers.
Doesn't seem to be *that* complex, but probably I'm missing something,
this is just off the cuff...
It all gets a lot simpler if device_link_add() is allowed to return NULL when
the supplier device passed to it has not been registered yet. That looks like
a reasonable thing to do to me, but I wonder if someone has a use case in which
it would be a substantial limitation.