From: Uwe Kleine-K. <u.k...@pe...> - 2009-03-27 23:27:53
|
A pointer to acornfb_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. Signed-off-by: Uwe Kleine-König <u.k...@pe...> Cc: Christoph Hellwig <hc...@ls...> Cc: Antonino Daplas <ad...@po...> Cc: lin...@li... Cc: Andrew Morton <ak...@li...> --- drivers/video/acornfb.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/video/acornfb.c b/drivers/video/acornfb.c index 61c3d3f..19e4b21 100644 --- a/drivers/video/acornfb.c +++ b/drivers/video/acornfb.c @@ -1259,7 +1259,7 @@ free_unused_pages(unsigned int virtual_start, unsigned int virtual_end) printk("acornfb: freed %dK memory\n", mb_freed); } -static int __init acornfb_probe(struct platform_device *dev) +static int __devinit acornfb_probe(struct platform_device *dev) { unsigned long size; u_int h_sync, v_sync; -- 1.6.2 |
From: Uwe Kleine-K. <u.k...@pe...> - 2009-07-11 21:18:46
|
A pointer to acornfb_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. Signed-off-by: Uwe Kleine-König <u.k...@pe...> Cc: Christoph Hellwig <hc...@ls...> Cc: Antonino Daplas <ad...@po...> Cc: lin...@li... Cc: Andrew Morton <ak...@li...> --- drivers/video/acornfb.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/video/acornfb.c b/drivers/video/acornfb.c index 0bcc59e..43d7d50 100644 --- a/drivers/video/acornfb.c +++ b/drivers/video/acornfb.c @@ -1221,7 +1221,7 @@ free_unused_pages(unsigned int virtual_start, unsigned int virtual_end) printk("acornfb: freed %dK memory\n", mb_freed); } -static int __init acornfb_probe(struct platform_device *dev) +static int __devinit acornfb_probe(struct platform_device *dev) { unsigned long size; u_int h_sync, v_sync; -- 1.6.3.1 |
From: Uwe Kleine-K. <u.k...@pe...> - 2010-01-23 20:36:07
|
A pointer to acornfb_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. Signed-off-by: Uwe Kleine-König <u.k...@pe...> Cc: Christoph Hellwig <hc...@ls...> Cc: Antonino Daplas <ad...@po...> Cc: lin...@li... Cc: Andrew Morton <ak...@li...> --- drivers/video/acornfb.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/video/acornfb.c b/drivers/video/acornfb.c index 0bcc59e..43d7d50 100644 --- a/drivers/video/acornfb.c +++ b/drivers/video/acornfb.c @@ -1221,7 +1221,7 @@ free_unused_pages(unsigned int virtual_start, unsigned int virtual_end) printk("acornfb: freed %dK memory\n", mb_freed); } -static int __init acornfb_probe(struct platform_device *dev) +static int __devinit acornfb_probe(struct platform_device *dev) { unsigned long size; u_int h_sync, v_sync; -- 1.6.6 |
From: Alexey D. <ado...@gm...> - 2010-01-23 23:26:05
|
On Sat, Jan 23, 2010 at 09:35:09PM +0100, Uwe Kleine-König wrote: > drivers/video/acornfb.c | 2 +- gods, can you just send one patch for all framebuffer drivers? |
From: Alexey D. <ado...@gm...> - 2010-01-23 23:28:18
|
On Sat, Jan 23, 2010 at 09:35:09PM +0100, Uwe Kleine-König wrote: > -static int __init acornfb_probe(struct platform_device *dev) > +static int __devinit acornfb_probe(struct platform_device *dev) Even more, if this function is marked __devinit, some other functions can very well be marked __devinit, can you do this? |
From: Uwe Kleine-K. <u.k...@pe...> - 2010-01-26 08:47:02
|
On Sun, Jan 24, 2010 at 01:25:58 +0200, Alexey Dobriyan wrote: > gods, can you just send one patch for all framebuffer drivers? Well, I thought one logical change per changeset is the favourite way to go. And as the people Cc:d are different I think most people prefer it this way. On Sun, Jan 24, 2010 at 01:28:13AM +0200, Alexey Dobriyan wrote: > On Sat, Jan 23, 2010 at 09:35:09PM +0100, Uwe Kleine-König wrote: > > -static int __init acornfb_probe(struct platform_device *dev) > > +static int __devinit acornfb_probe(struct platform_device *dev) > > Even more, if this function is marked __devinit, some other functions > can very well be marked __devinit, can you do this? Probably, the big pro after my patch is that modpost can warn about this. Actually this applies to all (initially) over 50 patches in this series. If you take my patches, squash them together and fix all called functions, I'm happy, too. If you don't I might come back to this and do it myself. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | |