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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html