Skip to contentSkip to conversation

piix vs ata_piix device ID tables

DISCUSSION Ben Hutchings 2 participants 3 messages Oct 4, 2010 libata

lore
Share & tools
lore
#0 lore raw

When I converted the Debian kernel configurations over from IDE to libata-based drivers, I compared the device ID tables for all the PCI drivers. I found that ata_piix handles most of the same devices as piix while pata_oldpiix and pata_mpiix each handle one more. However, 2 device IDs in piix are not in the device ID tables of any libata-based driver:

PCI_DEVICE_ID_INTEL_82371FB_0 == 0x122e (PIIX function 0)

piix seems to treat this the same as PCI_DEVICE_ID_INTEL_82371FB_1 == 0x1230, which is handled by pata_oldpiix. (This is weird; function 0 is supposed to be the ISA bridge!)

PCI_DEVICE_ID_INTEL_82801DB_1 == 0x24c1 (ICH4 device 31 function 1)

piix seems to treat this the same as most other ICH PATA interfaces, which are handled by ata_piix.

Does anyone know why these aren't handled by the libata-based drivers?

Ben.

Signature · 2 lines
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.
#1 lore raw
Quoted 7 lines · On Mon, 04 Oct 2010 04:50:52 +0100 Ben Hutchings <[email protected]> wrote:

When I converted the Debian kernel configurations over from IDE to libata-based drivers, I compared the device ID tables for all the PCI drivers. I found that ata_piix handles most of the same devices as piix while pata_oldpiix and pata_mpiix each handle one more. However, 2 device IDs in piix are not in the device ID tables of any libata-based driver:

Quoted 5 lines

PCI_DEVICE_ID_INTEL_82371FB_0 == 0x122e (PIIX function 0)

piix seems to treat this the same as PCI_DEVICE_ID_INTEL_82371FB_1 == 0x1230, which is handled by pata_oldpiix. (This is weird; function 0 is supposed to be the ISA bridge!)

Given that pre PIIX3 devices (MPIIX and PIIX original) never worked in the old IDE code (well sometimes semi-worked by accident because the BIOS values were right and they didn't break anything) I wouldn't draw any conclusions.

Quoted 6 lines

PCI_DEVICE_ID_INTEL_82801DB_1 == 0x24c1 (ICH4 device 31 function 1)

piix seems to treat this the same as most other ICH PATA interfaces, which are handled by ata_piix.

Does anyone know why these aren't handled by the libata-based drivers?

I don't know about 0x24C1 however it isn't listed in the Intel ICH programming manual so given we've also had no reports about it I suspect it's an error in the PIIX driver ?

Alan

#2 lore raw
Quoted 2 lines · Alan Cox

On Mon, 04 Oct 2010 04:50:52 +0100
Ben Hutchings <[email protected]> wrote:

[...]

Quoted 10 lines
Quoted 6 lines

PCI_DEVICE_ID_INTEL_82801DB_1 == 0x24c1 (ICH4 device 31 function 1)

piix seems to treat this the same as most other ICH PATA interfaces, which are handled by ata_piix.

Does anyone know why these aren't handled by the libata-based drivers?

I don't know about 0x24C1 however it isn't listed in the Intel ICH programming manual so given we've also had no reports about it I suspect it's an error in the PIIX driver ?

Correction, this is a function of the ICH4-L not the ordinary ICH4. It is documented in
<http://www.intel.com/assets/pdf/specupdate/290745.pdf>.

Ben.

Signature · 2 lines
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.