Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gx1fb: Fix section mismatch warnings

Fix a chain of section mismatches in geode driver, beginning with:

WARNING: drivers/video/geode/gx1fb.o(.data+0x70): Section mismatch in reference from the variable gx1fb_driver to the function .init.text:gx1fb_probe()
The variable gx1fb_driver references
the function __init gx1fb_probe()
If the reference is valid then annotate the
variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console

Making the changes that Paul pointed out resulted in a few more
changes being needed, so they are all included here.

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>

authored by

Randy Dunlap and committed by
Paul Mundt
3535ed3f bccaeafd

+7 -7
+7 -7
drivers/video/geode/gx1fb_core.c
··· 29 29 static char panel_option[32] = ""; 30 30 31 31 /* Modes relevant to the GX1 (taken from modedb.c) */ 32 - static const struct fb_videomode __initdata gx1_modedb[] = { 32 + static const struct fb_videomode __devinitdata gx1_modedb[] = { 33 33 /* 640x480-60 VESA */ 34 34 { NULL, 60, 640, 480, 39682, 48, 16, 33, 10, 96, 2, 35 35 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, ··· 195 195 return par->vid_ops->blank_display(info, blank_mode); 196 196 } 197 197 198 - static int __init gx1fb_map_video_memory(struct fb_info *info, struct pci_dev *dev) 198 + static int __devinit gx1fb_map_video_memory(struct fb_info *info, struct pci_dev *dev) 199 199 { 200 200 struct geodefb_par *par = info->par; 201 201 unsigned gx_base; ··· 268 268 .fb_imageblit = cfb_imageblit, 269 269 }; 270 270 271 - static struct fb_info * __init gx1fb_init_fbinfo(struct device *dev) 271 + static struct fb_info * __devinit gx1fb_init_fbinfo(struct device *dev) 272 272 { 273 273 struct geodefb_par *par; 274 274 struct fb_info *info; ··· 318 318 return info; 319 319 } 320 320 321 - static int __init gx1fb_probe(struct pci_dev *pdev, const struct pci_device_id *id) 321 + static int __devinit gx1fb_probe(struct pci_dev *pdev, const struct pci_device_id *id) 322 322 { 323 323 struct geodefb_par *par; 324 324 struct fb_info *info; ··· 382 382 return ret; 383 383 } 384 384 385 - static void gx1fb_remove(struct pci_dev *pdev) 385 + static void __devexit gx1fb_remove(struct pci_dev *pdev) 386 386 { 387 387 struct fb_info *info = pci_get_drvdata(pdev); 388 388 struct geodefb_par *par = info->par; ··· 441 441 .name = "gx1fb", 442 442 .id_table = gx1fb_id_table, 443 443 .probe = gx1fb_probe, 444 - .remove = gx1fb_remove, 444 + .remove = __devexit_p(gx1fb_remove), 445 445 }; 446 446 447 447 static int __init gx1fb_init(void) ··· 456 456 return pci_register_driver(&gx1fb_driver); 457 457 } 458 458 459 - static void __exit gx1fb_cleanup(void) 459 + static void __devexit gx1fb_cleanup(void) 460 460 { 461 461 pci_unregister_driver(&gx1fb_driver); 462 462 }