On Thu, 9 Mar 2006, Steve Langasek wrote:
What version of the kernel was this analysis done with? The workaround in yaird is explicitly commented as existing for the benefit of older kernel versions; can you assure us that this aspect of the driver design is unchanged from 2.6.8 through 2.6.15?
My testing confirms, that 2.6.8 from Debian fails to boot if ide-generic module is not included in initrd: [..] Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx pivot_root: No such file or directory /sbin/init: 432: cannot open /dev/console: No such file Kernel panic: Attempted to kill init! When ide-generic is included (it is loaded after all the native ide modules), the kernel boots fine. The reason is that in the Debian 2.6.8 sources the ide-generic initialization procedure contains the call to ide_scan_pcibus(), which actually does the detection of PCI IDE devices. Function probe_for_hwifs() in ide.c contains a call to ide_scan_pcibus() as well, but there it is only called if ide.c is built-in, and not a part of a module (it normally goes into ide-core). So, in Debian's 2.6.8 loading of ide-generic is really essential, and it should be loaded after all the native modules, which just register PCI drivers for specific chipsets. Note that the upstream kernel source does not operate like this. ide-generic does NOT contain a call to ide_scan_pcibus(), this situation is the result of Debian-specific patches, in particular modular IDE patch, originally introduced by Herbert Xu. That patch has been dropped starting with the release of 2.6.15-1 Debian kernel packages, according to changelog. Since then ide_scan_pcibus() in probe_for_hwifs() (which is called by ide_init()) is performed always, irrespectively of whether it is built as a module or not, and there is no call to ide_scan_pcibus() in ide-generic.c. So, if there is a native driver for chipset, it will always work, independently of whether ide-generic is loaded afterwards or not. To summarize: in some cases ide-generic has to be loaded last by initrd to get it to work (when kernel is built from the Debian kernel source, including the modular IDE patch). When it is built from the vanilla source, it is completely optional, given that native drivers exist, but nice to include as a last-resort option if it is present. Unfortunately, I don't see a way to distinguish between these two cases at the time of initrd generation (even though there might be some nm or objdump trick to do that). Best regards, Jurij Smakov [EMAIL PROTECTED] Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]