2.6.31 kernel on VMWare - IDE Probe fails to find CD drive
Linux - Virtualization and CloudThis forum is for the discussion of all topics relating to Linux Virtualization and Linux Cloud platforms. Xen, KVM, OpenVZ, VirtualBox, VMware, Linux-VServer and all other Linux Virtualization platforms are welcome. OpenStack, CloudStack, ownCloud, Cloud Foundry, Eucalyptus, Nimbus, OpenNebula and all other Linux Cloud platforms are welcome. Note that questions relating solely to non-Linux OS's should be asked in the General forum.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
2.6.31 kernel on VMWare - IDE Probe fails to find CD drive
Hi - is anyone running a 2.6.31 kernel as a VMWare ESX 3.5.0 guest-OS?
I've just tried upgrading the guest-OS kernel from 2.6.30.10 to 2.6.31.7 and now the virtual-CD cannot be detected. The distro is LFS-based. Boot-time kernel logs illustrating the problem are included below. Basically after boot there is no /dev/hda and no /dev/cdrom. Tried rebuilding the kernel with various config adjustments, to no avail.
Thanks in advance for any tips or advice.
2.6.30.10:
Jan 4 13:54:07 virtapp kernel: Probing IDE interface ide0...
Jan 4 13:54:07 virtapp kernel: hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive
Jan 4 13:54:07 virtapp kernel: hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
Jan 4 13:54:07 virtapp kernel: hda: UDMA/33 mode selected
Jan 4 13:54:07 virtapp kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
2.6.31.7:
Jan 4 13:41:09 virtapp kernel: Probing IDE interface ide0...
Jan 4 13:41:09 virtapp kernel: ide0: no devices on the port
Jan 4 13:41:09 virtapp kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Last edited by ang123; 01-11-2010 at 12:06 PM.
Reason: Improve title
Hi again ... I have added some debug logging to the kernel and discovered that it is detecting /dev/hda (the cdrom) as a device - but is subsequently ignoring it...
Code:
Jan 7 18:18:46 virtapp kernel: Probing IDE interface ide0...
Jan 7 18:18:46 virtapp kernel: ANG: ide_wait_not_busy...
Jan 7 18:18:46 virtapp kernel: ANG: ide_port_for_each_dev (loop)...
Jan 7 18:18:46 virtapp kernel: ANG: device=hda rc=0
Jan 7 18:18:46 virtapp kernel: ANG: ide_port_for_each_dev (loop)...
Jan 7 18:18:46 virtapp kernel: ANG: device=hdb rc=-19
Jan 7 18:18:46 virtapp kernel: ANG: returning rc=-19
Jan 7 18:18:46 virtapp kernel: ide0: no devices on the port
Jan 7 18:18:46 virtapp kernel: ANG: ide_probe_port() returning -19
The root cause of this seems to be an explicit check for ENODEV that was added to ide_probe_port() in drivers/ide/ide-probe.c in the 2.6.31.1 kernel which unfortunately jumps over the extra check needed to detect the CDROM drive (at least, in our VM setup). I've tested this by rebuilding the kernel without the check - and the virtual CDROM is now fully functional.
Code:
rc = ide_port_wait_ready(hwif);
> if (rc == -ENODEV) {
> printk(KERN_INFO "%s: no devices on the port\n", hwif->name);
> goto out;
} else if (rc == -EBUSY)
printk(KERN_ERR "%s: not ready before the probe\n", hwif->name);
else
rc = -ENODEV;
/*
* Second drive should only exist if first drive was found,
* but a lot of cdrom drives are configured as single slaves.
*/
ide_port_for_each_dev(i, drive, hwif) {
(void) probe_for_drive(drive);
if (drive->dev_flags & IDE_DFLAG_PRESENT)
rc = 0;
}
out: ...
So now my question is ... can I safely patch this out of my kernel?
Does anyone know why the explicit ENODEV check was added in the first place?
Thanks in advance.
Last edited by ang123; 01-11-2010 at 12:04 PM.
Reason: Added [CODE] refs
I have been *trying* to install 2.6.31 (Gentoo install-amd64-minimal-20091203) on ESXi 3.5.0 123629, but although the CDROM image boots just fine, the kernel thinks there is nothing on the IDE controller and so the initrd can't mount the CDROM it just booted from. :-{ Time to find an earlier CD image, I guess. Thanks for your notes -- at least now I have some reason to believe it's nothing *I* did wrong, and something specific to try.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.