i386/89214: FreeBSD 6.0 disc 1 boot fails to find CDROM
Arthur Hartwig
arthur.hartwig at nokia.com
Mon Nov 21 23:01:05 PST 2005
The following reply was made to PR i386/89214; it has been noted by GNATS.
From: Arthur Hartwig <arthur.hartwig at nokia.com>
To: bug-followup at FreeBSD.org, arthur.hartwig at 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.
More information about the freebsd-i386
mailing list