Re: SATA hotplug not detecting new disks
From: Dave Hansen <hidden>
Date: 2013-07-26 17:57:14
Also in:
lkml
On 07/25/2013 06:51 PM, Aaron Lu wrote:
On 07/26/2013 07:15 AM, Dave Hansen wrote:quoted
I've got a relatively new system that doesn't seem to be able to hotplug SATA disks. I see the same behavior on 3.10, 3.11-rc2, and Ubuntu's 3.8.0-25-generic. The disks are detected right away on reboots, but even after poking the /sys/class/scsi_host/host*/scan files, new disks are never detected. I've disabled link power management. Am I doing something stupid here? I thought this "just worked" on my previous hardware.My vague memory reminds me that not all SATA ports are hot pluggable - you can check the port's "External SATA port" bit and "Hot Plug Capable" bit of the PxCMD register like this: $ grep ahci /proc/iomem e1a40000-e1a407ff : ahci # dd if=/dev/mem of=ahcidump bs=4096 count=1 skip=0xe1a40 You will need to change 0xe1a40 to decimal format. Then the PxCMD is at offset 0x118 for port 0, check bit 21 for E-SATA or bit 18 for hot pluggable bits. If any of them set to 1, this port should be hot pluggable; otherwise, it doesn't have this capability.
That whole I/O area looks to be 0'd to me, at least for the port if I boot with it unplugged. I even tried toggling the PORT_CMD_ALPE bit with powertop since it is in the same port. Nothing seems to happen for port0 (the one unplugged at boot), although I _can_ see the writes show up for the other ports. I also tried booting with a disk plugged in to a port, then put that disk to sleep and unplugged it. I replugged a _different_ disk in its place, and it was detected just fine. Is it possible that the 'ata_dummy_port_ops' are getting left in place at boot accidentally, that we're mistaking an unplugged port for a disabled one?