Hi people,

it seems my explanation was too short.

Firstly, let me clarify that the problem is with _reloading_ firmware
due to resumption from power management.

During resumption from power save, our ability to allocate memory is
severly constrained. We may allocate memory only with GFP_NOIO or
GFP_ATOMIC. This is because anything else might lead the kernel to
paging out a page to a device which has not yet resumed operations or
even the device whose firmware we want to reload. This is independent of
where the actual firmware files are located. The memory consumption itself
causes the deadlock. This affects storage devices and thanks to nfs all
network devices.

Therefore no user space task can be running during resumption, unless it
is totally mlocked.
Managing firmwarereload in user space when you can neither open() nor
fork() nor read() doesn't look so attractive, does it ?

To summarise, we can either have firmware handling in user space or power
management, but not both.
More philosophically speaking, IMHO we have a classical layering violation
caused by wishful thinking.
To quote Dave: "There are many good reasons to have device handling in
kernel space." I might add: They are sometimes less than obvious.

        Regards
                Oliver



_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to