Messages in this thread | | | Date | Thu, 8 Aug 2013 00:25:14 -0700 | From | Tony Lindgren <> | Subject | Re: [PATCH 5/5] arm: omap: Proper cleanups for omap_device |
| |
* Pantelis Antoniou <panto@antoniou-consulting.com> [130807 09:31]: > Hi Tony, > > On Aug 7, 2013, at 7:15 PM, Tony Lindgren wrote: > > > * Pantelis Antoniou <panto@antoniou-consulting.com> [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.
OK, so let's figure out the minimal fixes needed.
> >> 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.
So what's the minimal set of fixes then?
Regards,
Tony
| |