ICH8 and SATA
BTW, Intel sez:
"FYI, I added PIIX_FLAG_IGNORE_PCS and was able to boot on ICH8."
Jeff
Quoted 4 lines · Jeff Garzik
BTW, Intel sez:
"FYI, I added
PIIX_FLAG_IGNORE_PCSand was able to boot on ICH8."
Yeap, that should achieve about the same effect as the experimental patch Andrew posted; also, about the same phantom bug.
I don't think the phantom device problem is caused by missing dev_select. We have enough dev_select() during classification.
Signature · 1 line
tejun
Quoted 7 lines · Tejun Heo
Quoted 4 lines · Jeff Garzik
BTW, Intel sez:
"FYI, I added
PIIX_FLAG_IGNORE_PCSand was able to boot on ICH8."Yeap, that should achieve about the same effect as the experimental patch Andrew posted; also, about the same phantom bug.
Nod, just sending that to note conclusively that ICH8+PCS is a confirmed problem case, as confirmed from multiple sources.
Quoted 1 line
I don't think the phantom device problem is caused by missing
dev_select. We have enoughdev_select()during classification.
Just a guess. Can I easily reproduce this? I have a bunch of Intel machines, ICH5/6/7 (no ICH8 yet), of various flavors.
Jeff
Quoted 7 lines · Jeff Garzik
Quoted 6 lines · Tejun Heo
Quoted 4 lines · Jeff Garzik
BTW, Intel sez:
"FYI, I added
PIIX_FLAG_IGNORE_PCSand was able to boot on ICH8."
Quoted 9 lines
Quoted 1 line
Yeap, that should achieve about the same effect as the experimental patch Andrew posted; also, about the same phantom bug.
Nod, just sending that to note conclusively that ICH8+PCS is a confirmed problem case, as confirmed from multiple sources.
Quoted 1 line
I don't think the phantom device problem is caused by missing
dev_select. We have enoughdev_select()during classification.Just a guess. Can I easily reproduce this? I have a bunch of Intel machines, ICH5/6/7 (no ICH8 yet), of various flavors.
I can reliably reproduce it using ICH7 (ASUS P5LD2). The problem occurs on both combined and sata-only modes. On my machine, combined mode maps secondary master and slave to P1 and P3, respectively. And, of course, SATA only mode maps to PM, PS, SM, SS to P0, P2, P1, P3.
In either mode, occupy the master slot (P0 or P1) with an ATAPI device (I use PX716-SA) and leave the slave slot (P2 or P3) empty. The signature of the ATAPI device is duplicated on the empty slave slot. As noted before, this doesn't occur if the master device is ATA, only the slave slot is occupied or both are occupied.
Signature · 1 line
tejun
Quoted 4 lines · Tejun Heo
Quoted 2 lines · Jeff Garzik
BTW, Intel sez:
Quoted 9 lines
Quoted 2 lines
"FYI, I added
PIIX_FLAG_IGNORE_PCSand was able to boot on ICH8."Yeap, that should achieve about the same effect as the experimental patch Andrew posted; also, about the same phantom bug.
I don't think the phantom device problem is caused by missing
dev_select. We have enoughdev_select()during classification.
Yes, I cannot find missing dev_select(), neither.
It seems the Intel chip is emulating the PATA master/slave behavior and reproduces the phantom slave problem of PATA.
Quoted 1 line
From the ATA-4 spec:
(http://t13.org/project/d1153r18-ATA-ATAPI-4.pdf)
Section 9.16 said: in single master configuration, the master should response for slave, if the slave is inexistent.
=> The software sees the illusion faked by the master device.
Later in ATA-6 spec, section 9.16 is updated: for ATAPI devices, the master should response for slave with 0x00 taskfile, if the slave if inexistent. However, some device doesn't follow the new spec...
--
albert
Excertp from the ATA-4 spec:
9.16 Single device configurations
9.16.1 Device 0 only configurations
In a single device configuration where Device 0 is the only device and
the host selects Device 1, Device 0 shall respond as follows:
1) A write to the Device Control register shall complete as if Device 0 was the selected device;
2) A write to a Command Block register, other than the Command register, shall complete as if Device 0 was selected;
3) A write to the Command register shall be ignored, except for EXECUTE DEVICE DIAGNOSTIC;
4) A read of the Control Block or Command Block registers, other than the Status or Alternate Status registers, shall complete as if Device 0 was selected;
5) A read of the Status or Alternate status register shall return the value 00h.
NOTE - Even though Device 1 is not present, the register content may appear valid for Device 1. Further means may be necessary to determine the existence of Device 1, e.g., issuing a command.
9.16.2 Device 1 only configurations