Re: [PATCH 57/58] move w100fb's probe function to .devinit.text

Uwe Kleine-König
2009-03-28T19:13:56Z

Hellp pHilipp,

On Sat, Mar 28, 2009 at 11:01:10AM +0100, pHilipp Zabel wrote:
> 2009/3/28 Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:
> > A pointer to w100fb_probe is passed to the core via
> > platform_driver_register and so the function must not disappear when the
> > .init sections are discarded.  Otherwise (if also having HOTPLUG=y)
> > unbinding and binding a device to the driver via sysfs will result in an
> > oops as does a device being registered late.
> >
> > An alternative to this patch is using platform_driver_probe instead of
> > platform_driver_register plus removing the pointer to the probe function
> > from the struct platform_driver.
>
> The ATI Imageon chips handled by this driver are not hotpluggable,
what about

sysdriverdir=/sys/bus/platform/drivers/w100fb
echo -n w100fb > $sysdriverdir/unbind
echo -n w100fb > $sysdriverdir/bind

? (You might have to use w100fb.0 (or another integer id), didn't check

> I think the proposed alternative is the right way.
> Also, shouldn't w100fb_init be moved from __devinit to __init and
> w100fb_remove be put into __exit?
I concentrated for now on the probe functions, primarily because a wrong
section can result in an oops. If a function is in __devinit instead of
__init the only harm is that it occupies RAM.

Other than that your change looks good.

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |