From: Alexander Malysh <a.malysh-1WJ9BOJEYl0b1SvskN2V4Q@public.gmane.org>
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: [PATCH] Re: [BUG] acpi_hw_[enable|disable]_non_wakeup_gpe_block
Date: Sun, 15 Feb 2004 16:47:19 +0100 [thread overview]
Message-ID: <200402151647.21826.a.malysh@centrium.de> (raw)
In-Reply-To: <200402142317.41033.a.malysh-1WJ9BOJEYl0b1SvskN2V4Q@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 5006 bytes --]
Hi again,
after some more testing, I have found a cause for this.
We disable non wakeup gpes (and store those values) with interrupts disabled,
but enable those with interrupts enabled which were already overwritten while
handling of wakeup interrupt[1]. So we must restore non wakeup gpes as long
interrupts are disabled. Attached patch should fix it.
P.S. With patch attached sleep button works after S1 resume...
[1] Debug log w/o a patch:
Feb 15 15:49:24 rose kernel: acpi_enter_sleep_state
Feb 15 15:49:24 rose kernel:
acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
gpe_register_info(0xcefec548) gpe_register_info->wake_enable=0x0
gpe_register_info->enable_address=0x1022 gpe_register_info->enable=0x11
Feb 15 15:49:24 rose kernel:
acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
gpe_register_info(0xcefec564) gpe_register_info->wake_enable=0x0
gpe_register_info->enable_address=0x1023 gpe_register_info->enable=0x5d
Feb 15 15:49:24 rose kernel:
acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef33568)
gpe_register_info(0xcefec4c8) gpe_register_info->wake_enable=0x0
gpe_register_info->enable_address=0x1032 gpe_register_info->enable=0x0
Feb 15 15:49:24 rose kernel:
acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef33568)
gpe_register_info(0xcefec4e4) gpe_register_info->wake_enable=0x0
gpe_register_info->enable_address=0x1033 gpe_register_info->enable=0x0
Feb 15 15:49:24 rose kernel: Back to C!
Feb 15 15:49:24 rose kernel: evevent-0229 [20] ev_fixed_event_detect : Fixed
Event Block: Enable 00000120 Status 00008100
Feb 15 15:49:24 rose kernel: evgpe-0191 [20] ev_gpe_detect : GPE
pair: Status 0000000000001020 = 80, Enable 0000000000001022 = 00
Feb 15 15:49:24 rose kernel: evgpe-0191 [20] ev_gpe_detect : GPE
pair: Status 0000000000001021 = 00, Enable 0000000000001023 = 00
Feb 15 15:49:24 rose kernel: evgpe-0191 [20] ev_gpe_detect : GPE
pair: Status 0000000000001030 = F8, Enable 0000000000001032 = 00
Feb 15 15:49:24 rose kernel: evgpe-0191 [20] ev_gpe_detect : GPE
pair: Status 0000000000001031 = A7, Enable 0000000000001033 = 00
Feb 15 15:49:24 rose kernel: acpi_leave_sleep_state
acpi_hw_enable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
gpe_register_info(0xcefec548) gpe_register_info->wake_enable=0x0
gpe_register_info->enable_address=0x1022 gpe_register_info->enable=0x0
Feb 15 15:49:24 rose kernel:
acpi_hw_enable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
gpe_register_info(0xcefec564) gpe_register_info->wake_enable=0x0
gpe_register_info->enable_address=0x1023 gpe_register_info->enable=0x0
On Saturday 14 February 2004 23:17, Alexander Malysh wrote:
> Hi all,
>
> I have found a bug? in linux acpi that values within gpe_register_info are
> overwritten. Please see these values (note: only system_io gpe_register
> were dumped):
>
> 1) system go into S1
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
> gpe_register_info(0xcefec548) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1022 gpe_register_info->enable=0x11
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
> gpe_register_info(0xcefec564) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1023 gpe_register_info->enable=0x5d
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef33568)
> gpe_register_info(0xcefec4c8) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1032 gpe_register_info->enable=0x0
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef33568)
> gpe_register_info(0xcefec4e4) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1033 gpe_register_info->enable=0x0
>
> 2) system wakeup
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
> gpe_register_info(0xcefec548) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1022 gpe_register_info->enable=0x0
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef335c8)
> gpe_register_info(0xcefec564) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1023 gpe_register_info->enable=0x0
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef33568)
> gpe_register_info(0xcefec4c8) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1032 gpe_register_info->enable=0x0
> Feb 14 23:01:08 rose kernel:
> acpi_hw_disable_non_wakeup_gpe_block:gpe_block(0xcef33568)
> gpe_register_info(0xcefec4e4) gpe_register_info->wake_enable=0x0
> gpe_register_info->enable_address=0x1033 gpe_register_info->enable=0x0
>
> As you can see, io_addr 0x1022 and 0x1023 were restored with wrong values.
>
> any thoughts or patches to try?
--
Please avoid sending me Word, Excel or PowerPoint attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html
[-- Attachment #2: acpi_hw_enable_non_wakeup_gpes.diff --]
[-- Type: text/x-diff, Size: 747 bytes --]
--- linux-2.6.2-linus/drivers/acpi/hardware/hwsleep.c~orig 2004-02-15 16:31:50.928455040 +0100
+++ linux-2.6.2-linus/drivers/acpi/hardware/hwsleep.c 2004-02-15 16:35:30.030146520 +0100
@@ -342,6 +342,12 @@
} while (!in_value);
+ /* Enable non_wakeup_gpes as long interrupts are disabled */
+ status = acpi_hw_enable_non_wakeup_gpes ();
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+
return_ACPI_STATUS (AE_OK);
}
@@ -496,11 +502,6 @@
/* _WAK returns stuff - do we want to look at it? */
- status = acpi_hw_enable_non_wakeup_gpes ();
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Enable BM arbitration */
status = acpi_set_register (ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_LOCK);
next prev parent reply other threads:[~2004-02-15 15:47 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-14 22:17 [BUG] acpi_hw_[enable|disable]_non_wakeup_gpe_block Alexander Malysh
[not found] ` <200402142317.41033.a.malysh-1WJ9BOJEYl0b1SvskN2V4Q@public.gmane.org>
2004-02-15 15:47 ` Alexander Malysh [this message]
[not found] ` <200402151647.21826.a.malysh-1WJ9BOJEYl0b1SvskN2V4Q@public.gmane.org>
2004-02-15 19:31 ` [PATCH] " Karol Kozimor
2004-02-15 20:07 ` Bruno Ducrot
[not found] ` <20040215200724.GN13262-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
2004-02-15 21:00 ` Alexander Malysh
[not found] ` <200402152200.08010.a.malysh-1WJ9BOJEYl0b1SvskN2V4Q@public.gmane.org>
2004-02-15 22:12 ` [PATCH] acpi_leave_sleep_state (was: [PATCH] Re: [BUG] acpi_hw_[enable|disable]_non_wakeup_gpe_block) Alexander Malysh
[not found] ` <200402152312.53837.a.malysh-1WJ9BOJEYl0b1SvskN2V4Q@public.gmane.org>
2004-02-17 0:11 ` Karol Kozimor
2004-02-17 1:31 ` Some results from Alexander's acpi_leave_sleep_state patch Huw Rogers
[not found] ` <20040216182451.1BC5.COUNT0-tC47gz4GrgtWk0Htik3J/w@public.gmane.org>
2004-02-17 8:06 ` Karol Kozimor
2004-02-25 17:34 ` Pavel Machek
2004-02-17 10:02 ` [PATCH] Re: [BUG] acpi_hw_[enable|disable]_non_wakeup_gpe_block Bruno Ducrot
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=200402151647.21826.a.malysh@centrium.de \
--to=a.malysh-1wj9bojeyl0b1svskn2v4q@public.gmane.org \
--cc=acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox