From: Nathan Bryant <nbryant@optonline.net>
To: Len Brown <len.brown@intel.com>
Cc: "ACPI Developers" <acpi-devel@lists.sourceforge.net>,
"Linux Kernel list" <linux-kernel@vger.kernel.org>,
"Shaohua Li" <shaohua.li@intel.com>,
"Stefan Dösinger" <stefandoesinger@gmx.at>
Subject: Re: [ACPI] Re: [PATCH][RFC] fix ACPI IRQ routing after S3 suspend
Date: Wed, 04 Aug 2004 12:10:33 -0400 [thread overview]
Message-ID: <41110A79.40504@optonline.net> (raw)
In-Reply-To: <41110785.4040000@optonline.net>
[-- Attachment #1: Type: text/plain, Size: 128 bytes --]
Nathan Bryant wrote:
>
> Len-
>
> Attached is a respin based on your comments.
One more respin, this just cleans whitespace.
[-- Attachment #2: acpi-fixes.patch2 --]
[-- Type: text/plain, Size: 5647 bytes --]
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2004/08/04 12:05:55-04:00 nbryant@optonline.net
# [ACPI] drivers/acpi/pci_link.c: consistify whitespace
#
# drivers/acpi/pci_link.c
# 2004/08/04 12:05:47-04:00 nbryant@optonline.net +4 -4
# [ACPI] drivers/acpi/pci_link.c: consistify whitespace
#
# ChangeSet
# 2004/08/04 11:32:42-04:00 nbryant@optonline.net
# [ACPI] drivers/acpi/pci_link.c: misc cleanups per suggestions
#
# drivers/acpi/pci_link.c
# 2004/08/04 11:32:33-04:00 nbryant@optonline.net +6 -8
# [ACPI] drivers/acpi/pci_link.c: misc cleanups per suggestions
#
# ChangeSet
# 2004/08/04 10:53:42-04:00 nbryant@optonline.net
# Merge optonline.net:/home/nathan/linux-acpi-test-2.6.8
# into optonline.net:/home/nathan/acpi-fixes
#
# BitKeeper/etc/ignore
# 2004/08/04 10:53:30-04:00 nbryant@optonline.net +1 -2
# auto-union
#
# ChangeSet
# 2004/08/03 19:37:56-04:00 nbryant@optonline.net
# 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@optonline.net +13 -3
# use device_initcall(irqrouter_init_sysfs);
#
# ChangeSet
# 2004/08/03 18:09:20-04:00 nbryant@optonline.net
# fix ACPI_FUNCTION_TRACE("irqrouter_resume");
#
# drivers/acpi/pci_link.c
# 2004/08/03 18:09:12-04:00 nbryant@optonline.net +1 -1
# fix ACPI_FUNCTION_TRACE("irqrouter_resume");
#
# ChangeSet
# 2004/08/03 18:03:39-04:00 nbryant@optonline.net
# 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@optonline.net +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@optonline.net
# [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@optonline.net +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@optonline.net +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-04 12:06:33 -04:00
+++ b/drivers/acpi/pci_link.c 2004-08-04 12:06:33 -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>
@@ -71,7 +72,7 @@
u8 active; /* Current IRQ */
u8 edge_level; /* All IRQs */
u8 active_high_low; /* All IRQs */
- u8 setonboot;
+ u8 initialized;
u8 resource_type;
u8 possible_count;
u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
@@ -517,7 +518,7 @@
ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
- if (link->irq.setonboot)
+ if (link->irq.initialized)
return_VALUE(0);
/*
@@ -571,7 +572,7 @@
acpi_device_bid(link->device), link->irq.active);
}
- link->irq.setonboot = 1;
+ link->irq.initialized = 1;
return_VALUE(0);
}
@@ -695,6 +696,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.initialized)
+ 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 +823,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_noirq)
return_VALUE(0);
acpi_link.count = 0;
next prev parent reply other threads:[~2004-08-04 16:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-04 1:42 [PATCH][RFC] fix ACPI IRQ routing after S3 suspend Nathan Bryant
2004-08-04 2:59 ` Len Brown
2004-08-04 15:57 ` Nathan Bryant
2004-08-04 16:10 ` Nathan Bryant [this message]
2004-08-19 20:24 ` [ACPI] " Stefan Dösinger
2004-08-19 20:54 ` Nathan Bryant
2004-08-20 10:50 ` Stefan Dösinger
2004-08-20 12:18 ` Nathan Bryant
2004-08-20 16:36 ` Stefan Dösinger
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=41110A79.40504@optonline.net \
--to=nbryant@optonline.net \
--cc=acpi-devel@lists.sourceforge.net \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=shaohua.li@intel.com \
--cc=stefandoesinger@gmx.at \
/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