recursively unregistering platform devices

From: Robert Schwebel
Date: Sun Feb 06 2005 - 09:31:06 EST


Hi,

I have a locking problem with platform devices in a little bit unusual
scenario; we have an FPGA which has a device information memory block
for the several "parts" in the FPGA. So we have written a base driver
which registers the device information block with the driver model, then
looks what is in the FPGA, registers the according "devices" with the
driver model and issues hotplug events to load the related drivers.

The registration works fine, although we call platform_add_devices()
from the base driver for all the "sub devices"; but when we try to
unload the drivers there is a deadlock. On driver exit we call
platform_device_unregister() for the base driver which seems to be run
under a lock which is also being aquired when unregistering the devices
"inside" the FPGA.

Before I investigate deeper - did anyone see this behaviour before?

Robert
--
Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Hannoversche Str. 2, 31134 Hildesheim, Germany
Phone: +49-5121-206917-0 | Fax: +49-5121-206917-9
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/