Re: [PATCH] libata: Handle bay devices in dock stations

From: tom
Date: Fri May 30 2008 - 07:17:11 EST


Quoting Holger Macht <hmacht@xxxxxxx>:

* Differentiate between bay devices in dock stations and others:

- When an ACPI_NOTIFY_EJECT_REQUEST appears, just signal uevent to
userspace (that is when the optional eject button on a bay device is
pressed/pulled) giving the possibility to unmount file systems and to
clean up. Also, only send uevent in case we get an EJECT_REQUEST
without doing anything else. In other cases, you'll get an add/remove
event because libata attaches/detaches the device.

- In case of a dock event, which in turn signals an
ACPI_NOTIFY_EJECT_REQUEST, immediately detach the device, because it
may already have been gone

* In case of an ACPI_NOTIFY_DEVICE/BUS_CHECK, evaluate _STA to check if
the device has been plugged or unplugged. If plugged, hotplug it, if
unplugged, just signal event to userspace
(initial patch by Matthew Garrett <mjg59@xxxxxxxxxxxxx>)

* Call ACPI _EJ0 for detached devices

Will this patch or the other bay/dock related patches you send in the past days allow me to undock my laptop and still be able to suspend/resume without locking the laptop up? And without having to run any userspace scripts?

My dock is not a simple port replicator, it has an USB hub and an ATA bay in it. My tests showed that I need to 'echo 1 > /sys/.../scsi/.../eject' or something like that before I can take the laptop out of the docking station. If I don't do that and try to access the cdrom in the bay (or even rescaning the scsi bus) after I have taken the laptop out of the dock it results in a hard lockup. That in itself would not be a problem, because it's just a simple command that I can do in an acpid script. But far worse is that even if I do that, the computer locks up when I resume from suspend. I run 2.6.24.7 which locks up every time I resume. In recent versions from git it has somehow improved, there are situations where it doesn't lock up, but there are still a few left where it does (I don't remember the exact actions/commands I have to take).

tom


--
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/