linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
@ 2006-08-04 12:00 Tejun Heo
  2006-08-04 13:56 ` Mark Lord
  2006-08-04 15:30 ` Jeff Garzik
  0 siblings, 2 replies; 9+ messages in thread
From: Tejun Heo @ 2006-08-04 12:00 UTC (permalink / raw)
  To: Mark Lord, Jeff Garzik, linux-ide@vger.kernel.org

Hello,

pdc_adma in libata-dev#upstream fails to IDENTIFY device w/ AC_ERR_HSM.

libata version 2.00 loaded.
pdc_adma 0000:01:02.0: version 0.04
ACPI: PCI Interrupt 0000:01:02.0[A] -> Link [LNKG] -> GSI 5 (level, low) 
-> IRQ 5
[ata_device_add      ] ENTER
[ata_port_add        ] ENTER
[ata_port_start      ] prd alloc, virt f62e1000, dma 362e1000
ata1: PATA max UDMA/66 cmd 0xF881AC00 ctl 0xF881AC38 bmdma 0x0 irq 5
[ata_port_add        ] ENTER
[ata_port_start      ] prd alloc, virt f6304000, dma 36304000
ata2: PATA max UDMA/66 cmd 0xF881AC40 ctl 0xF881AC78 bmdma 0x0 irq 5
[ata_device_add      ] probe begin
scsi0 : pdc_adma
[ata_device_add      ] ata1: bus probe begin
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
ata1.00: ata_dev_read_id: ENTER, host 1, dev 0
[ata_exec_command_mmio] ata1: cmd 0xEC
[adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
ata1: ata_port_flush_task: flush #2
ata1: ata_port_flush_task: EXIT
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
ata1.00: ata_dev_read_id: ENTER, host 1, dev 0
[ata_exec_command_mmio] ata1: cmd 0xEC
[adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
ata1: ata_port_flush_task: flush #2
ata1: ata_port_flush_task: EXIT
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
ata1.00: ata_dev_read_id: ENTER, host 1, dev 0
[ata_exec_command_mmio] ata1: cmd 0xEC
[adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
ata1: ata_port_flush_task: flush #2
ata1: ata_port_flush_task: EXIT
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
ata1.00: limiting speed to PIO0
ata1.00: disabled
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
[ata_device_add      ] ata1: bus probe end
scsi1 : pdc_adma
[ata_device_add      ] ata2: bus probe begin
[ata_bus_reset       ] ENTER, host 2, port 1
[ata_bus_softreset   ] ata2: bus reset via SRST
ata2: disabling port
[ata_bus_reset       ] EXIT
[ata_device_add      ] ata2: bus probe end
[ata_device_add      ] host probe begin

I've tested both cards and cables Mark sent me (thanks!), and both show 
the same symptom for ATA harddisk and ATAPI cdrom, so this seems to be a 
driver issue.  Any ideas?

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-04 12:00 libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM Tejun Heo
@ 2006-08-04 13:56 ` Mark Lord
  2006-08-04 14:18   ` Tejun Heo
  2006-08-04 15:30 ` Jeff Garzik
  1 sibling, 1 reply; 9+ messages in thread
From: Mark Lord @ 2006-08-04 13:56 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide

Tejun Heo wrote:
> Hello,
> 
> pdc_adma in libata-dev#upstream fails to IDENTIFY device w/ AC_ERR_HSM.
> 
> libata version 2.00 loaded.
> pdc_adma 0000:01:02.0: version 0.04
> ACPI: PCI Interrupt 0000:01:02.0[A] -> Link [LNKG] -> GSI 5 (level, low) 
> -> IRQ 5
> [ata_device_add      ] ENTER
> [ata_port_add        ] ENTER
> [ata_port_start      ] prd alloc, virt f62e1000, dma 362e1000
> ata1: PATA max UDMA/66 cmd 0xF881AC00 ctl 0xF881AC38 bmdma 0x0 irq 5
> [ata_port_add        ] ENTER
> [ata_port_start      ] prd alloc, virt f6304000, dma 36304000
> ata2: PATA max UDMA/66 cmd 0xF881AC40 ctl 0xF881AC78 bmdma 0x0 irq 5
> [ata_device_add      ] probe begin
> scsi0 : pdc_adma
> [ata_device_add      ] ata1: bus probe begin
> [ata_bus_reset       ] ENTER, host 1, port 0
> [ata_bus_softreset   ] ata1: bus reset via SRST
> [ata_dev_classify    ] found ATA device by sig
> [ata_dev_classify    ] found ATA device by sig
> [ata_bus_reset       ] EXIT
> ata1.00: ata_dev_read_id: ENTER, host 1, dev 0
> [ata_exec_command_mmio] ata1: cmd 0xEC
> [adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
> [ata_port_flush_task ] ENTER
> [ata_port_flush_task ] flush #1
> ata1: ata_port_flush_task: flush #2
> ata1: ata_port_flush_task: EXIT
> ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
..
> I've tested both cards and cables Mark sent me (thanks!), and both show 
> the same symptom for ATA harddisk and ATAPI cdrom, so this seems to be a 
> driver issue.  Any ideas?

Well, ATAPI not working is no suprise -- officially that chipset doesn't
support ATAPI (on MS Win), but it ought to be workable in PIO mode for us.

But not finding the HD is more of an issue.  I wonder what motherboard/CPU
you are trying this on, and has it *ever* worked for you Tejun?

My newish old AMD64 box here seems to have problems with a number
of boards, including the pdc_adma ones.  Not sure why, as the exact same
kernels work fine with the exact same board/drives in my Intel P4 box.

Something to add to the list of things to look at, I suppose.

Cheers

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-04 13:56 ` Mark Lord
@ 2006-08-04 14:18   ` Tejun Heo
  2006-08-04 15:02     ` Tejun Heo
  0 siblings, 1 reply; 9+ messages in thread
From: Tejun Heo @ 2006-08-04 14:18 UTC (permalink / raw)
  To: Mark Lord; +Cc: Jeff Garzik, linux-ide

Mark Lord wrote:
>> I've tested both cards and cables Mark sent me (thanks!), and both 
>> show the same symptom for ATA harddisk and ATAPI cdrom, so this seems 
>> to be a driver issue.  Any ideas?
> 
> Well, ATAPI not working is no suprise -- officially that chipset doesn't
> support ATAPI (on MS Win), but it ought to be workable in PIO mode for us.

IDENTIFY_PACKET_DEVICE fails the same way as IDENTIFY_DEVICE does, so...

> But not finding the HD is more of an issue.  I wonder what motherboard/CPU
> you are trying this on, and has it *ever* worked for you Tejun?

This is P5LD2 (ICH7R) w/ P4 celeron.  The kernel was built for i386. 
This is my first time to actually try these cards.  I'm updating 
initialization, so I'm doing sweep-test on all the cards I have.  I'll 
put it into via-c3 and see what happens.  I'll also try older kernel 
before big libata EH updates.

> My newish old AMD64 box here seems to have problems with a number
> of boards, including the pdc_adma ones.  Not sure why, as the exact same
> kernels work fine with the exact same board/drives in my Intel P4 box.

I have two sil3112s whose BIOSen hang during boot if certain port (not 
sure which one) is occupied on boot.  It worked fine before on the same 
machine (again, P5LD2) but it got broken after some point.  As both 
cards show the same symptom, I'm suspecting system BIOS update is the 
trigger.  Both cards work fine if booted with no device attached and 
hotplugged later.

> Something to add to the list of things to look at, I suppose.

As we're talking about pdc_adma, when are you gonna convert it to the 
new EH?  :-)

-- 
tejun

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-04 14:18   ` Tejun Heo
@ 2006-08-04 15:02     ` Tejun Heo
  0 siblings, 0 replies; 9+ messages in thread
From: Tejun Heo @ 2006-08-04 15:02 UTC (permalink / raw)
  To: Mark Lord; +Cc: Jeff Garzik, linux-ide

Tejun Heo wrote:
>> But not finding the HD is more of an issue.  I wonder what 
>> motherboard/CPU
>> you are trying this on, and has it *ever* worked for you Tejun?
> 
> This is P5LD2 (ICH7R) w/ P4 celeron.  The kernel was built for i386. 
> This is my first time to actually try these cards.  I'm updating 
> initialization, so I'm doing sweep-test on all the cards I have.  I'll 
> put it into via-c3 and see what happens.  I'll also try older kernel 
> before big libata EH updates.

Okay, the same on via-c3 with the same libata-dev#upstream.

ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 10 (level, 
low) -> IRQ 10
[ata_device_add      ] ENTER
[ata_host_add        ] ENTER
[ata_port_start      ] prd alloc, virt cc46c000, dma c46c000
ata1: PATA max UDMA/66 cmd 0xCE8AC000 ctl 0xCE8AC038 bmdma 0x0 irq 10
[ata_host_add        ] ENTER
[ata_port_start      ] prd alloc, virt cca6d000, dma ca6d000
ata2: PATA max UDMA/66 cmd 0xCE8AC040 ctl 0xCE8AC078 bmdma 0x0 irq 10
[ata_device_add      ] probe begin
scsi0 : pdc_adma
[ata_device_add      ] ata1: bus probe begin
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
[ata_exec_command_mmio] ata1: cmd 0xEC
[adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
[ata_exec_command_mmio] ata1: cmd 0xEC
[adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
[ata_exec_command_mmio] ata1: cmd 0xEC
[adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
[ata_port_flush_task ] ENTER
[ata_port_flush_task ] flush #1
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
ata1.00: limiting speed to PIO0
ata1.00: disabled
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
[ata_device_add      ] ata1: bus probe end
scsi1 : pdc_adma
[ata_device_add      ] ata2: bus probe begin
[ata_bus_reset       ] ENTER, host 2, port 1
[ata_bus_softreset   ] ata2: bus reset via SRST
ata2: disabling port
[ata_bus_reset       ] EXIT
[ata_device_add      ] ata2: bus probe end
[ata_device_add      ] host probe begin

===============================================================

v2.6.17 successfully identifies the disk but times out while trying to 
read the partition table and locks up the whole machine. (complete 
lockup, IRQ dead)


ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 10 (level, 
low) -> IRQ 10
ata1: PATA max UDMA/66 cmd 0xCE8AC000 ctl 0xCE8AC038 bmdma 0x0 irq 10
ata2: PATA max UDMA/66 cmd 0xCE8AC040 ctl 0xCE8AC078 bmdma 0x0 irq 10
ata1: dev 0 ATA-7, max UDMA/100, 156368016 sectors: LBA48
ata1: dev 0 configured for UDMA/66
scsi0 : pdc_adma
ata2: disabling port
scsi1 : pdc_adma
   Vendor: ATA       Model: SAMSUNG SP0802N   Rev: TK30
   Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 156368016 512-byte hdwr sectors (80060 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
SCSI device sda: 156368016 512-byte hdwr sectors (80060 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
  sda:<3>ata1: command 0xc8 timeout, stat 0x58 host_stat 0x0
ata1: translated ATA stat/err 0x58/00 to SCSI SK/ASC/ASCQ 0xb/47/00
<---- locked up ---->
===============================================================

2.6.16 successfully identifies the disk but locks up the whole machine 
while trying to read partition table.  (complete lockup, IRQ dead)

ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 10 (level, 
low) -> IRQ 10
[ata_device_add      ] ENTER
[ata_host_add        ] ENTER
[ata_port_start      ] prd alloc, virt cd563000, dma d563000
ata1: PATA max UDMA/66 cmd 0xCE8AC000 ctl 0xCE8AC038 bmdma 0x0 irq 10
[ata_host_add        ] ENTER
[ata_port_start      ] prd alloc, virt cc593000, dma c593000
ata2: PATA max UDMA/66 cmd 0xCE8AC040 ctl 0xCE8AC078 bmdma 0x0 irq 10
[ata_device_add      ] probe begin
[ata_device_add      ] ata1: probe begin
[ata_bus_reset       ] ENTER, host 1, port 0
[ata_bus_softreset   ] ata1: bus reset via SRST
[ata_dev_classify    ] found ATA device by sig
[ata_dev_classify    ] found ATA device by sig
[ata_bus_reset       ] EXIT
[ata_dev_identify    ] ENTER, host 1, dev 0
[ata_dev_identify    ] do ATA identify
[ata_exec_command_mmio] ata1: cmd 0xEC
[ata_pio_sector      ] data read
[ata_dump_id         ] 49==0x2f00  53==0x0007  63==0x0407  64==0x0003 
75==0x0000
[ata_dump_id         ] 80==0x00fe  81==0x001e  82==0x346b  83==0x7f01 
84==0x4003
[ata_dump_id         ] 88==0x003f  93==0x600b
ata1: dev 0 ATA-7, max UDMA/100, 156368016 sectors: LBA48
[ata_dev_identify    ] EXIT, drv_stat = 0x50
[ata_dev_identify    ] ENTER/EXIT (host 1, dev 1) -- nodev
[ata_host_set_pio    ] base 0x8 xfer_mode 0xc mask 0x10 x 4
[ata_dev_set_xfermode] set features - xfer mode
[ata_exec_command_mmio] ata1: cmd 0xEF
[adma_intr_mmio      ] ata1: protocol 1 (dev_stat 0x50)
[ata_dev_set_xfermode] EXIT
[ata_dev_set_mode    ] idx=4 xfer_shift=0, xfer_mode=0x44, base=0x40, 
offset=4
ata1: dev 0 configured for UDMA/66
[ata_device_add      ] ata1: probe end
scsi0 : pdc_adma
[ata_device_add      ] ata2: probe begin
[ata_bus_reset       ] ENTER, host 2, port 1
[ata_bus_softreset   ] ata2: bus reset via SRST
ata2: disabling port
[ata_bus_reset       ] EXIT
[ata_device_add      ] ata2: probe end
scsi1 : pdc_adma
[ata_device_add      ] probe begin
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 12 00 00 00 24 00 5a 5a 5a
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 12 00 00 00 60 00 5a 5a 5a
   Vendor: ATA       Model: SAMSUNG SP0802N   Rev: TK30
   Type:   Direct-Access                      ANSI SCSI revision: 05
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 00 00 00 00 00 00 5a 5a 5a
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 25 00 00 00 00 00 00 00 00
SCSI device sda: 156368016 512-byte hdwr sectors (80060 MB)
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 5a 00 3f 00 00 00 00 00 08
sda: Write Protect is off
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 5a 00 08 00 00 00 00 00 08
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 5a 00 08 00 00 00 00 00 24
SCSI device sda: drive cache: write back
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 00 00 00 00 00 00 5a 5a 5a
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 25 00 00 00 00 00 00 00 00
SCSI device sda: 156368016 512-byte hdwr sectors (80060 MB)
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 5a 00 3f 00 00 00 00 00 08
sda: Write Protect is off
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 5a 00 08 00 00 00 00 00 08
[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 5a 00 08 00 00 00 00 00 24
SCSI device sda: drive cache: write back
  sda:<3>[ata_scsi_dump_cdb   ] CDB (1:0,0,0) 28 00 00 00 00 00 00 00 08
[ata_sg_setup        ] 1 sg elements mapped
<-----locked up------>

-- 
tejun

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-04 12:00 libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM Tejun Heo
  2006-08-04 13:56 ` Mark Lord
@ 2006-08-04 15:30 ` Jeff Garzik
  2006-08-04 16:09   ` Mark Lord
  1 sibling, 1 reply; 9+ messages in thread
From: Jeff Garzik @ 2006-08-04 15:30 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Mark Lord, linux-ide@vger.kernel.org

Tejun Heo wrote:
> [adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
> [ata_port_flush_task ] ENTER
> [ata_port_flush_task ] flush #1
> ata1: ata_port_flush_task: flush #2
> ata1: ata_port_flush_task: EXIT
> ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)


AC_ERR_HSM comes from the call to ac_err_mask().  Given a Status of 
0x58, it would appear that DRQ is asserted.

So if I had to guess, I would say that the above interrupt is the 
DRQ-is-asserted indication, which would imply perhaps that this driver 
should not bother with PIO polling.

	Jeff




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-04 15:30 ` Jeff Garzik
@ 2006-08-04 16:09   ` Mark Lord
  2006-08-04 16:26     ` Tejun Heo
  0 siblings, 1 reply; 9+ messages in thread
From: Mark Lord @ 2006-08-04 16:09 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jeff Garzik, linux-ide@vger.kernel.org

Jeff Garzik wrote:
> Tejun Heo wrote:
>> [adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
>> [ata_port_flush_task ] ENTER
>> [ata_port_flush_task ] flush #1
>> ata1: ata_port_flush_task: flush #2
>> ata1: ata_port_flush_task: EXIT
>> ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
> 
> 
> AC_ERR_HSM comes from the call to ac_err_mask().  Given a Status of 
> 0x58, it would appear that DRQ is asserted.
> 
> So if I had to guess, I would say that the above interrupt is the 
> DRQ-is-asserted indication, which would imply perhaps that this driver 
> should not bother with PIO polling.

I think this illustrates just how few people (Tejun) actually have
these chips and use them with Linux.  :)

I don't have a system to test this with today (long story),
but I'm trying to piece one together for later.

Is this "IDENTIFY using IRQs rather than polling" a newish feature?
Because I just don't see how it could work with the the existing
adma_intr_mmio routine --> that code is only correct for non-data
commands, and IDENTIFY definitely has data.

Borken driver, for sure.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-04 16:09   ` Mark Lord
@ 2006-08-04 16:26     ` Tejun Heo
  2006-08-08  6:18       ` Albert Lee
  0 siblings, 1 reply; 9+ messages in thread
From: Tejun Heo @ 2006-08-04 16:26 UTC (permalink / raw)
  To: Mark Lord; +Cc: Jeff Garzik, linux-ide@vger.kernel.org

Mark Lord wrote:
> Jeff Garzik wrote:
>> Tejun Heo wrote:
>>> [adma_intr_mmio      ] ata1: protocol 2 (dev_stat 0x58)
>>> [ata_port_flush_task ] ENTER
>>> [ata_port_flush_task ] flush #1
>>> ata1: ata_port_flush_task: flush #2
>>> ata1: ata_port_flush_task: EXIT
>>> ata1.00: failed to IDENTIFY (I/O error, err_mask=0x2)
>>
>>
>> AC_ERR_HSM comes from the call to ac_err_mask().  Given a Status of 
>> 0x58, it would appear that DRQ is asserted.
>>
>> So if I had to guess, I would say that the above interrupt is the 
>> DRQ-is-asserted indication, which would imply perhaps that this driver 
>> should not bother with PIO polling.
> 
> I think this illustrates just how few people (Tejun) actually have
> these chips and use them with Linux.  :)

Thanks to you. :-)  Pretty cards though.

> I don't have a system to test this with today (long story),
> but I'm trying to piece one together for later.
> 
> Is this "IDENTIFY using IRQs rather than polling" a newish feature?
> Because I just don't see how it could work with the the existing
> adma_intr_mmio routine --> that code is only correct for non-data
> commands, and IDENTIFY definitely has data.

IDENTIFY w/ IRQs came with Albert Lee's irq-pio which was merged into 
mainline together with new EH.

-- 
tejun

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-04 16:26     ` Tejun Heo
@ 2006-08-08  6:18       ` Albert Lee
  2006-08-09  9:30         ` Tejun Heo
  0 siblings, 1 reply; 9+ messages in thread
From: Albert Lee @ 2006-08-08  6:18 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Mark Lord, Jeff Garzik, linux-ide@vger.kernel.org

Tejun Heo wrote:
> Mark Lord wrote:
> 
>>
>> Is this "IDENTIFY using IRQs rather than polling" a newish feature?
>> Because I just don't see how it could work with the the existing
>> adma_intr_mmio routine --> that code is only correct for non-data
>> commands, and IDENTIFY definitely has data.
> 
> 
> IDENTIFY w/ IRQs came with Albert Lee's irq-pio which was merged into
> mainline together with new EH.
> 

Oops, pdc_adma.c was overlooked by the irq-pio patch.
Only HSM_ST_LAST interrupts should be delivered to this LLDD.
Could you please check if the attached patch helps?

--
albert

(Patch against mainline 2.6.18-rc4.)

--- linux-2.6.18-rc4/drivers/scsi/pdc_adma.c	2006-08-08 14:03:21.000000000 +0800
+++ linux-2.6.18-rc4-adma-poll/drivers/scsi/pdc_adma.c	2006-08-08 14:05:13.000000000 +0800
@@ -183,7 +183,8 @@ static struct ata_port_info adma_port_in
 	{
 		.sht		= &adma_ata_sht,
 		.host_flags	= ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST |
-				  ATA_FLAG_NO_LEGACY | ATA_FLAG_MMIO,
+				  ATA_FLAG_NO_LEGACY | ATA_FLAG_MMIO |
+				  ATA_FLAG_PIO_POLLING,
 		.pio_mask	= 0x10, /* pio4 */
 		.udma_mask	= 0x1f, /* udma0-4 */
 		.port_ops	= &adma_ata_ops,




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM
  2006-08-08  6:18       ` Albert Lee
@ 2006-08-09  9:30         ` Tejun Heo
  0 siblings, 0 replies; 9+ messages in thread
From: Tejun Heo @ 2006-08-09  9:30 UTC (permalink / raw)
  To: albertl; +Cc: Mark Lord, Jeff Garzik, linux-ide@vger.kernel.org

Albert Lee wrote:
> Tejun Heo wrote:
>> Mark Lord wrote:
>>
>>> Is this "IDENTIFY using IRQs rather than polling" a newish feature?
>>> Because I just don't see how it could work with the the existing
>>> adma_intr_mmio routine --> that code is only correct for non-data
>>> commands, and IDENTIFY definitely has data.
>>
>> IDENTIFY w/ IRQs came with Albert Lee's irq-pio which was merged into
>> mainline together with new EH.
>>
> 
> Oops, pdc_adma.c was overlooked by the irq-pio patch.
> Only HSM_ST_LAST interrupts should be delivered to this LLDD.
> Could you please check if the attached patch helps?

Yay, with your patch pdc_adma detects all devices and works great.

=================================================================
ACPI: PCI Interrupt Link [LNKG] enabled at IRQ 3
ACPI: PCI Interrupt 0000:01:02.0[A] -> Link [LNKG] -> GSI 3 (level, low) 
-> IRQ 3
ata1: PATA max UDMA/66 cmd 0xF881AC00 ctl 0xF881AC38 bmdma 0x0 irq 3
ata2: PATA max UDMA/66 cmd 0xF881AC40 ctl 0xF881AC78 bmdma 0x0 irq 3
scsi0 : pdc_adma
ata1.01: ATA-4, max UDMA/66, 30064608 sectors: LBA
ata1.01: ata1: dev 1 multi count 0
ata1.01: configured for UDMA/66
scsi1 : pdc_adma
ata2.01: ATAPI, max MWDMA2
ata2.01: configured for PIO4
   Vendor: ATA       Model: WDC WD153AA       Rev: 05.0
   Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 30064608 512-byte hdwr sectors (15393 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
SCSI device sda: 30064608 512-byte hdwr sectors (15393 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
  sda: sda1
sd 0:0:1:0: Attached scsi disk sda
sd 0:0:1:0: Attached scsi generic sg0 type 0
   Vendor: LG (KOR)  Model: CD-ROM CRD-8520B  Rev: 1.00
   Type:   CD-ROM                             ANSI SCSI revision: 05
sr0: scsi3-mmc drive: 52x/52x cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 1:0:1:0: Attached scsi generic sg1 type 5
=================================================================

Please send the patch to Jeff with proper header.

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2006-08-09  9:30 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-04 12:00 libata-dev#upstream pdc_adma fails IDENTIFY w/ AC_ERR_HSM Tejun Heo
2006-08-04 13:56 ` Mark Lord
2006-08-04 14:18   ` Tejun Heo
2006-08-04 15:02     ` Tejun Heo
2006-08-04 15:30 ` Jeff Garzik
2006-08-04 16:09   ` Mark Lord
2006-08-04 16:26     ` Tejun Heo
2006-08-08  6:18       ` Albert Lee
2006-08-09  9:30         ` Tejun Heo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).