From 87c737b6ab20ae671b69c47ee68eef087b7ef495 Mon Sep 17 00:00:00 2001 From: Zhao Yakui Date: Tue, 26 Aug 2008 13:57:34 +0800 Subject: [PATCH] ACPI: Avoid bogus timeout about SMbus check MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In the function of wait_transaction_complete when the timeout happens, OS will try to check the status of SMbus again. If the status is what OS expected, it will be regarded as the bogus timeout. Otherwise it will be treated as ETIME. http://bugzilla.kernel.org/show_bug.cgi?id=10483 Signed-off-by: Zhao Yakui tested-by : Oldřich Jedlička < Signed-off-by: Andi Kleen --- drivers/acpi/sbshc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/acpi/sbshc.c b/drivers/acpi/sbshc.c index bcf2c70fca87f..a4e3767b8c642 100644 --- a/drivers/acpi/sbshc.c +++ b/drivers/acpi/sbshc.c @@ -107,6 +107,13 @@ static int wait_transaction_complete(struct acpi_smb_hc *hc, int timeout) if (wait_event_timeout(hc->wait, smb_check_done(hc), msecs_to_jiffies(timeout))) return 0; + /* + * After the timeout happens, OS will try to check the status of SMbus. + * If the status is what OS expected, it will be regarded as the bogus + * timeout. + */ + if (smb_check_done(hc)) + return 0; else return -ETIME; } -- 2.39.5