Mark Lord wrote:
> Tejun Heo wrote:
>
>> Mark Lord wrote:
>>
>>> Really? I didn't notice when libata gained ATAPI-disk support.
>>>
>>> Are you *sure* about that??
>>
>>
>> Not sure sure but almost sure. :-) What ide-scsi does is borrowing
>> SCSI mid and high level drivers while using ide as SCSI low level
>> driver. To SCSI, libata and ide-scsi aren't very different except that
>> libata also exports SBC device to it. So, if SCSI could handle ATAPI
>> disk via ide-scsi, I don't think there is any reason it can't with
>> libata.
>
>
> Okay, I dusted off one of my old (actually, I believe *the oldest*)
> Zip100 drives in the collection, and tried it out here with both
> 2.6.20 and 2.6.21-rc3-git9. It works mostly fine with each.
>
> A couple of minor issues, though.
>
> (1) When ejecting a disk, either with the "eject /dev/sdc" command
> or using the front-panel soft-eject button on the drive,
> I get the following in syslog from libata:
>
> sdc: Spinning up disk...<3>ata4.00: exception Emask 0x0 SAct 0x0 SErr
> 0x0 action 0x2
> res 00/00:03:00:00:20/00:00:00:00:00/a0 Emask 0x2 (HSM violation)
> ata4: soft resetting port
> ATA: abnormal status 0x7F on port 0x00010177
> ATA: abnormal status 0x7F on port 0x00010177
> ata4.00: configured for PIO2
> ata4: EH complete
The device status of 0x00 looks strange.
Could you please apply the attached debugging patch for
clue about what caused the HSM violation, thanks.
>
>
> (2) The above log says PIO2, but the IDENTIFY data for this drive,
> which I had to patch the kernel to get (ATAPI ATA_16 support),
> indicates max PIO0 for this unit. I suppose maybe the chipset
> doesn't go that low, but no big deal since IORDY handshakes it anyway.
>
I saw this strange behavior, too.
The Promise BIOS identified my zip 100 drive as "PIO 0" during boot,
but libata identified it as "PIO2":
ata4.00: ATAPI, max PIO2, CDB intr
ata4.00: configured for PIO2
--
albert
--- linux-2.6.20.3/drivers/ata/libata-core.c 2007-03-15 12:13:12.000000000
+0800
+++ linux-2.6.20.3-mod/drivers/ata/libata-core.c 2007-03-15
12:13:55.000000000 +0800
@@ -4371,8 +4371,9 @@ int ata_hsm_move(struct ata_port *ap, st
WARN_ON(in_wq != ata_hsm_ok_in_wq(ap, qc));
fsm_start:
- DPRINTK("ata%u: protocol %d task_state %d (dev_stat 0x%X)\n",
- ap->id, qc->tf.protocol, ap->hsm_task_state, status);
+ if (is_atapi_taskfile(&qc->tf))
+ printk(KERN_ERR "ata%u: protocol %d task_state %d (dev_stat
0x%X)\n",
+ ap->id, qc->tf.protocol, ap->hsm_task_state, status);
switch (ap->hsm_task_state) {
case HSM_ST_FIRST:
@@ -5091,8 +5092,9 @@ inline unsigned int ata_host_intr (struc
struct ata_eh_info *ehi = &ap->eh_info;
u8 status, host_stat = 0;
- VPRINTK("ata%u: protocol %d task_state %d\n",
- ap->id, qc->tf.protocol, ap->hsm_task_state);
+ if (is_atapi_taskfile(&qc->tf))
+ printk(KERN_ERR "ata%u: protocol %d task_state %d\n",
+ ap->id, qc->tf.protocol, ap->hsm_task_state);
/* Check whether we are expecting interrupt in this state */
switch (ap->hsm_task_state) {
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html