* Re: 2.5.51 ide module problem
@ 2002-12-18 14:14 Adam J. Richter
2002-12-18 16:07 ` Alan Cox
0 siblings, 1 reply; 13+ messages in thread
From: Adam J. Richter @ 2002-12-18 14:14 UTC (permalink / raw)
To: alan; +Cc: andre, axboe, linux-kernel
On 2002-12-13, Alan Cox wrote:
>On Fri, 2002-12-13 at 07:59, Adam J. Richter wrote:
>> --- linux-2.5.51/drivers/pci/pci.c 2002-12-09 18:45:52.000000000 -0800
>> +++ linux/drivers/pci/pci.c 2002-12-09 19:03:18.000000000 -0800
[...]
>> diff -r -u linux-2.5.51/drivers/ide/Kconfig linux/drivers/ide/Kconfig
>> --- linux-2.5.51/drivers/ide/Kconfig 2002-12-09 18:45:56.000000000 -0800
>> +++ linux/drivers/ide/Kconfig 2002-11-27 18:23:46.000000000 -0800
>> @@ -199,7 +199,7 @@
>> depends on BLK_DEV_IDE
>>
>> config BLK_DEV_CMD640
>> - bool "CMD640 chipset bugfix/support"
>> + tristate "CMD640 chipset bugfix/support"
>Please don't do this. You can't "load" the workaround meaningfully for
>this device
I'd appreciate some clarification on what trouble the generic
IDE driver can get into when the cmd640 code is not present.
linux-2.5.52/Documentation/ide.txt says:
| For the CMD640, linux disables "IRQ unmasking" (hdparm -u1) on any
| drive for which the "prefetch" mode of the CMD640 is turned on.
| If "prefetch" is disabled (hdparm -p8), then "IRQ unmasking" can be
| used again.
|
| For the CMD640, linux disables "32bit I/O" (hdparm -c1) on any drive
| for which the "prefetch" mode of the CMD640 is turned off.
| If "prefetch" is enabled (hdparm -p9), then "32bit I/O" can be
| used again.
|
| The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT*
| automatically detected by Linux. For safe, reliable operation with such
| interfaces, one *MUST* use the "ide0=cmd640_vlb" kernel option.
|
| Use of the "serialize" option is no longer necessary.
As I understand it, both IRQ unmasking and 32 bit I/O are off
by default. So, while a system could get into trouble by enabling
those options on a cmd640 system before the cmd640 module is loaded,
it sounds like it should be feasible to have IDE initially come up
without the cmd640 workarounds at a stage where the user level code
knows not to enable DMA or 32-bit PIO (for example, a boot floppy or
initial ramdisk), and then later loads the cmd640 workaround and other
PCI drivers (when a directory tree with a wider selection of modules
has been mounted).
I wouldn't mind submitting the other IDE modularization
changes first sorting out cmd640 modularization later, but doing so
would involve a couple of inelegant Makefile changes that would have
to be reversed if cmd640 could later be a separate module, because it
would inolvolve linking d a .o from a subdirectory to build a module
(ide-probe.o, ide.o, ..., pci/cmd640.o). So, I'd like to try to
understand now if this is really necessary.
Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
`h
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: 2.5.51 ide module problem
2002-12-18 14:14 2.5.51 ide module problem Adam J. Richter
@ 2002-12-18 16:07 ` Alan Cox
2002-12-18 19:50 ` Jeff Chua
0 siblings, 1 reply; 13+ messages in thread
From: Alan Cox @ 2002-12-18 16:07 UTC (permalink / raw)
To: Adam J. Richter; +Cc: Andre Hedrick, axboe, Linux Kernel Mailing List
On Wed, 2002-12-18 at 14:14, Adam J. Richter wrote:
> I'd appreciate some clarification on what trouble the generic
> IDE driver can get into when the cmd640 code is not present.
> linux-2.5.52/Documentation/ide.txt says:
I'll get back to 2.5 IDE things next year. For the moment I'm only
concerned in getting the modular stuff sorted out completely in 2.4.
Hopefully that will be mostly valid for 2.5 as well.
CMD640 has hooks into the code that need generalising and cleaning up.
Alan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.5.51 ide module problem
2002-12-18 16:07 ` Alan Cox
@ 2002-12-18 19:50 ` Jeff Chua
2002-12-18 22:43 ` Alan Cox
0 siblings, 1 reply; 13+ messages in thread
From: Jeff Chua @ 2002-12-18 19:50 UTC (permalink / raw)
To: Alan Cox; +Cc: Adam J. Richter, Andre Hedrick, axboe, Linux Kernel Mailing List
On 18 Dec 2002, Alan Cox wrote:
> I'll get back to 2.5 IDE things next year. For the moment I'm only
> concerned in getting the modular stuff sorted out completely in 2.4.
> Hopefully that will be mostly valid for 2.5 as well.
I can't even boot 2.4.21-pre1 with IDE as modules. Works fine under 2.4.20
Looks like the IDE patch for 2.4.21-pre1 broke up the modules very similar
to 2.5.51
Thanks,
Jeff
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.5.51 ide module problem
2002-12-18 19:50 ` Jeff Chua
@ 2002-12-18 22:43 ` Alan Cox
2002-12-18 22:06 ` Andre Hedrick
0 siblings, 1 reply; 13+ messages in thread
From: Alan Cox @ 2002-12-18 22:43 UTC (permalink / raw)
To: Jeff Chua
Cc: Adam J. Richter, Andre Hedrick, axboe, Linux Kernel Mailing List
On Wed, 2002-12-18 at 19:50, Jeff Chua wrote:
>
> On 18 Dec 2002, Alan Cox wrote:
>
> > I'll get back to 2.5 IDE things next year. For the moment I'm only
> > concerned in getting the modular stuff sorted out completely in 2.4.
> > Hopefully that will be mostly valid for 2.5 as well.
>
> I can't even boot 2.4.21-pre1 with IDE as modules. Works fine under 2.4.20
>
> Looks like the IDE patch for 2.4.21-pre1 broke up the modules very similar
> to 2.5.51
Yes it did, and I plan to fix it there first
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.5.51 ide module problem
2002-12-18 22:43 ` Alan Cox
@ 2002-12-18 22:06 ` Andre Hedrick
0 siblings, 0 replies; 13+ messages in thread
From: Andre Hedrick @ 2002-12-18 22:06 UTC (permalink / raw)
To: Alan Cox; +Cc: Jeff Chua, Adam J. Richter, axboe, Linux Kernel Mailing List
Jeff,
Everybody cried screamed an whinned about making the chipsets modular.
Now that we are going do that path, you have no choice but to wait.
Use 2.4.20 and be happy. Or have FedEX write the check for it to be
worked on fulltime. I do not care which, but don't bitch about progress.
On 18 Dec 2002, Alan Cox wrote:
> On Wed, 2002-12-18 at 19:50, Jeff Chua wrote:
> >
> > On 18 Dec 2002, Alan Cox wrote:
> >
> > > I'll get back to 2.5 IDE things next year. For the moment I'm only
> > > concerned in getting the modular stuff sorted out completely in 2.4.
> > > Hopefully that will be mostly valid for 2.5 as well.
> >
> > I can't even boot 2.4.21-pre1 with IDE as modules. Works fine under 2.4.20
> >
> > Looks like the IDE patch for 2.4.21-pre1 broke up the modules very similar
> > to 2.5.51
>
> Yes it did, and I plan to fix it there first
>
Andre Hedrick
LAD Storage Consulting Group
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.5.51 ide module problem
@ 2002-12-18 14:18 Adam J. Richter
0 siblings, 0 replies; 13+ messages in thread
From: Adam J. Richter @ 2002-12-18 14:18 UTC (permalink / raw)
To: alan; +Cc: andre, axboe, linux-kernel
I forgot to mention one thing in my the message that I sent
a minute ago: I understand that the cmd640_vlb kernel command line
argument needs to be settable via a module parameters for cmd640 to
be fully functional as a kernel module. I will take care of that
if making cmd640 a module would work in the scenario that I described
(userland is careful not to set 32-bit IO or IRQ unmasking until the
cmd640 module can be loaded).
Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: 2.5.51 ide module problem
@ 2002-12-11 6:50 Adam J. Richter
2002-12-11 7:07 ` Jeff Chua
0 siblings, 1 reply; 13+ messages in thread
From: Adam J. Richter @ 2002-12-11 6:50 UTC (permalink / raw)
To: jchua; +Cc: linux-kernel
>depmod will ecounter "Segmentation fault" if the ide.ko and ide-io.ps
>modules are in /lib/modules/2.5.51/kernel
I think the new depmod recurses infinitely when it encounters
circular dependencies. It eventually segfaults and leaves a huge
modules.dep file from the infinite loop. If you look at the final
huge line in that file, you can see where the loop occurred.
depmod has no need to do any recursion, since it only needs
to determine the immediate dependencies of each module. However,
noticing such loops and printing them out would be a handy feature.
I use IDE as a module, but I had to change the Makefile to
build a big ide-mod.o from most of the core objects rather than
allowing each one to be its own module. I believe I posted IDE
modularization patches at least once a couple of months ago, but it
seems to have fallen between the cracks. I could repost it if need
be, although I have not yet booted 2.5.51.
Also note that I have not used the in kernel-based module
loader recently, as I have been patching my kernels to use the user
level module code. I am planning to try the kernel-base module loader
in 2.5.51 once I fix other problems it has finding the root device
under devfs. So, it's remotely possible that you may also see module
problems that I've missed.
Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: 2.5.51 ide module problem
2002-12-11 6:50 Adam J. Richter
@ 2002-12-11 7:07 ` Jeff Chua
2002-12-11 8:41 ` Adam J. Richter
0 siblings, 1 reply; 13+ messages in thread
From: Jeff Chua @ 2002-12-11 7:07 UTC (permalink / raw)
To: Adam J. Richter; +Cc: jchua, linux-kernel
On Tue, 10 Dec 2002, Adam J. Richter wrote:
> >depmod will ecounter "Segmentation fault" if the ide.ko and ide-io.ps
> >modules are in /lib/modules/2.5.51/kernel
>
> I think the new depmod recurses infinitely when it encounters
> circular dependencies. It eventually segfaults and leaves a huge
> modules.dep file from the infinite loop. If you look at the final
> huge line in that file, you can see where the loop occurred.
>
> depmod has no need to do any recursion, since it only needs
> to determine the immediate dependencies of each module. However,
> noticing such loops and printing them out would be a handy feature.
>
> I use IDE as a module, but I had to change the Makefile to
> build a big ide-mod.o from most of the core objects rather than
> allowing each one to be its own module. I believe I posted IDE
> modularization patches at least once a couple of months ago, but it
> seems to have fallen between the cracks. I could repost it if need
> be
Yes, please, send me your patch. I hope this patch works for
module-init-tools-0.9.3
>, although I have not yet booted 2.5.51.
I had same problem with pre 2.5.51. With 2.5.51, kernel now boot and I'm
able to get login prompt using ramdisk. Only catch is I've to specify
root=/dev/ram0 instead of /dev/ram for it to boot.
Thanks,
Jeff.
>
> Also note that I have not used the in kernel-based module
> loader recently, as I have been patching my kernels to use the user
> level module code. I am planning to try the kernel-base module loader
> in 2.5.51 once I fix other problems it has finding the root device
> under devfs. So, it's remotely possible that you may also see module
> problems that I've missed.
>
> Adam J. Richter __ ______________ 575 Oroville Road
> adam@yggdrasil.com \ / Milpitas, California 95035
> +1 408 309-6081 | g g d r a s i l United States of America
> "Free Software For The Rest Of Us."
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.5.51 ide module problem
2002-12-11 7:07 ` Jeff Chua
@ 2002-12-11 8:41 ` Adam J. Richter
[not found] ` <Pine.LNX.4.50.0212111711180.4632-200000@boston.corp.fedex.com>
0 siblings, 1 reply; 13+ messages in thread
From: Adam J. Richter @ 2002-12-11 8:41 UTC (permalink / raw)
To: Jeff Chua; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 890 bytes --]
On Wed, Dec 11, 2002 at 03:07:33PM +0800, Jeff Chua wrote:
> On Tue, 10 Dec 2002, Adam J. Richter wrote:
> > I use IDE as a module, but I had to change the Makefile to
> > build a big ide-mod.o from most of the core objects rather than
> > allowing each one to be its own module. I believe I posted IDE
> > modularization patches at least once a couple of months ago, but it
> > seems to have fallen between the cracks. I could repost it if need
> > be
>
> Yes, please, send me your patch. I hope this patch works for
> module-init-tools-0.9.3
Here is a quick diff of my drivers/ide subdirectory versus stock 2.5.51.
--
Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 5124 bytes --]
diff -u -r linux-2.5.51/drivers/ide/Kconfig linux/drivers/ide/Kconfig
--- linux-2.5.51/drivers/ide/Kconfig 2002-12-09 18:45:56.000000000 -0800
+++ linux/drivers/ide/Kconfig 2002-11-27 18:23:46.000000000 -0800
@@ -199,7 +199,7 @@
depends on BLK_DEV_IDE
config BLK_DEV_CMD640
- bool "CMD640 chipset bugfix/support"
+ tristate "CMD640 chipset bugfix/support"
depends on BLK_DEV_IDE && X86
---help---
The CMD-Technologies CMD640 IDE chip is used on many common 486 and
@@ -247,7 +247,7 @@
default BLK_DEV_IDEDMA_PMAC if ALL_PPC && BLK_DEV_IDEDMA_PMAC
config BLK_DEV_GENERIC
- bool "Generic PCI IDE Chipset Support"
+ tristate "Generic PCI IDE Chipset Support"
depends on PCI && BLK_DEV_IDEPCI
config IDEPCI_SHARE_IRQ
diff -u -r linux-2.5.51/drivers/ide/Makefile linux/drivers/ide/Makefile
--- linux-2.5.51/drivers/ide/Makefile 2002-12-09 18:45:59.000000000 -0800
+++ linux/drivers/ide/Makefile 2002-11-29 12:01:33.000000000 -0800
@@ -14,20 +14,21 @@
# Core IDE code - must come before legacy
-obj-$(CONFIG_BLK_DEV_IDE) += ide-io.o ide-probe.o ide-geometry.o ide-iops.o ide-taskfile.o ide.o ide-lib.o
+obj-$(CONFIG_BLK_DEV_IDE) += ide-mod.o
+ide-mod-objs += ide-io.o ide-probe.o ide-geometry.o ide-iops.o ide-taskfile.o ide.o ide-lib.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_ISAPNP) += ide-pnp.o
-
-ifeq ($(CONFIG_BLK_DEV_IDE),y)
-obj-$(CONFIG_PROC_FS) += ide-proc.o
-endif
+obj-ide-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
+obj-ide-$(CONFIG_BLK_DEV_IDEDMA_PCI) += ide-dma.o
+obj-ide-$(CONFIG_BLK_DEV_IDE_TCQ) += ide-tcq.o
+obj-ide-$(CONFIG_BLK_DEV_ISAPNP) += ide-pnp.o
+obj-ide-$(CONFIG_PROC_FS) += ide-proc.o
+
+ide-mod-objs += $(obj-ide-y)
+obj-m += $(obj-ide-m)
obj-$(CONFIG_BLK_DEV_IDE) += legacy/ ppc/ arm/
diff -u -r linux-2.5.51/drivers/ide/ide-pnp.c linux/drivers/ide/ide-pnp.c
--- linux-2.5.51/drivers/ide/ide-pnp.c 2002-12-09 18:46:11.000000000 -0800
+++ linux/drivers/ide/ide-pnp.c 2002-10-13 04:55:11.000000000 -0700
@@ -19,6 +19,7 @@
#include <linux/ide.h>
#include <linux/init.h>
+#include <linux/module.h>
#include <linux/isapnp.h>
#define DEV_IO(dev, index) (dev->resource[index].start)
@@ -88,6 +89,18 @@
{ 0 }
};
+#ifdef MODULE
+static struct isapnp_card_id ide_isa_ids[] __initdata = {
+ {
+ card_vendor: ISAPNP_ANY_ID,
+ card_device: ISAPNP_ANY_ID,
+ devs: { ISAPNP_DEVICE_ID('P', 'N', 'P', 0x0600) },
+ },
+ { ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ide_isa_ids);
+#endif
+
#define NR_PNP_DEVICES 8
struct pnp_dev_inst {
struct pci_dev *dev;
diff -u -r linux-2.5.51/drivers/ide/ide-probe.c linux/drivers/ide/ide-probe.c
--- linux-2.5.51/drivers/ide/ide-probe.c 2002-12-09 18:46:10.000000000 -0800
+++ linux/drivers/ide/ide-probe.c 2002-12-09 19:03:22.000000000 -0800
@@ -831,7 +831,8 @@
ide_toggle_bounce(drive, 1);
#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT
- HWIF(drive)->ide_dma_queued_on(drive);
+ if (HWIF(drive)->ide_dma_queued_on)
+ HWIF(drive)->ide_dma_queued_on(drive);
#endif
}
@@ -1221,10 +1222,10 @@
return 0;
}
-#ifdef MODULE
-extern int (*ide_xlate_1024_hook)(struct block_device *, int, int, const char *);
+int (*ide_xlate_1024_hook)(struct block_device *, int, int, const char *);
+EXPORT_SYMBOL(ide_xlate_1024_hook);
-int init_module (void)
+int ide_probe_init (void)
{
unsigned int index;
@@ -1236,10 +1237,9 @@
return 0;
}
-void cleanup_module (void)
+void ide_probe_cleanup (void)
{
ide_probe = NULL;
ide_xlate_1024_hook = 0;
}
MODULE_LICENSE("GPL");
-#endif /* MODULE */
diff -u -r linux-2.5.51/drivers/ide/ide.c linux/drivers/ide/ide.c
--- linux-2.5.51/drivers/ide/ide.c 2002-12-09 18:45:52.000000000 -0800
+++ linux/drivers/ide/ide.c 2002-12-09 19:03:20.000000000 -0800
@@ -2375,7 +2375,7 @@
ide_init_builtin_drivers();
initializing = 0;
- return 0;
+ return ide_probe_init();
}
#ifdef MODULE
diff -u -r linux-2.5.51/drivers/ide/pci/cmd640.c linux/drivers/ide/pci/cmd640.c
--- linux-2.5.51/drivers/ide/pci/cmd640.c 2002-12-09 18:46:22.000000000 -0800
+++ linux/drivers/ide/pci/cmd640.c 2002-11-27 18:24:00.000000000 -0800
@@ -102,6 +102,7 @@
#define CMD640_PREFETCH_MASKS 1
#include <linux/config.h>
+#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/delay.h>
@@ -118,11 +119,6 @@
#include "ide_modes.h"
/*
- * This flag is set in ide.c by the parameter: ide0=cmd640_vlb
- */
-int cmd640_vlb = 0;
-
-/*
* CMD640 specific registers definition.
*/
@@ -723,7 +719,7 @@
/*
* Probe for a cmd640 chipset, and initialize it if found. Called from ide.c
*/
-int __init ide_probe_for_cmd640x (void)
+static int ide_probe_for_cmd640x (void)
{
#ifdef CONFIG_BLK_DEV_CMD640_ENHANCED
int second_port_toggled = 0;
@@ -883,4 +879,4 @@
#endif
return 1;
}
-
+module_init(ide_probe_for_cmd640x);
^ permalink raw reply [flat|nested] 13+ messages in thread
* 2.5.51 ide module problem
@ 2002-12-11 5:49 Jeff Chua
0 siblings, 0 replies; 13+ messages in thread
From: Jeff Chua @ 2002-12-11 5:49 UTC (permalink / raw)
To: Linux Kernel
My linux/.config ...
CONFIG_IDE=m
CONFIG_BLK_DEV_IDE=m
CONFIG_BLK_DEV_IDEDISK=m
CONFIG_BLK_DEV_IDECS=m
CONFIG_BLK_DEV_IDECD=m
CONFIG_BLK_DEV_IDEFLOPPY=m
CONFIG_BLK_DEV_IDESCSI=m
CONFIG_BLK_DEV_IDE_MODES=y
System version ...
module-init-tools-0.9.3
linux-2.5.51
depmod will ecounter "Segmentation fault" if the ide.ko and ide-io.ps
modules are in /lib/modules/2.5.51/kernel
After "rm ide.ko ide-io.ps", depmod runs fine, but that means ide won't
load.
Thanks,
Jeff
[ jchua@fedex.com ]
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2002-12-18 22:01 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-12-18 14:14 2.5.51 ide module problem Adam J. Richter
2002-12-18 16:07 ` Alan Cox
2002-12-18 19:50 ` Jeff Chua
2002-12-18 22:43 ` Alan Cox
2002-12-18 22:06 ` Andre Hedrick
-- strict thread matches above, loose matches on Subject: below --
2002-12-18 14:18 Adam J. Richter
2002-12-11 6:50 Adam J. Richter
2002-12-11 7:07 ` Jeff Chua
2002-12-11 8:41 ` Adam J. Richter
[not found] ` <Pine.LNX.4.50.0212111711180.4632-200000@boston.corp.fedex.com>
2002-12-13 7:59 ` Adam J. Richter
2002-12-13 10:31 ` Alan Cox
2002-12-14 6:45 ` Jeff Chua
2002-12-11 5:49 Jeff Chua
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®