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