Date: Tue, 22 Nov 2005 07:01:04 GMT From: Arthur Hartwig <arthur.hartwig@nokia.com> To: freebsd-i386@FreeBSD.org Subject: Re: i386/89214: FreeBSD 6.0 disc 1 boot fails to find CDROM Message-ID: <200511220701.jAM714j7068331@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR i386/89214; it has been noted by GNATS. From: Arthur Hartwig <arthur.hartwig@nokia.com> To: bug-followup@FreeBSD.org, arthur.hartwig@nokia.com Cc: Subject: Re: i386/89214: FreeBSD 6.0 disc 1 boot fails to find CDROM Date: Tue, 22 Nov 2005 17:00:22 +1000 I have further investigated the problem and found a workaround for my particular configuration. The CDROM is connected as the SLAVE device on the SECONDARY IDE channel of the Intel ICH7. A verbose boot showed that the slave device was not being tested on the two IDE channels off the ICH7 and a debugging session showed ATA_NO_SLAVE was being set (erroneously) in the ata_channel structures associated with the ICH7. Fix: In ata_intel_reset() in ata-chipset.c treat ICH6 and ICH7 the same: > diff -b -C 3 ata-chipset.c.orig ata-chipset.c *** ata-chipset.c.orig Tue Nov 22 11:41:06 2005 --- ata-chipset.c Tue Nov 22 11:48:25 2005 *************** *** 1848,1854 **** /* ICH6 has 4 SATA ports as master/slave on 2 channels so deal with pairs */ if (ctlr->chip->chipid == ATA_I82801FB_S1 || ctlr->chip->chipid == ATA_I82801FB_R1 || ! ctlr->chip->chipid == ATA_I82801FB_M) { mask = (0x0005 << ch->unit); } else { --- 1848,1855 ---- /* ICH6 has 4 SATA ports as master/slave on 2 channels so deal with pairs */ if (ctlr->chip->chipid == ATA_I82801FB_S1 || ctlr->chip->chipid == ATA_I82801FB_R1 || ! ctlr->chip->chipid == ATA_I82801FB_M || ! ctlr->chip->chipid == ATA_I82801GB_S1) { mask = (0x0005 << ch->unit); } else { but this should be generalised to cope with all the ICH7 variants. It would probably be even better to rearrange the logic to better cope with all the ICH variants in a more transparent way. (From the comments, the current code seems to assume that if the ICH is not an ICH6 then it must be an ICH5). After making this change and rebuilding the kernel the CDROM was found and its details reported.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511220701.jAM714j7068331>