SATA hotplug status (sii3114)

From: Andy Helten
Date: Fri Jan 14 2005 - 15:30:00 EST


Hello,

Can anyone tell me the current status of hotplug support? The SATA web site says only this:

libata does not support hotplug... yet.


Is there a plan or design for adding hotplug support? Can anyone point me to any discussions on this matter. I am new to Linux kernel development, but I have searched the archives and found nothing very helpful (except for the mention of the echo commands I tried below). There could be a simple solution that is evading me, but I've looked for two days now without much success.

I am running kernel version 2.4.25-elinos-53 with the 2.4.25-libata16 patch. The CPU is a PowerPC 8245 and the SATA controller is an Sii3114. The processor board provides hotplug support which, at least at a hardware level, allows safe removal and insertion of the drives. However, the software does not appear to handle the re-install very well. Note that before a remove/insert cycle, the drive seems to work fine (I haven't tested it very extensively). This could also be an issue with the way hardware brings the drive back up after hotplug insertion (I am also not that familiar with SATA just yet).

Thanks for any help,
Andy


*****

If interested, here is what I've done thus far:

I've tried rescanning the bus using 'echo "rescan" > /proc/scsi/scsi' and explicitly adding/removing the device using 'add-single-device' and 'remove-single-device'. None of these seem to help the device recover following a drive hotplug remove/insert. For example, I issue the 'remove-single-device' command, remove the drive, re-insert the drive, and issue the 'add' command. I verify that the drive is indeed removed from /proc/scsi/scsi and then added back after the 'add' command, but accessing the drive does not work following the hotplug insertion. In fact, the 'add' command never returns to the command line, although the kernel does continue to run and I can use another terminal to look at /proc/scsi/scsi.

I've also tried the 'add' and 'remove' commands without physically removing the drive. After this, I can remount the drive and read/write it without problems. This seems to prove that the act of hotplug removal/insertion is the real issue.


Here is a console session of a remove/insert cycle:

[1 /]#cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05
[2 /]#echo "scsi remove-single-device 0 0 0 0" >/proc/scsi/scsi
[3 /]#cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05
[4 /]#

/* drive is removed */

cpld.o: shuttle 1: released /* msg from interrupt routine */

[4 /]#cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05
[5 /]#

/* drive is inserted */

cpld.o: shuttle 1: inserted /* msg from interrupt routine */

[5 /]#cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05
[6 /]#echo "scsi add-single-device 0 0 0 0" >/proc/scsi/scsi
scsi singledevice 0 0 0 0
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 78140160 512-byte hdwr sectors (40008 MB)
sda:<3>ata1: DMA timeout, stat 0x1
ATA: abnormal status 0xD0 on port 0xD1042C87
scsi0: ERROR on channel 0, id 0, lun 0, CDB: 0x28 00 00 00 00 00 00 00 08 00
Current sd08:00: sns = 70 3
ASC=11 ASCQ= 4
Raw sense data:0x70 0x00 0x03 0x00 0x00 0x00 0x00 0x06 0x00 0x00 0x00 0x00 0x11
0x04
I/O error: dev 08:00, sector 0

[7 /]#cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: Model: Rev:
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: HTE726040M9AT00 Rev: 1.02
Type: Direct-Access ANSI SCSI revision: 05


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/