From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shaohua Li Subject: [patch 1/11]avoid check _STA method Date: Thu, 28 Aug 2008 10:02:03 +0800 Message-ID: <1219888923.29375.21.camel@sli10-desk.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: Received: from mga14.intel.com ([143.182.124.37]:10212 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752884AbYH1Bw0 (ORCPT ); Wed, 27 Aug 2008 21:52:26 -0400 Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: linux acpi Cc: Len Brown , Andi Kleen , Henrique de Moraes Holschuh , Holger Macht , mjg59 , Tejun Heo In some BIOSes, every _STA method call will send a notification again, this cause freeze. And in some BIOSes, it appears _STA should be called after _DCK. This tries to avoid calls _STA, and still keep the device present check. http://bugzilla.kernel.org/show_bug.cgi?id=10431 Signed-off-by: Shaohua Li --- drivers/acpi/dock.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) Index: linux/drivers/acpi/dock.c =================================================================== --- linux.orig/drivers/acpi/dock.c 2008-08-27 14:38:44.000000000 +0800 +++ linux/drivers/acpi/dock.c 2008-08-28 09:33:02.000000000 +0800 @@ -604,14 +604,17 @@ static int handle_eject_request(struct d static void dock_notify(acpi_handle handle, u32 event, void *data) { struct dock_station *ds = data; + struct acpi_device *tmp; switch (event) { case ACPI_NOTIFY_BUS_CHECK: - if (!dock_in_progress(ds) && dock_present(ds)) { + if (!dock_in_progress(ds) && acpi_bus_get_device(ds->handle, + &tmp)) { begin_dock(ds); dock(ds); if (!dock_present(ds)) { printk(KERN_ERR PREFIX "Unable to dock!\n"); + complete_dock(ds); break; } atomic_notifier_call_chain(&dock_notifier_list,