From: Nathan Bryant <nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org>
To: len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org
Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
"Linux Kernel list"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Li,
Shaohua" <shaohua.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"Stefan Dösinger" <stefandoesinger-RbZlAiThDcE@public.gmane.org>
Subject: [PATCH][RFC] fix ACPI IRQ routing after S3 suspend
Date: Tue, 03 Aug 2004 21:42:58 -0400 [thread overview]
Message-ID: <41103F22.4090303@optonline.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 435 bytes --]
This patch should fix multiple user-visible problems with the ACPI IRQ
routing after S3 resume:
"irq x: nobody cared"
"my interrupts are gone"
It probably applies to multiple bugzilla entries and mailing list posts.
Tested on my machine, which is experiencing similar problems. Seems to
work - although I get some non-fatal "nobody cared" messages that might
be caused by the i8042 driver.
Comments?
Stefan, can you test this?
[-- Attachment #2: acpi-fixes.patch --]
[-- Type: text/x-patch, Size: 4840 bytes --]
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2004/08/03 19:37:56-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org
# drivers/acpi/pci_link.c: use device_initcall(irqrouter_init_sysfs);
#
# drivers/acpi/pci_link.c
# 2004/08/03 19:37:47-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org +13 -3
# use device_initcall(irqrouter_init_sysfs);
#
# ChangeSet
# 2004/08/03 18:09:20-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org
# fix ACPI_FUNCTION_TRACE("irqrouter_resume");
#
# drivers/acpi/pci_link.c
# 2004/08/03 18:09:12-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org +1 -1
# fix ACPI_FUNCTION_TRACE("irqrouter_resume");
#
# ChangeSet
# 2004/08/03 18:03:39-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org
# drivers/acpi/pci_link.c: register us as a sys_device so that we can get
# resume callbacks and restore interrupt state. Fixes interrupt problems
# reported on the mailing lists:
#
# http://marc.theaimsgroup.com/?l=acpi4linux&m=109142999328643&w=2
#
# drivers/acpi/pci_link.c
# 2004/08/03 18:03:31-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org +51 -14
# drivers/acpi/pci_link.c: register us as a sys_device so that we can get
# resume callbacks and restore interrupt state. Fixes interrupt problems
# reported on the mailing lists:
#
# http://marc.theaimsgroup.com/?l=acpi4linux&m=109142999328643&w=2
#
# ChangeSet
# 2004/08/02 20:41:54-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org
# [ACPI] drivers/acpi/pci_link.c: add acpi_pci_link_resume(), which will be
# called when resuming from a suspend state that needs IRQ routing to be
# restored. This fixes issues reported on the mailing lists, e.g.:
#
# http://marc.theaimsgroup.com/?l=acpi4linux&m=109142999328643&w=2
#
# drivers/acpi/pci_link.c
# 2004/08/02 20:41:45-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org +23 -0
# [ACPI] drivers/acpi/pci_link.c: add acpi_pci_link_resume(), which will be
# called when resuming from a suspend state that needs IRQ routing to be
# restored. This fixes issues reported on the mailing lists, e.g.:
#
# http://marc.theaimsgroup.com/?l=acpi4linux&m=109142999328643&w=2
#
# BitKeeper/etc/ignore
# 2004/08/02 20:41:45-04:00 nbryant-p32f3XyCuykqcZcGjlUOXw@public.gmane.org +2 -0
# Added Module.symvers drivers/acpi/pci_link.c~ to the ignore list
#
diff -Nru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
--- a/drivers/acpi/pci_link.c 2004-08-03 19:41:29 -04:00
+++ b/drivers/acpi/pci_link.c 2004-08-03 19:41:29 -04:00
@@ -29,6 +29,7 @@
* for IRQ management (e.g. start()->_SRS).
*/
+#include <linux/sysdev.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
@@ -84,6 +85,8 @@
struct acpi_pci_link_irq irq;
};
+static int acpi_pci_link_resume (struct acpi_pci_link *link);
+
static struct {
int count;
struct list_head entries;
@@ -695,6 +698,42 @@
static int
+acpi_pci_link_resume (
+ struct acpi_pci_link *link)
+{
+ ACPI_FUNCTION_TRACE("acpi_pci_link_resume");
+
+ if (link->irq.active && link->irq.setonboot)
+ return_VALUE(acpi_pci_link_set(link, link->irq.active));
+ else
+ return_VALUE(0);
+}
+
+
+static int
+irqrouter_resume(
+ struct sys_device *dev)
+{
+ struct list_head *node = NULL;
+ struct acpi_pci_link *link = NULL;
+
+ ACPI_FUNCTION_TRACE("irqrouter_resume");
+
+ list_for_each(node, &acpi_link.entries) {
+
+ link = list_entry(node, struct acpi_pci_link, node);
+ if (!link) {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n"));
+ continue;
+ }
+
+ acpi_pci_link_resume(link);
+ }
+ return_VALUE(0);
+}
+
+
+static int
acpi_pci_link_remove (
struct acpi_device *device,
int type)
@@ -786,11 +825,42 @@
__setup("acpi_irq_balance", acpi_irq_balance_set);
+static struct sysdev_class irqrouter_sysdev_class = {
+ set_kset_name("irqrouter"),
+ .resume = irqrouter_resume,
+};
+
+
+static struct sys_device device_irqrouter = {
+ .id = 0,
+ .cls = &irqrouter_sysdev_class,
+};
+
+
+static int __init irqrouter_init_sysfs(void)
+{
+ int error;
+
+ ACPI_FUNCTION_TRACE("irqrouter_init_sysfs");
+
+ if (acpi_disabled || acpi_noirq)
+ return_VALUE(0);
+
+ error = sysdev_class_register(&irqrouter_sysdev_class);
+ if (!error)
+ error = sysdev_register(&device_irqrouter);
+
+ return_VALUE(error);
+}
+
+device_initcall(irqrouter_init_sysfs);
+
+
static int __init acpi_pci_link_init (void)
{
ACPI_FUNCTION_TRACE("acpi_pci_link_init");
- if (acpi_pci_disabled)
+ if (acpi_disabled || acpi_noirq)
return_VALUE(0);
acpi_link.count = 0;
@@ -798,7 +868,7 @@
if (acpi_bus_register_driver(&acpi_pci_link_driver) < 0)
return_VALUE(-ENODEV);
-
+
return_VALUE(0);
}
next reply other threads:[~2004-08-04 1:42 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-04 1:42 Nathan Bryant [this message]
[not found] ` <41103F22.4090303-p32f3XyCuykqcZcGjlUOXw@public.gmane.org>
2004-08-04 2:59 ` [PATCH][RFC] fix ACPI IRQ routing after S3 suspend Len Brown
2004-08-04 15:57 ` Nathan Bryant
[not found] ` <41110785.4040000-p32f3XyCuykqcZcGjlUOXw@public.gmane.org>
2004-08-04 16:10 ` Nathan Bryant
2004-08-19 20:24 ` [ACPI] " Stefan Dösinger
[not found] ` <200408192224.08271.stefandoesinger-RbZlAiThDcE@public.gmane.org>
2004-08-19 20:54 ` Nathan Bryant
2004-08-20 10:50 ` [ACPI] " Stefan Dösinger
2004-08-20 12:18 ` Nathan Bryant
2004-08-20 16:36 ` Stefan Dösinger
-- strict thread matches above, loose matches on Subject: below --
2004-08-04 2:36 Li, Shaohua
[not found] ` <B44D37711ED29844BEA67908EAF36F037BB9C6-4yWAQGcml65pB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2004-08-04 2:55 ` Len Brown
2004-08-20 19:00 Pallipadi, Venkatesh
2004-08-20 19:42 ` [ACPI] " Nathan Bryant
[not found] ` <41265443.9050800-p32f3XyCuykqcZcGjlUOXw@public.gmane.org>
2004-08-20 20:01 ` Stefan Dösinger
[not found] ` <200408202201.54083.stefandoesinger-RbZlAiThDcE@public.gmane.org>
2004-08-20 20:42 ` Nathan Bryant
[not found] ` <4126621B.3090701-p32f3XyCuykqcZcGjlUOXw@public.gmane.org>
2004-08-20 20:43 ` Nathan Bryant
2004-08-20 20:17 ` Stefan Dösinger
[not found] <412B2E16.1040904@optonline.net>
[not found] ` <20040824123913.GD25947@gamma.logic.tuwien.ac.at>
[not found] ` <20040824123913.GD25947-DqSSrKF0TaySnEC3TeqHn5dqbFPxfnh/@public.gmane.org>
2004-08-24 13:23 ` Nathan Bryant
[not found] ` <20040824142219.GA13607@gamma.logic.tuwien.ac.at>
[not found] ` <20040824142219.GA13607-DqSSrKF0TaySnEC3TeqHn5dqbFPxfnh/@public.gmane.org>
2004-08-24 14:32 ` Nathan Bryant
[not found] ` <412B516B.8030704-p32f3XyCuykqcZcGjlUOXw@public.gmane.org>
2004-08-25 11:19 ` Norbert Preining
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=41103F22.4090303@optonline.net \
--to=nbryant-p32f3xycuykqczcgjluoxw@public.gmane.org \
--cc=acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=shaohua.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=stefandoesinger-RbZlAiThDcE@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