2007-06-10 18:55:08

by Carlo Wood

[permalink] [raw]
Subject: ide0=noprobe, hda=noprobe, hda=none ignored?

I've been trying for months to get my box to boot faster
by ignoring the not connected hda/hdb (ide0).

ansset:~>dmesg | egrep '(noprobe|ide0|hda|hdb)'

Kernel command line: root=/dev/hde3 ro ide0=noprobe
ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:pio, hdb:pio
Probing IDE interface ide0...
hda: IRQ probe failed (0xfffffdb8)
etc.

or

Kernel command line: root=/dev/hde3 ro hda=none hdb=none
ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:pio, hdb:pio
Probing IDE interface ide0...
hda: IRQ probe failed (0xfffffdb8)

same for hda=noprobe hdb=noprobe

Nothing helps.

Is this a bug or not? I'd think that saying "noprobe" means
"do NOT probe" - but it probes anyway.

The documentation also tells me that =none should CERTAINLY
make it ignore the non-existant drives - but it keeps probing.

Shouldn't an explicitely added kernel parameter be taken a
little bit more serious by the kernel? Independent on whether
or not a drive is detected (or what the CMOS might think about
that), I think that the kernel should REALLY, totally ignore
an ide and/or hdX if so explicitely requested with a kernel
parameter.

Anything I missed?

--
Carlo Wood <[email protected]>

PS Sorry if this is a FAQ (it seems so) -- I just can't find
a satisfactory answer anywhere as to why explicit parameters
like this are ignored and want to ask to change this. Or,
I cannnot find the solution for this problem and get my
damn ide0 NOT probed.


2007-06-11 11:13:23

by Alexander E. Patrakov

[permalink] [raw]
Subject: Re: ide0=noprobe, hda=noprobe, hda=none ignored?

Carlo Wood wrote:
> I've been trying for months to get my box to boot faster
> by ignoring the not connected hda/hdb (ide0).
>
> ansset:~>dmesg | egrep '(noprobe|ide0|hda|hdb)'
>
> Kernel command line: root=/dev/hde3 ro ide0=noprobe
> ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:pio, hdb:pio
> Probing IDE interface ide0...
> hda: IRQ probe failed (0xfffffdb8)
> etc.
>
> or
>
> Kernel command line: root=/dev/hde3 ro hda=none hdb=none
> ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:pio, hdb:pio
> Probing IDE interface ide0...
> hda: IRQ probe failed (0xfffffdb8)
>
> same for hda=noprobe hdb=noprobe
>
> Nothing helps.
>
> Is this a bug or not? I'd think that saying "noprobe" means
> "do NOT probe" - but it probes anyway.


If your kernel uses modular IDE drivers and an initrd/initramfs that loads
them, your result is the expected one (i.e.: not a bug). One should add the
following or similar options into /etc/modprobe.conf in the initrd in order
to get the result:

options ide_core options="ide0=noprobe hda=noprobe hdb=noprobe"

If you don't use initrd, or have a non-modular IDE driver, please ignore
this message.

--
Alexander E. Patrakov

2007-06-12 12:52:15

by Carlo Wood

[permalink] [raw]
Subject: Re: ide0=noprobe, hda=noprobe, hda=none ignored?

keyword: =noprobe, =none, IRQ probe failed, initrd, ide_core, solved,
solution, howto.

On Mon, Jun 11, 2007 at 05:13:22PM +0600, Alexander E. Patrakov wrote:
> If your kernel uses modular IDE drivers and an initrd/initramfs that loads
> them, your result is the expected one (i.e.: not a bug). One should add the
> following or similar options into /etc/modprobe.conf in the initrd in order
> to get the result:
>
> options ide_core options="ide0=noprobe hda=noprobe hdb=noprobe"
>
> If you don't use initrd, or have a non-modular IDE driver, please ignore
> this message.

Thanks! I have indeed an initrd and a modular IDE driver, this was
the solution :) Thanks, I really learned from this :)

For the sake of archiving, so people can find this solution back with
Google and use it too, I've added keywords as first line and will add below all
relevant information (this can be ignored by people from the linux-kernel.)

1) If you suffer from this problem and want to know if this solution is for
you, use the command 'lsmod' and check if you have ide_core loaded as module:

lsmod | grep ide_core

2) Check if you have an initrd in /boot:

ls /boot/initrd*`uname -r`

3) Check if you use /etc/modprobe.conf, or /etc/modprobe.d

ls -ld /etc/modprobe.conf /etc/modprobe.d

if only /etc/modprobe.d exists, it will be what is used, and add a file
(I used 'noprobe') to this directory. Otherwise add the line given by
Alexander to /etc/modprobe.conf. Thus,

echo 'options ide_core options="ide0=noprobe hda=noprobe hdb=noprobe"' >/etc/modprobe.d/noprobe

or add that line to your existing /etc/modprobe.conf
obviously, replace hda/hdb with the drive ids that you need to be
ignored, and ide0 with the corresponding ide# (dmesg | grep hdX,
directly after booting, should tell you). I did not test if using
only 'ide0=noprobe' or only 'hda=noprobe hdb=noprobe' is sufficient.

4) Regenerate your initrd image (this might depend on the distribution
you are using. On debian you'd execute:

update-initramfs -u

which is part of the initramfs-tools package.

5) If you want to be sure that the option is now in your initrd image,
you can do the following:

cd /boot
mkdir initrd-VERSION-extract
cd initrd-VERSION-extract
gzip -dc ../initrd.img-VERSION | cpio -i
ls etc/

and check if the options line is where you added it in your real root.
Ie, if you added it to /etc/modprobe.d/noprobe:

cat /boot/initrd-VERSION-extract/etc/modprobe.d/noprobe

after that you can rm /boot/initrd-VERSION-extract again, of course.

6) reboot - and enjoy the no probing!

Thanks to Alexander E. Patrakov for this solution.

--
Carlo Wood <[email protected]>