Skip to contentSkip to conversation

modular IDE for 2.6.1 ugly but working fix

PATCH New Witold Krecicki 5 participants 9 messages Jan 17, 2004 – Jan 20, 2004 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 modular IDE for 2.6.1 ugly but working fix

Here it goes - modular 2.6 IDE - I know it's ugly (and I don't know whether it will work with cmd640 chipset) but it's working for me and several other people.

Signature · 3 lines
Witold Kręcicki (adasi) adasi [at] culm.net
GPG key: 7AE20871
http://www.culm.net
drivers/block/ll_rw_blk.c +1 -1
diff -urN --exclude-from=zf linux-2.6.1/drivers/block/ll_rw_blk.c linux-2.6.1-ziew/drivers/block/ll_rw_blk.c
@@ -145,7 +145,7 @@
 	q->activity_fn = fn;
 	q->activity_data = data;
 }
-
+EXPORT_SYMBOL(blk_queue_activity_fn);
 /**
  * blk_queue_prep_rq - set a prepare_request function for queue
  * @q:		queue
drivers/ide/ide-probe.c +1 -17
diff -urN --exclude-from=zf linux-2.6.1/drivers/ide/ide-probe.c linux-2.6.1-ziew/drivers/ide/ide-probe.c
@@ -1354,21 +1354,5 @@
 	return 0;
 }
 
-#ifdef MODULE
-int init_module (void)
-{
-	unsigned int index;
-	
-	for (index = 0; index < MAX_HWIFS; ++index)
-		ide_unregister(index);
-	ideprobe_init();
-	create_proc_ide_interfaces();
-	return 0;
-}
 
-void cleanup_module (void)
-{
-	ide_probe = NULL;
-}
-MODULE_LICENSE("GPL");
-#endif /* MODULE */
+EXPORT_SYMBOL(ideprobe_init);
drivers/ide/ide-probe-mod.c +42 -0

42 lines not on this page · raw message

drivers/ide/Makefile +13 -6
diff -urN --exclude-from=zf linux-2.6.1/drivers/ide/Makefile linux-2.6.1-ziew/drivers/ide/Makefile
@@ -12,19 +12,26 @@
 
 # Core IDE code - must come before legacy
 
-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
+obj-$(CONFIG_BLK_DEV_IDE)		+= ide-mod.o 
 obj-$(CONFIG_BLK_DEV_IDEDISK)		+= ide-disk.o
 obj-$(CONFIG_BLK_DEV_IDECD)		+= ide-cd.o
 obj-$(CONFIG_BLK_DEV_IDETAPE)		+= ide-tape.o
 obj-$(CONFIG_BLK_DEV_IDEFLOPPY)		+= ide-floppy.o
 
-obj-$(CONFIG_BLK_DEV_IDEPCI)		+= setup-pci.o
-obj-$(CONFIG_BLK_DEV_IDEDMA_PCI)	+= ide-dma.o
-obj-$(CONFIG_BLK_DEV_IDE_TCQ)		+= ide-tcq.o
-obj-$(CONFIG_BLK_DEV_IDEPNP)		+= ide-pnp.o
+
+ide-mod-y				+= ide.o ide-io.o ide-iops.o ide-taskfile.o ide-lib.o ide-default.o ide-probe.o 
+ide-mod-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o
+ide-mod-$(CONFIG_BLK_DEV_IDEPNP)	+= ide-pnp.o
+ide-mod-$(CONFIG_BLK_DEV_IDEPCI)	+= setup-pci.o
+ide-mod-$(CONFIG_BLK_DEV_IDEDMA_PCI)	+= ide-dma.o
+ide-mod-$(CONFIG_BLK_DEV_IDE_TCQ)	+= ide-tcq.o
 
 ifeq ($(CONFIG_BLK_DEV_IDE),y)
-obj-$(CONFIG_PROC_FS)			+= ide-proc.o
+ide-mod-$(CONFIG_PROC_FS)		+= ide-proc.o
+endif
+
+ifeq ($(CONFIG_BLK_DEV_IDE),m)
+ide-mod-$(CONFIG_PROC_FS)		+= ide-proc.o
 endif
 
 obj-$(CONFIG_BLK_DEV_IDE)		+= legacy/ ppc/ arm/
drivers/ide/pci/Makefile +0 -1
diff -urN --exclude-from=zf linux-2.6.1/drivers/ide/pci/Makefile linux-2.6.1-ziew/drivers/ide/pci/Makefile
@@ -4,7 +4,6 @@
 obj-$(CONFIG_BLK_DEV_ALI15X3)		+= alim15x3.o
 obj-$(CONFIG_BLK_DEV_AMD74XX)		+= amd74xx.o
-obj-$(CONFIG_BLK_DEV_CMD640)		+= cmd640.o
 obj-$(CONFIG_BLK_DEV_CMD64X)		+= cmd64x.o
 obj-$(CONFIG_BLK_DEV_CS5520)		+= cs5520.o
 obj-$(CONFIG_BLK_DEV_CS5530)		+= cs5530.o
 obj-$(CONFIG_BLK_DEV_SC1200)		+= sc1200.o
#1 lore raw

PATCH 1/1 fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

Hi,

Quoted 3 lines · Witold Krecicki

Here it goes - modular 2.6 IDE - I know it's ugly (and I don't know whether it will work with cmd640 chipset) but it's working for me and several other people.

It will probably work for cmd640 but won't for all other drivers which can't be build as modules. What about this patch instead? I've been working on it from some time and I think all cornercases are covered.

Cheers,
--bart

- IDE can be used as module again (compiles and works)
- separate module for probing is no longer required
- generic/default host driver is available as ide_generic module

 linux-2.6.1-root/drivers/block/ll_rw_blk.c   |    2 +
 linux-2.6.1-root/drivers/ide/Kconfig         |    6 +++
 linux-2.6.1-root/drivers/ide/Makefile        |   39 ++++++++++++++++------
 linux-2.6.1-root/drivers/ide/ide-generic.c   |   37 +++++++++++++++++++++
 linux-2.6.1-root/drivers/ide/ide-probe.c     |   23 -------------
 linux-2.6.1-root/drivers/ide/ide.c           |   46 +++------------------------
 linux-2.6.1-root/drivers/ide/legacy/Makefile |    8 ----
 linux-2.6.1-root/drivers/ide/pci/Makefile    |    1 
 linux-2.6.1-root/include/linux/ide.h         |    1 
 linux-2.6.1/drivers/ide/ppc/Makefile         |    6 ---
 10 files changed, 80 insertions(+), 89 deletions(-)
drivers/block/ll_rw_blk.c renamed from drivers/block/ll_rw_blk.c~modular-ide-fix +2 -0
diff -puN drivers/block/ll_rw_blk.c~modular-ide-fix drivers/block/ll_rw_blk.c
@@ -145,6 +145,8 @@ void blk_queue_activity_fn(request_queue
 	q->activity_data = data;
 }
 
+EXPORT_SYMBOL(blk_queue_activity_fn);
+
 /**
  * blk_queue_prep_rq - set a prepare_request function for queue
  * @q:		queue
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +28 -11
diff -puN drivers/ide/Makefile~modular-ide-fix drivers/ide/Makefile
@@ -10,22 +10,39 @@
 # First come modules that register themselves with the core
 obj-$(CONFIG_BLK_DEV_IDE)		+= pci/
 
+ide-core-objs += ide.o ide-default.o ide-io.o ide-iops.o ide-lib.o \
+	ide-probe.o ide-taskfile.o
+
+ide-core-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o
+
 # Core IDE code - must come before legacy
+ide-core-$(CONFIG_BLK_DEV_IDEPCI)	+= setup-pci.o
+ide-core-$(CONFIG_BLK_DEV_IDEDMA_PCI)	+= ide-dma.o
+ide-core-$(CONFIG_BLK_DEV_IDE_TCQ)	+= ide-tcq.o
+ide-core-$(CONFIG_PROC_FS)		+= ide-proc.o
+ide-core-$(CONFIG_BLK_DEV_IDEPNP)	+= ide-pnp.o
+
+# built-in only drivers from legacy/
+ide-core-$(CONFIG_BLK_DEV_IDE_PC9800)	+= pc9800.o
+ide-core-$(CONFIG_BLK_DEV_PDC4030)	+= pdc4030.o
+ide-core-$(CONFIG_BLK_DEV_BUDDHA)	+= buddha.o
+ide-core-$(CONFIG_BLK_DEV_FALCON_IDE)	+= falconide.o
+ide-core-$(CONFIG_BLK_DEV_GAYLE)	+= gayle.o
+ide-core-$(CONFIG_BLK_DEV_MAC_IDE)	+= macide.o
+ide-core-$(CONFIG_BLK_DEV_Q40IDE)	+= q40ide.o
+
+# built-in only drivers from ppc/
+ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE)	+= mpc8xx.o
+ide-core-$(CONFIG_BLK_DEV_IDE_PMAC)	+= pmac.o
+ide-core-$(CONFIG_BLK_DEV_IDE_SWARM)	+= swarm.o
+
+obj-$(CONFIG_BLK_DEV_IDE)		+= ide-core.o
+obj-$(CONFIG_IDE_GENERIC)		+= ide-generic.o
 
-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
 obj-$(CONFIG_BLK_DEV_IDEDISK)		+= ide-disk.o
 obj-$(CONFIG_BLK_DEV_IDECD)		+= ide-cd.o
 obj-$(CONFIG_BLK_DEV_IDETAPE)		+= ide-tape.o
 obj-$(CONFIG_BLK_DEV_IDEFLOPPY)		+= ide-floppy.o
 
-obj-$(CONFIG_BLK_DEV_IDEPCI)		+= setup-pci.o
-obj-$(CONFIG_BLK_DEV_IDEDMA_PCI)	+= ide-dma.o
-obj-$(CONFIG_BLK_DEV_IDE_TCQ)		+= ide-tcq.o
-obj-$(CONFIG_BLK_DEV_IDEPNP)		+= ide-pnp.o
-
-ifeq ($(CONFIG_BLK_DEV_IDE),y)
-obj-$(CONFIG_PROC_FS)			+= ide-proc.o
-endif
-
-obj-$(CONFIG_BLK_DEV_IDE)		+= legacy/ ppc/ arm/
+obj-$(CONFIG_BLK_DEV_IDE)		+= legacy/ arm/
 obj-$(CONFIG_BLK_DEV_HD)		+= legacy/
drivers/ide/legacy/Makefile renamed from drivers/ide/legacy/Makefile~modular-ide-fix +0 -8
diff -puN drivers/ide/legacy/Makefile~modular-ide-fix drivers/ide/legacy/Makefile
@@ -2,17 +2,9 @@
 obj-$(CONFIG_BLK_DEV_ALI14XX)		+= ali14xx.o
 obj-$(CONFIG_BLK_DEV_DTC2278)		+= dtc2278.o
 obj-$(CONFIG_BLK_DEV_HT6560B)		+= ht6560b.o
-obj-$(CONFIG_BLK_DEV_IDE_PC9800)	+= pc9800.o
-obj-$(CONFIG_BLK_DEV_PDC4030)		+= pdc4030.o
 obj-$(CONFIG_BLK_DEV_QD65XX)		+= qd65xx.o
 obj-$(CONFIG_BLK_DEV_UMC8672)		+= umc8672.o
 
-obj-$(CONFIG_BLK_DEV_BUDDHA)		+= buddha.o
-obj-$(CONFIG_BLK_DEV_FALCON_IDE)	+= falconide.o
-obj-$(CONFIG_BLK_DEV_GAYLE)		+= gayle.o
-obj-$(CONFIG_BLK_DEV_MAC_IDE)		+= macide.o
-obj-$(CONFIG_BLK_DEV_Q40IDE)		+= q40ide.o
-
 obj-$(CONFIG_BLK_DEV_IDECS)		+= ide-cs.o
 
 # Last of all
drivers/ide/pci/Makefile renamed from drivers/ide/pci/Makefile~modular-ide-fix +0 -1
diff -puN drivers/ide/pci/Makefile~modular-ide-fix drivers/ide/pci/Makefile
@@ -3,7 +3,6 @@ obj-$(CONFIG_BLK_DEV_ADMA100)		+= adma10
 obj-$(CONFIG_BLK_DEV_AEC62XX)		+= aec62xx.o
 obj-$(CONFIG_BLK_DEV_ALI15X3)		+= alim15x3.o
 obj-$(CONFIG_BLK_DEV_AMD74XX)		+= amd74xx.o
-obj-$(CONFIG_BLK_DEV_CMD640)		+= cmd640.o
 obj-$(CONFIG_BLK_DEV_CMD64X)		+= cmd64x.o
 obj-$(CONFIG_BLK_DEV_CS5520)		+= cs5520.o
 obj-$(CONFIG_BLK_DEV_CS5530)		+= cs5530.o
drivers/ide/ppc/Makefile deleted +0 -6
diff -puN -L drivers/ide/ppc/Makefile drivers/ide/ppc/Makefile~modular-ide-fix /dev/null
@@ -1,6 +0,0 @@
-
-obj-$(CONFIG_BLK_DEV_MPC8xx_IDE)	+= mpc8xx.o
-obj-$(CONFIG_BLK_DEV_IDE_PMAC)		+= pmac.o
-obj-$(CONFIG_BLK_DEV_IDE_SWARM)		+= swarm.o
-
-EXTRA_CFLAGS	:= -Idrivers/ide
drivers/ide/Kconfig renamed from drivers/ide/Kconfig~modular-ide-fix +6 -0
diff -puN drivers/ide/Kconfig~modular-ide-fix drivers/ide/Kconfig
@@ -296,6 +296,12 @@ config IDE_TASKFILE_IO
 
 comment "IDE chipset support/bugfixes"
 
+config IDE_GENERIC
+	tristate "generic/default IDE chipset support"
+	default y
+	help
+	  If unsure, say Y.
+
 config BLK_DEV_CMD640
 	bool "CMD640 chipset bugfix/support"
 	depends on X86
drivers/ide/ide.c renamed from drivers/ide/ide.c~modular-ide-fix +6 -40

78 lines not on this page · raw message

drivers/ide/ide-generic.c new file +37 -0
diff -puN /dev/null drivers/ide/ide-generic.c
@@ -0,0 +1,37 @@
+
+/*
+ * generic/default IDE host driver
+ *
+ * Copyright (C) 2004 Bartlomiej Zolnierkiewicz
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/ide.h>
+
+static int __init ide_generic_init(void)
+{
+	MOD_INC_USE_COUNT;
+	if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
+		ide_get_lock(NULL, NULL); /* for atari only */
+
+	(void)ideprobe_init();
+
+	if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
+		ide_release_lock();	/* for atari only */
+
+#ifdef CONFIG_PROC_FS
+	create_proc_ide_interfaces();
+#endif
+	return 0;
+}
+
+static void __exit ide_generic_exit(void)
+{
+}
+
+module_init(ide_generic_init);
+module_exit(ide_generic_exit);
+
+MODULE_LICENSE("GPL");
drivers/ide/ide-probe.c renamed from drivers/ide/ide-probe.c~modular-ide-fix +1 -22
diff -puN drivers/ide/ide-probe.c~modular-ide-fix drivers/ide/ide-probe.c
@@ -1323,7 +1323,6 @@ int ideprobe_init (void)
 	unsigned int index;
 	int probe[MAX_HWIFS];
 	
-	MOD_INC_USE_COUNT;
 	memset(probe, 0, MAX_HWIFS * sizeof(int));
 	for (index = 0; index < MAX_HWIFS; ++index)
 		probe[index] = !ide_hwifs[index].present;
@@ -1348,27 +1347,7 @@ int ideprobe_init (void)
 					ata_attach(&hwif->drives[unit]);
 		}
 	}
-	if (!ide_probe)
-		ide_probe = &ideprobe_init;
-	MOD_DEC_USE_COUNT;
 	return 0;
 }
 
-#ifdef MODULE
-int init_module (void)
-{
-	unsigned int index;
-	
-	for (index = 0; index < MAX_HWIFS; ++index)
-		ide_unregister(index);
-	ideprobe_init();
-	create_proc_ide_interfaces();
-	return 0;
-}
-
-void cleanup_module (void)
-{
-	ide_probe = NULL;
-}
-MODULE_LICENSE("GPL");
-#endif /* MODULE */
+EXPORT_SYMBOL_GPL(ideprobe_init);
include/linux/ide.h renamed from include/linux/ide.h~modular-ide-fix +0 -1
diff -puN include/linux/ide.h~modular-ide-fix include/linux/ide.h
@@ -1231,7 +1231,6 @@ typedef struct ide_devices_s {
  */
 #ifndef _IDE_C
 extern	ide_hwif_t	ide_hwifs[];		/* master data repository */
-extern int (*ide_probe)(void);
 
 extern ide_devices_t   *idedisk;
 extern ide_devices_t   *idecd;

_

#2 lore raw

Re: [PATCH] fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

drivers/ide/Makefile line 14

Quoted 3 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+ide-core-objs += ide.o ide-default.o ide-io.o ide-iops.o ide-lib.o \
+	ide-probe.o ide-taskfile.o

It would be more consistent to use "ide-core-y" since this is what the following lines are expanded to.

drivers/ide/Makefile line 16

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+
+ide-core-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o

Like this line.

Sam

#3 lore raw

Re: [PATCH] fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

Quoted 10 lines · Sam Ravnborg

drivers/ide/Makefile line 14

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+ide-core-objs += ide.o ide-default.o ide-io.o ide-iops.o ide-lib.o \
+	ide-probe.o ide-taskfile.o

It would be more consistent to use "ide-core-y" since this is what the following lines are expanded to.

drivers/ide/Makefile line 16

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+
+ide-core-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o

Like this line.

Yep, thanks!

#4 lore raw

Re: [PATCH] fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

Quoted 7 lines · Bartlomiej Zolnierkiewicz
Quoted 6 lines · Sam Ravnborg

drivers/ide/Makefile line 14

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+ide-core-objs += ide.o ide-default.o ide-io.o ide-iops.o ide-lib.o \
+	ide-probe.o ide-taskfile.o

It would be more consistent to use "ide-core-y" since this is what the following lines are expanded to.

Quoted 6 lines
Quoted 4 lines

drivers/ide/Makefile line 16

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+
+ide-core-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o

Like this line.

Yep, thanks!

Could you send updated patch so we could test it?

Also would be nice if ide-detect name was used instead of ide-generic so it will be consistent with 2.4 naming.

ps. patch by Witold Krecicki works for other drivers - I've seen it working - but it's hacky anyway.

Signature · 2 lines
Arkadiusz Miśkiewicz    CS at FoE, Wroclaw University of Technology
arekm.pld-linux.org AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PLD/Linux
#5 lore raw

Re: [PATCH] fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

Quoted 8 lines · Arkadiusz Miskiewicz

Dnia sob 17. stycznia 2004 17:02, Bartlomiej Zolnierkiewicz napisa?:

Quoted 7 lines · Sam Ravnborg
Quoted 6 lines

drivers/ide/Makefile line 14

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+ide-core-objs += ide.o ide-default.o ide-io.o ide-iops.o ide-lib.o \
+	ide-probe.o ide-taskfile.o

It would be more consistent to use "ide-core-y" since this is what the following lines are expanded to.

Quoted 7 lines
Quoted 6 lines
Quoted 4 lines

drivers/ide/Makefile line 16

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+
+ide-core-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o

Like this line.

Yep, thanks!

Could you send updated patch so we could test it?

The change I requested is cosmetic only. It may have a small impact on link-order, but that would not make a difference in this case.

Sam

#6 lore raw

Re: [PATCH] fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

In reply to Arkadiusz Miskiewicz
Quoted 13 lines · Arkadiusz Miskiewicz
Quoted 12 lines · Bartlomiej Zolnierkiewicz
Quoted 10 lines · Sam Ravnborg

drivers/ide/Makefile line 14

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+ide-core-objs += ide.o ide-default.o ide-io.o ide-iops.o ide-lib.o \
+	ide-probe.o ide-taskfile.o

It would be more consistent to use "ide-core-y" since this is what the following lines are expanded to.

drivers/ide/Makefile line 16

Quoted 2 lines
drivers/ide/Makefile renamed from drivers/ide/Makefile~modular-ide-fix +2 -0
+
+ide-core-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o

Like this line.

Quoted 6 lines
Quoted 1 line

Yep, thanks!

Could you send updated patch so we could test it?

Also would be nice if ide-detect name was used instead of ide-generic so it will be consistent with 2.4 naming.

ide-detect != ide-generic

In 2.4 you have to load ide-detect after loading chipset module. In 2.6+patch you don't have to load anything after loading chipset module.

ide-detect is used for all chipset modules to probe for drives. ide-generic is generic/default host driver - you use it only if you don't have specific modules for your IDE chipsets.

Quoted 2 lines

ps. patch by Witold Krecicki works for other drivers - I've seen it working
- but it's hacky anyway.

Sure, it works for other *PCI* drivers, but not ie. PPC ones (easy to fix).

--bart

#7 lore raw

Re: [PATCH] fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

In reply to Bartlomiej Zolnierkiewicz

In message <[email protected]> you write:

Quoted 10 lines
drivers/ide/ide-generic.c new file +10 -0
+static int __init ide_generic_init(void)
+{
+	MOD_INC_USE_COUNT;
+	if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
+		ide_get_lock(NULL, NULL); /* for atari only */
+
+	(void)ideprobe_init();
+
+	if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
+		ide_release_lock();	/* for atari only */

drivers/ide/ide-generic.c line 32

Quoted 10 lines
drivers/ide/ide-generic.c new file +10 -0
+
+#ifdef CONFIG_PROC_FS
+	create_proc_ide_interfaces();
+#endif
+	return 0;
+}
+
+static void __exit ide_generic_exit(void)
+{
+}

If you don't want to be unloadable, just don't have a module_exit() at all.

Thanks,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

#8 lore raw

Re: [PATCH] fix/improve modular IDE (Re: [PATCH] modular IDE for 2.6.1 ugly but working fix)

Quoted 16 lines · Rusty Russell

In message <[email protected]> you write:

Quoted 15 lines
drivers/ide/ide-generic.c new file +15 -0
+static int __init ide_generic_init(void)
+{
+	MOD_INC_USE_COUNT;
+	if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
+		ide_get_lock(NULL, NULL); /* for atari only */
+
+	(void)ideprobe_init();
+
+	if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
+		ide_release_lock();	/* for atari only */
+
+#ifdef CONFIG_PROC_FS
+	create_proc_ide_interfaces();
+#endif
+	return 0;
Quoted 8 lines

drivers/ide/ide-generic.c line 32

Quoted 5 lines
drivers/ide/ide-generic.c new file +5 -0
+}
+
+static void __exit ide_generic_exit(void)
+{
+}

If you don't want to be unloadable, just don't have a module_exit() at all.

Ok, I will update it later. Thanks for a hint!
--bart