On Fri, Feb 15, 2013 at 10:28 AM, Monty Montgomery email@example.com wrote:
The in-kernel firmware loaders are also completely broken right now due to the movement of the loader to userspace causing a deadlock in the load process.
Sorry, let me be more clear there; it is now the responsibility of systemd to find and return firmware when the in-kernel loader makes a firmware request. Unfortunately, systemd can't resist firing off several 'learn everything we can about this device!' threads when the firmware request comes in, and if one of them hits the USB bus blocked in probe() waiting for firmware before the firmware request is fufilled (this happens much of the time) the load request deadlocks. It will time out in ~20s, and then the process repeats through several retries before finally failing.
The solution is a loader that makes an asynchronous firmware request in probe and handles the response in a callback, which is what my new loader did/does.
Also: I'm happy to resubmit the code, but I'm not interested in trying to chase down all the licensing information for the firmware as Tapio has disappeared and eMagic is no more. As far as I know, we never had anything but Tapio's word that we had permission to ship any version of firmware. I'd rather just see the driver pulled from the kernel (after all, it hasn't worked in years), and distribute modules by hand as an individual to the last remaining eMagic people, than deal with the red tape.