Discussion:
[Linux-fbdev-devel] [PATCH 01/29] move acornfb's probe function to .devinit.text
Uwe Kleine-König
2010-01-23 20:35:09 UTC
Permalink
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.kleine-***@pengutronix.de>
Cc: Christoph Hellwig <***@lst.de>
Cc: Antonino Daplas <***@pol.net>
Cc: linux-fbdev-***@lists.sourceforge.net
Cc: Andrew Morton <***@linux-foundation.org>
---
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
Alexey Dobriyan
2010-01-23 23:25:58 UTC
Permalink
Post by Uwe Kleine-König
drivers/video/acornfb.c | 2 +-
gods, can you just send one patch for all framebuffer drivers?
Alexey Dobriyan
2010-01-23 23:28:13 UTC
Permalink
Post by Uwe Kleine-König
-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?
Uwe Kleine-König
2010-01-26 08:46:41 UTC
Permalink
Post by Alexey Dobriyan
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.
Post by Alexey Dobriyan
Post by Uwe Kleine-König
-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/ |
Loading...