1 drivers/block/ll_rw_blk.c | 2 ++
2 drivers/ide/Makefile | 16 ++++++++--------
3 drivers/ide/ide-probe-mini.c | 23 +++++++++++++++++++++++
4 drivers/ide/ide-probe.c | 20 +++++++++++++-------
5 drivers/ide/ide.c | 35 ++++++++---------------------------
6 include/linux/ide.h | 1 -
7 6 files changed, 54 insertions(+), 43 deletions(-)
9 diff -puN drivers/block/ll_rw_blk.c~ide-modules drivers/block/ll_rw_blk.c
10 --- linux-2.6.0-test11-bart1/drivers/block/ll_rw_blk.c~ide-modules 2003-12-12 23:49:03.361002480 +0100
11 +++ linux-2.6.0-test11-bart1-root/drivers/block/ll_rw_blk.c 2003-12-12 23:49:03.385998680 +0100
12 @@ -145,6 +145,8 @@ void blk_queue_activity_fn(request_queue
13 q->activity_data = data;
16 +EXPORT_SYMBOL(blk_queue_activity_fn);
19 * blk_queue_prep_rq - set a prepare_request function for queue
21 diff -puN drivers/ide/ide.c~ide-modules drivers/ide/ide.c
22 --- linux-2.6.0-test11-bart1/drivers/ide/ide.c~ide-modules 2003-12-12 23:49:03.373000656 +0100
23 +++ linux-2.6.0-test11-bart1-root/drivers/ide/ide.c 2003-12-12 23:50:10.433805864 +0100
24 @@ -189,9 +189,6 @@ int noautodma = 1;
27 EXPORT_SYMBOL(noautodma);
28 -EXPORT_SYMBOL(ide_bus_type);
30 -int (*ide_probe)(void);
33 * This is declared extern in ide.h, for access by other IDE modules:
34 @@ -313,6 +310,8 @@ static void __init init_ide_data (void)
35 for (index = 0; index < MAX_HWIFS; ++index)
36 init_hwif_data(index);
40 /* Add default hw interfaces */
41 ide_init_default_hwifs();
43 @@ -443,21 +442,6 @@ u8 ide_dump_status (ide_drive_t *drive,
45 EXPORT_SYMBOL(ide_dump_status);
49 -void ide_probe_module (void)
52 -#if defined(CONFIG_KMOD) && defined(CONFIG_BLK_DEV_IDE_MODULE)
53 - (void) request_module("ide-probe-mod");
54 -#endif /* (CONFIG_KMOD) && (CONFIG_BLK_DEV_IDE_MODULE) */
60 -EXPORT_SYMBOL(ide_probe_module);
62 static int ide_open (struct inode * inode, struct file * filp)
65 @@ -585,8 +569,6 @@ control_region_busy:
69 -EXPORT_SYMBOL(ide_hwif_request_regions);
72 * ide_hwif_release_regions - free IDE resources
74 @@ -622,8 +604,6 @@ void ide_hwif_release_regions(ide_hwif_t
78 -EXPORT_SYMBOL(ide_hwif_release_regions);
80 extern void init_hwif_data(unsigned int index);
83 @@ -992,6 +972,8 @@ void ide_setup_ports ( hw_regs_t *hw,
85 EXPORT_SYMBOL(ide_setup_ports);
87 +extern int ideprobe_init_module(void);
90 * Register an IDE interface, specifying exactly the registers etc
91 * Set init=1 iff calling before probes have taken place.
92 @@ -1033,7 +1015,10 @@ found:
93 hwif->chipset = hw->chipset;
98 + if (ideprobe_init_module() == -EBUSY)
101 #ifdef CONFIG_PROC_FS
102 create_proc_ide_interfaces();
104 @@ -1517,8 +1502,6 @@ int ata_attach(ide_drive_t *drive)
108 -EXPORT_SYMBOL(ata_attach);
110 static int generic_ide_suspend(struct device *dev, u32 state)
112 ide_drive_t *drive = dev->driver_data;
113 @@ -2558,7 +2541,6 @@ EXPORT_SYMBOL(ide_fops);
116 EXPORT_SYMBOL(ide_lock);
117 -EXPORT_SYMBOL(ide_probe);
119 struct bus_type ide_bus_type = {
121 @@ -2600,7 +2582,6 @@ int __init ide_init (void)
126 ide_init_builtin_drivers();
129 diff -puN drivers/ide/ide-probe.c~ide-modules drivers/ide/ide-probe.c
130 --- linux-2.6.0-test11-bart1/drivers/ide/ide-probe.c~ide-modules 2003-12-12 23:49:03.376000200 +0100
131 +++ linux-2.6.0-test11-bart1-root/drivers/ide/ide-probe.c 2003-12-12 23:49:03.389998072 +0100
132 @@ -1348,27 +1348,33 @@ int ideprobe_init (void)
133 ata_attach(&hwif->drives[unit]);
137 - ide_probe = &ideprobe_init;
143 -int init_module (void)
144 +static int ideprobe_done;
146 +int ideprobe_init_module(void)
154 for (index = 0; index < MAX_HWIFS; ++index)
155 ide_unregister(index);
157 create_proc_ide_interfaces();
162 -void cleanup_module (void)
163 +EXPORT_SYMBOL_GPL(ideprobe_init_module);
165 +void ideprobe_cleanup_module(void)
169 -MODULE_LICENSE("GPL");
171 +EXPORT_SYMBOL_GPL(ideprobe_cleanup_module);
173 diff -puN /dev/null drivers/ide/ide-probe-mini.c
174 --- /dev/null 2003-01-30 11:24:37.000000000 +0100
175 +++ linux-2.6.0-test11-bart1-root/drivers/ide/ide-probe-mini.c 2003-12-12 23:49:03.389998072 +0100
178 + * linux/drivers/ide/ide-probe-mini.c Version 1
180 + * Copyright (C) 1994-1998 Linus Torvalds & authors (see below)
183 +#include <linux/config.h>
184 +#include <linux/init.h>
185 +#include <linux/module.h>
186 +#include <linux/types.h>
187 +#include <linux/string.h>
188 +#include <linux/kernel.h>
189 +#include <linux/kmod.h>
192 +extern int ideprobe_init_module(void);
193 +extern void ideprobe_cleanup_module(void);
195 +module_init(ideprobe_init_module);
196 +module_exit(ideprobe_cleanup_module);
198 +MODULE_LICENSE("GPL");
200 diff -puN drivers/ide/Makefile~ide-modules drivers/ide/Makefile
201 --- linux-2.6.0-test11-bart1/drivers/ide/Makefile~ide-modules 2003-12-12 23:49:03.378999744 +0100
202 +++ linux-2.6.0-test11-bart1-root/drivers/ide/Makefile 2003-12-12 23:50:02.471016392 +0100
204 # First come modules that register themselves with the core
205 obj-$(CONFIG_BLK_DEV_IDE) += pci/
207 +ide-core-objs := ide-io.o ide-probe.o ide-iops.o ide-taskfile.o ide.o ide-lib.o ide-default.o
209 # Core IDE code - must come before legacy
210 +ide-core-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
211 +ide-core-$(CONFIG_BLK_DEV_IDEDMA_PCI) += ide-dma.o
212 +ide-core-$(CONFIG_BLK_DEV_IDE_TCQ) += ide-tcq.o
213 +ide-core-$(CONFIG_PROC_FS) += ide-proc.o
215 +obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o ide-probe-mini.o
217 -obj-$(CONFIG_BLK_DEV_IDE) += ide-io.o ide-probe.o ide-iops.o ide-taskfile.o ide.o ide-lib.o ide-default.o
218 obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o
219 obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd.o
220 obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o
221 obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o
223 -obj-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
224 -obj-$(CONFIG_BLK_DEV_IDEDMA_PCI) += ide-dma.o
225 -obj-$(CONFIG_BLK_DEV_IDE_TCQ) += ide-tcq.o
226 obj-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o
228 -ifeq ($(CONFIG_BLK_DEV_IDE),y)
229 -obj-$(CONFIG_PROC_FS) += ide-proc.o
232 obj-$(CONFIG_BLK_DEV_IDE) += legacy/ ppc/ arm/
233 obj-$(CONFIG_BLK_DEV_HD) += legacy/
234 diff -puN include/linux/ide.h~ide-modules include/linux/ide.h
235 --- linux-2.6.0-test11-bart1/include/linux/ide.h~ide-modules 2003-12-12 23:49:03.381999288 +0100
236 +++ linux-2.6.0-test11-bart1-root/include/linux/ide.h 2003-12-12 23:49:03.391997768 +0100
237 @@ -1231,7 +1231,6 @@ typedef struct ide_devices_s {
240 extern ide_hwif_t ide_hwifs[]; /* master data repository */
241 -extern int (*ide_probe)(void);
243 extern ide_devices_t *idedisk;
244 extern ide_devices_t *idecd;