From: Andrew Morton <akpm@linux-foundation.org>
To: Holger Macht <hmacht@suse.de>
Cc: linux-kernel@vger.kernel.org, Tejun Heo <htejun@gmail.com>,
linux-ide@vger.kernel.org, Jeff Garzik <jeff@garzik.org>,
linux-acpi@vger.kernel.org, Matthew Garrett <mjg59@srcf.ucam.org>
Subject: Re: [PATCH] libata: Handle bay devices in dock stations
Date: Wed, 28 May 2008 20:02:27 -0700 [thread overview]
Message-ID: <20080528200227.80f708cd.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080528143857.GB5585@homac.suse.de>
On Wed, 28 May 2008 16:38:57 +0200 Holger Macht <hmacht@suse.de> wrote:
> * 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@srcf.ucam.org>)
>
> * Call ACPI _EJ0 for detached devices
>
> ...
>
> +static void ata_acpi_eject_device(acpi_handle handle)
> +{
> + struct acpi_object_list arg_list;
> + union acpi_object arg;
> +
> + arg_list.count = 1;
> + arg_list.pointer = &arg;
> + arg.type = ACPI_TYPE_INTEGER;
> + arg.integer.value = 1;
This might look nicer (and safer) if it used the
union acpi_object arg = {
.foo = bar,
...
};
form. However this can cause gcc to emit poor code.
> + if (ACPI_FAILURE(acpi_evaluate_object(handle, "_EJ0",
> + &arg_list, NULL)))
> + printk(KERN_ERR "Failed to evaluate _EJ0!\n");
> +}
It would be better if the printk were to self-identify where it is
coming from. If your kernel just blurts "Failed to evaluate _EJ0!"
it's a bit of a head-scratcher.
"libata-acpi: failed to evaluate _EJ0", perhaps?
> +static void ata_acpi_detach_device(struct ata_port *ap, struct ata_device *dev)
> +{
> + if (dev)
> + dev->flags |= ATA_DFLAG_DETACH;
> + else {
> + struct ata_link *tlink;
> + struct ata_device *tdev;
> +
> + ata_port_for_each_link(tlink, ap)
> + ata_link_for_each_dev(tdev, tlink)
> + tdev->flags |= ATA_DFLAG_DETACH;
> + }
> +
> + ata_port_freeze(ap);
> + ata_port_schedule_eh(ap);
> +}
I guess the significance of `dev==0' is known to those who are steeped
in ata_acpi_handle_hotplug() knowledge, but it's pretty inscrutable to
the occasional visitor. Some comments would help.
next prev parent reply other threads:[~2008-05-29 3:03 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-28 14:38 [PATCH] libata: Handle bay devices in dock stations Holger Macht
2008-05-28 14:39 ` Tejun Heo
2008-05-28 14:39 ` Tejun Heo
2008-05-29 3:02 ` Andrew Morton [this message]
2008-05-29 3:08 ` Tejun Heo
2008-05-29 13:22 ` Matthew Garrett
2008-05-29 13:33 ` Holger Macht
2008-05-29 13:32 ` Matthew Garrett
2008-05-29 13:39 ` Holger Macht
2008-05-29 13:40 ` Matthew Garrett
2008-05-29 13:44 ` Tejun Heo
2008-05-29 14:02 ` Matthew Garrett
2008-05-29 14:14 ` Holger Macht
2008-05-29 14:35 ` Matthew Garrett
2008-05-29 14:37 ` Tejun Heo
2008-05-29 14:49 ` Matthew Garrett
2008-05-29 16:32 ` Holger Macht
2008-05-29 16:40 ` Tejun Heo
2008-05-29 16:40 ` Tejun Heo
2008-06-01 16:05 ` Holger Macht
2008-05-29 16:46 ` Holger Macht
2008-05-29 16:46 ` Holger Macht
2008-05-29 17:51 ` Henrique de Moraes Holschuh
2008-05-29 17:51 ` Henrique de Moraes Holschuh
2008-05-30 11:07 ` tom
2008-06-01 16:06 ` Holger Macht
2008-06-03 18:07 ` Jeff Garzik
2008-06-03 18:13 ` Matthew Garrett
2008-06-03 18:23 ` Holger Macht
2008-06-09 1:44 ` Tejun Heo
2008-06-09 1:48 ` Matthew Garrett
2008-06-09 4:56 ` Tejun Heo
2008-06-03 18:27 ` Holger Macht
2008-06-03 18:29 ` Matthew Garrett
2008-06-03 18:54 ` Jeff Garzik
2008-06-04 10:29 ` Jeff Garzik
2008-06-04 10:29 ` Jeff Garzik
-- strict thread matches above, loose matches on Subject: below --
2008-05-31 0:01 Pascal Brückner
2008-05-31 10:28 Pascal Brückner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080528200227.80f708cd.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=hmacht@suse.de \
--cc=htejun@gmail.com \
--cc=jeff@garzik.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.