Hi Tony, On Aug 7, 2013, at 7:15 PM, Tony Lindgren wrote: > * Pantelis Antoniou <panto@xxxxxxxxxxxxxxxxxxxxxxx> [130806 02:44]: >> On Aug 6, 2013, at 12:33 PM, Greg Kroah-Hartman wrote: >>> On Tue, Aug 06, 2013 at 10:53:44AM +0300, Pantelis Antoniou wrote: >>>> + >>>> static int _omap_device_notifier_call(struct notifier_block *nb, >>>> unsigned long event, void *dev) >>>> { >>>> @@ -185,9 +211,13 @@ static int _omap_device_notifier_call(struct notifier_block *nb, >>>> struct omap_device *od; >>>> >>>> switch (event) { >>>> - case BUS_NOTIFY_DEL_DEVICE: >>>> + case BUS_NOTIFY_UNBOUND_DRIVER: >>>> + /* NOTIFY_DEL_DEVICE is not the right call... >>>> + * we use a callback here, to make sure no-one is going to >>>> + * try to use the omap_device data after they're deleted >>>> + */ >>>> if (pdev->archdata.od) >>>> - omap_device_delete(pdev->archdata.od); >>>> + device_schedule_callback(dev, _omap_device_cleanup); >>> >>> Really? This is one sign that you are totally using the driver core >>> incorrectly. You shouldn't have to rely on notifier callbacks to handle >>> device removals, your bus code should do that for you directly. >>> >>> I don't like this at all, sorry. >>> >> >> Don't shoot the messenger please... > > As you're inititalizing capebus with DT, let's figure out what if > anything you actually need from omap_device. I'd much rather remove > dependencies than add more. > There is no such thing as capebus anymore. This is just the path of removing a platform device, which happens to also be an omap_device. > If you need omap_device for the clocks, there are patches pending to > make them DT only for omaps. And we already have DT based solution for > pins, regulators and DMA. > > So what else remains? The pieces needed for runtime PM? > What happens here is that the omap_device data are freed prematurely and then end up used again during the teardown of the platform device. >> This is all about fixing a crash without messing too many things. > > It seems this fix is only needed for supporting out-of-tree code? > These features with omap_device we may not even want to support in > the mainline tree as is being discussed.. > What out of tree code? The only thing this patch does is make sure we don't crash when a perfectly valid call to platform_device_unregister() happens. Drivers that don't use omap_device work just fine. > Regards, > > Tony > Regards -- Pantelis -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html