* RE: [Patch]fix EC GPE context error
[not found] ` <571ACEFD467F7749BC50E0A98C17CDD8E84DC4-4yWAQGcml64gGBtAFL8yw7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2003-11-07 4:31 ` Sérgio Monteiro Basto
[not found] ` <1068179499.3555.26.camel-4/PLUo9XfK/yXfm4dIG/yWZHpeb/A1Y/@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Sérgio Monteiro Basto @ 2003-11-07 4:31 UTC (permalink / raw)
To: Li, Shaohua; +Cc: acpi-devel
Hi
Sorry to say this, but laptop hangs again with this patch in pre-9.
when usb CDCEthernet, was gone down.
The facts are:
With 22-ac4 never hangs, I use this kernel, for my normally work, since
this release (2003-09-21) and I never had this kind of problems.
I just began use usb CDCEthernet with kernel 4.22, so I don't know if it
hangs or not before.
so I know the problem is began in 23-preX, (I think after pre7) or is
not been corrected like it does in ac4.
If the first choice, what I can test more?
If the second choice, could be one Andrew de Quincey patch's, that is
not applied.
Well I just don't resend the patch because I don't want make more
confusions , and I don't understand if you try (force) to not use the
patch. If Alan had applied it , I think that can be trustable. Not more
than that.
thanks
On Thu, 2003-11-06 at 02:40, Li, Shaohua wrote:
>
> Many thanks you let me know the result.
>
> Thanks,
> Shaohua
>
>
> > -----Original Message-----
> > From: Sérgio Monteiro Basto [mailto:sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org]
> > Sent: 2003年11月6日 11:20
> > To: Li, Shaohua
> > Cc: acpi-devel
> > Subject: RE: [ACPI] [Patch]fix EC GPE context error
> >
> > Hi,
> > The first tests seems ok, in 2.4.23-pre9, I had problems without this
> > patch, my laptop had hang again, when my usb cable modem has gone down
> > and I turn it off.
> > Now, with this patch, don't had hang anymore.
> > I will test it more time, if I have a problems, I will tell you.
> >
> > thanks
> >
> > On Mon, 2003-11-03 at 13:29, Li, Shaohua wrote:
> > >
> > > Hi,
> > > I have attached a patch against 2.4 in bugzilla 1171, please help
> > test. Many thanks.
> > >
> > > Thanks,
> > > Shaohua
> > >
> > >
> > > > -----Original Message-----
> > > > From: Sérgio Monteiro Basto [mailto:sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org]
> > > > Sent: 2003年11月3日 3:30
> > > > To: Li, Shaohua
> > > > Cc: ACPI Developers
> > > > Subject: Re: [ACPI] [Patch]fix EC GPE context error
> > > >
> > > > Hi
> > > > I can't apply this patch to 2.23-pre9 neither pre8 or pre7 .
> > > > I got one big rejected file (on osl.c I think)
> > > >
> > > > thanks
> > > >
> > > > On Fri, 2003-10-31 at 08:42, Li, Shaohua wrote:
> > > > > Hi,
> > > > >
> > > > > 2.6-test9 has a regression. Specifically, the EC GPE context
> > fix
> > > > > has error. This new patch is to replace the old one. The patch is
> > > > > against 2.6-test7, and has passed under T40 and ASUS M2400. You can
> > find
> > > > > detail info in osdl bugzilla 1171. Please help test.
> > > > >
> > > > >
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Shaohua
> > > > >
> > > > >
> > > > >
> > > > --
> > > > SérgioMB
> > > > email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
> > > >
> > > > Who gives me one shell, give me everything.
> > >
> > --
> > SérgioMB
> > email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
> >
> > Who gives me one shell, give me everything.
>
--
SérgioMB
email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
Who gives me one shell, give me everything.
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] resend Andrew de Quincey patch, that resolve hangs problems
[not found] ` <1068179499.3555.26.camel-4/PLUo9XfK/yXfm4dIG/yWZHpeb/A1Y/@public.gmane.org>
@ 2003-11-10 23:15 ` Sérgio Monteiro Basto
[not found] ` <1068531948.2682.1076.camel@dhcppc4>
0 siblings, 1 reply; 4+ messages in thread
From: Sérgio Monteiro Basto @ 2003-11-10 23:15 UTC (permalink / raw)
To: Sérgio Monteiro Basto; +Cc: Li, Shaohua, acpi-devel
[-- Attachment #1: Type: text/plain, Size: 4503 bytes --]
Hi
After the last experience with kernel 2.4.23-pre9, I test this patch and
resolves the problem above.
And I believe that resolve various problems with irqs.
My tests confirm that I need this patch for my machine works well.
Yesterday my ISP had many problems and my cable modem has gone down
several times and my laptop never hangs.
_Note: This patch is already applied.in kernel 2.4.22-ac4.
thanks
On Fri, 2003-11-07 at 04:31, Sérgio Monteiro Basto wrote:
> Hi
> Sorry to say this, but laptop hangs again with this patch in pre-9.
> when usb CDCEthernet, was gone down.
> The facts are:
> With 22-ac4 never hangs, I use this kernel, for my normally work, since
> this release (2003-09-21) and I never had this kind of problems.
> I just began use usb CDCEthernet with kernel 4.22, so I don't know if it
> hangs or not before.
> so I know the problem is began in 23-preX, (I think after pre7) or is
> not been corrected like it does in ac4.
> If the first choice, what I can test more?
> If the second choice, could be one Andrew de Quincey patch's, that is
> not applied.
> Well I just don't resend the patch because I don't want make more
> confusions , and I don't understand if you try (force) to not use the
> patch. If Alan had applied it , I think that can be trustable. Not more
> than that.
>
> thanks
>
> On Thu, 2003-11-06 at 02:40, Li, Shaohua wrote:
> >
> > Many thanks you let me know the result.
> >
> > Thanks,
> > Shaohua
> >
> >
> > > -----Original Message-----
> > > From: Sérgio Monteiro Basto [mailto:sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org]
> > > Sent: 2003年11月6日 11:20
> > > To: Li, Shaohua
> > > Cc: acpi-devel
> > > Subject: RE: [ACPI] [Patch]fix EC GPE context error
> > >
> > > Hi,
> > > The first tests seems ok, in 2.4.23-pre9, I had problems without this
> > > patch, my laptop had hang again, when my usb cable modem has gone down
> > > and I turn it off.
> > > Now, with this patch, don't had hang anymore.
> > > I will test it more time, if I have a problems, I will tell you.
> > >
> > > thanks
> > >
> > > On Mon, 2003-11-03 at 13:29, Li, Shaohua wrote:
> > > >
> > > > Hi,
> > > > I have attached a patch against 2.4 in bugzilla 1171, please help
> > > test. Many thanks.
> > > >
> > > > Thanks,
> > > > Shaohua
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Sérgio Monteiro Basto [mailto:sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org]
> > > > > Sent: 2003年11月3日 3:30
> > > > > To: Li, Shaohua
> > > > > Cc: ACPI Developers
> > > > > Subject: Re: [ACPI] [Patch]fix EC GPE context error
> > > > >
> > > > > Hi
> > > > > I can't apply this patch to 2.23-pre9 neither pre8 or pre7 .
> > > > > I got one big rejected file (on osl.c I think)
> > > > >
> > > > > thanks
> > > > >
> > > > > On Fri, 2003-10-31 at 08:42, Li, Shaohua wrote:
> > > > > > Hi,
> > > > > >
> > > > > > 2.6-test9 has a regression. Specifically, the EC GPE context
> > > fix
> > > > > > has error. This new patch is to replace the old one. The patch is
> > > > > > against 2.6-test7, and has passed under T40 and ASUS M2400. You can
> > > find
> > > > > > detail info in osdl bugzilla 1171. Please help test.
> > > > > >
> > > > > >
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Shaohua
> > > > > >
> > > > > >
> > > > > >
> > > > > --
> > > > > SérgioMB
> > > > > email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
> > > > >
> > > > > Who gives me one shell, give me everything.
> > > >
> > > --
> > > SérgioMB
> > > email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
> > >
> > > Who gives me one shell, give me everything.
> >
> --
> SérgioMB
> email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
>
> Who gives me one shell, give me everything.
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: SF.net Giveback Program.
> Does SourceForge.net help you be more productive? Does it
> help you create better code? SHARE THE LOVE, and help us help
> YOU! Click Here: http://sourceforge.net/donate/
> _______________________________________________
> Acpi-devel mailing list
> Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/acpi-devel
--
SérgioMB
email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
Who gives me one shell, give me everything.
[-- Attachment #2: acpi-picmode-6.patch --]
[-- Type: text/x-patch, Size: 25946 bytes --]
diff -Nur linux-2.4.23-pre6.orig/arch/i386/kernel/Makefile linux-2.4.23-pre6/arch/i386/kernel/Makefile
--- linux-2.4.23-pre6.orig/arch/i386/kernel/Makefile Wed Oct 8 00:51:23 2003
+++ linux-2.4.23-pre6/arch/i386/kernel/Makefile Wed Oct 8 03:56:42 2003
@@ -36,7 +36,7 @@
obj-$(CONFIG_X86_CPUID) += cpuid.o
obj-$(CONFIG_MICROCODE) += microcode.o
obj-$(CONFIG_APM) += apm.o
-obj-$(CONFIG_ACPI_BOOT) += acpi.o
+obj-$(CONFIG_ACPI_BOOT) += acpi.o pic.o
obj-$(CONFIG_ACPI_SLEEP) += acpi_wakeup.o
obj-$(CONFIG_SMP) += smp.o smpboot.o trampoline.o
obj-$(CONFIG_X86_LOCAL_APIC) += mpparse.o apic.o nmi.o
diff -Nur linux-2.4.23-pre6.orig/arch/i386/kernel/mpparse.c linux-2.4.23-pre6/arch/i386/kernel/mpparse.c
--- linux-2.4.23-pre6.orig/arch/i386/kernel/mpparse.c Wed Oct 8 00:51:23 2003
+++ linux-2.4.23-pre6/arch/i386/kernel/mpparse.c Wed Oct 8 03:56:42 2003
@@ -1291,10 +1291,11 @@
#ifdef CONFIG_ACPI_PCI
-void __init mp_parse_prt (void)
+int __init mp_parse_prt (void)
{
struct list_head *node = NULL;
struct acpi_prt_entry *entry = NULL;
+ struct acpi_prt_list *prt_list = NULL;
int ioapic = -1;
int ioapic_pin = 0;
int irq = 0;
@@ -1302,16 +1303,31 @@
int edge_level = 0;
int active_high_low = 0;
+ /* Get the current PRT */
+ prt_list = acpi_pci_get_prt_list();
+
+ if (!prt_list->count) {
+ acpi_pci_destroy_prt_list(prt_list);
+ printk(KERN_WARNING "ACPI tables contain no IO-APIC PCI IRQ "
+ "routing entries\n");
+ return_VALUE(-ENODEV);
+ }
+
/*
* Parsing through the PCI Interrupt Routing Table (PRT) and program
* routing for all entries.
*/
- list_for_each(node, &acpi_prt.entries) {
+ list_for_each(node, &prt_list->entries) {
entry = list_entry(node, struct acpi_prt_entry, node);
/* Need to get irq for dynamic entry */
if (entry->link.handle) {
irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index, &edge_level, &active_high_low);
+ if (irq < 0) {
+ acpi_pci_destroy_prt_list(prt_list);
+ return -ENODEV;
+ }
+
if (!irq)
continue;
}
@@ -1364,8 +1380,11 @@
mp_ioapic_routing[ioapic].apic_id, ioapic_pin,
entry->irq);
}
-
- return;
+
+ /* if we get here, the PRT was fine. commit it */
+ acpi_pci_commit_prt_list(prt_list);
+
+ return 0;
}
#endif /*CONFIG_ACPI_PCI*/
diff -Nur linux-2.4.23-pre6.orig/arch/i386/kernel/pic.c linux-2.4.23-pre6/arch/i386/kernel/pic.c
--- linux-2.4.23-pre6.orig/arch/i386/kernel/pic.c Thu Jan 1 00:00:00 1970
+++ linux-2.4.23-pre6/arch/i386/kernel/pic.c Wed Oct 8 03:56:42 2003
@@ -0,0 +1,102 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 2003 Andrew de Quincey - All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
+ * USA; either version 2 of the License, or (at your option) any later
+ * version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include <linux/mm.h>
+#include <linux/irq.h>
+#include <linux/init.h>
+#include <linux/acpi.h>
+#include <linux/delay.h>
+#include <linux/config.h>
+#include <linux/bootmem.h>
+#include <linux/smp_lock.h>
+#include <linux/kernel_stat.h>
+
+#include <asm/acpi.h>
+
+#ifdef CONFIG_ACPI_PCI
+
+extern void eisa_set_level_irq(unsigned int irq);
+
+int __init pic_parse_prt (void)
+{
+ struct list_head *node = NULL;
+ struct acpi_prt_entry *entry = NULL;
+ struct acpi_prt_list *prt_list = NULL;
+ int edge_level = 0;
+ int active_high_low = 0;
+ int irq = 0;
+ int programmed[16];
+
+ /* Get the current PRT */
+ prt_list = acpi_pci_get_prt_list();
+
+ if (!prt_list->count) {
+ acpi_pci_destroy_prt_list(prt_list);
+ printk(KERN_WARNING "ACPI tables contain no PIC PCI IRQ "
+ "routing entries\n");
+ return_VALUE(-ENODEV);
+ }
+
+ /* mark all IRQs as unprogrammed */
+ memset(programmed, 0, sizeof(programmed));
+
+ /*
+ * Parsing through the PCI Interrupt Routing Table (PRT) and program
+ * IRQs if necessary.
+ */
+ list_for_each(node, &prt_list->entries) {
+ entry = list_entry(node, struct acpi_prt_entry, node);
+
+ /* Need to get irq for dynamic entry */
+ if (entry->link.handle) {
+ irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index, &edge_level, &active_high_low);
+ if (irq < 0) {
+ acpi_pci_destroy_prt_list(prt_list);
+ return -ENODEV;
+ }
+ if (!irq)
+ continue;
+ }
+
+ /* sanity check + update entry */
+ if ((irq < 0) || (irq > 15)) {
+ printk(KERN_ERR "Invalid IRQ (%i) passed to PIC programming code\n", irq);
+ entry->irq = 0;
+ continue;
+ }
+ entry->irq = irq;
+
+ /* check if it has already been dealt with */
+ if (programmed[irq]) {
+ printk(KERN_DEBUG "PIC: IRQ (%i) already programmed\n", irq);
+ continue;
+ }
+ programmed[irq] = 1;
+
+ /* program it */
+ if (edge_level) {
+ eisa_set_level_irq(irq);
+ }
+
+ printk(KERN_DEBUG "%02x:%02x:%02x[%c] -> IRQ %d Mode %d Trigger %d\n",
+ entry->id.segment, entry->id.bus,
+ entry->id.device, ('A' + entry->pin),
+ entry->irq, edge_level, active_high_low);
+ }
+
+ /* if we get here, the PRT was fine. commit it */
+ acpi_pci_commit_prt_list(prt_list);
+
+ return 0;
+}
+
+#endif /*CONFIG_ACPI_PCI*/
diff -Nur linux-2.4.23-pre6.orig/arch/x86_64/kernel/Makefile linux-2.4.23-pre6/arch/x86_64/kernel/Makefile
--- linux-2.4.23-pre6.orig/arch/x86_64/kernel/Makefile Mon Aug 25 12:44:40 2003
+++ linux-2.4.23-pre6/arch/x86_64/kernel/Makefile Wed Oct 8 03:56:42 2003
@@ -37,7 +37,7 @@
obj-$(CONFIG_GART_IOMMU) += pci-gart.o aperture.o
obj-$(CONFIG_DUMMY_IOMMU) += pci-nommu.o
obj-$(CONFIG_MCE) += bluesmoke.o
-obj-$(CONFIG_ACPI) += acpi.o
+obj-$(CONFIG_ACPI) += acpi.o pic.o
obj-$(CONFIG_ACPI_SLEEP) += acpi_wakeup.o suspend.o
diff -Nur linux-2.4.23-pre6.orig/arch/x86_64/kernel/mpparse.c linux-2.4.23-pre6/arch/x86_64/kernel/mpparse.c
--- linux-2.4.23-pre6.orig/arch/x86_64/kernel/mpparse.c Wed Oct 8 00:51:23 2003
+++ linux-2.4.23-pre6/arch/x86_64/kernel/mpparse.c Wed Oct 8 03:56:42 2003
@@ -955,6 +955,7 @@
{
struct list_head *node = NULL;
struct acpi_prt_entry *entry = NULL;
+ struct acpi_prt_list *prt_list = NULL;
int vector = 0;
int ioapic = -1;
int ioapic_pin = 0;
@@ -963,16 +964,29 @@
int edge_level = 0;
int active_high_low = 0;
+ /* Get the current PRT */
+ prt_list = acpi_pci_get_prt_list();
+ if (!prt_list->count) {
+ acpi_pci_destroy_prt_list(prt_list);
+ printk(KERN_WARNING "ACPI tables contain no IO-APIC PCI IRQ "
+ "routing entries\n");
+ return_VALUE(-ENODEV);
+ }
+
/*
* Parsing through the PCI Interrupt Routing Table (PRT) and program
* routing for all static (IOAPIC-direct) entries.
*/
- list_for_each(node, &acpi_prt.entries) {
+ list_for_each(node, &prt_list->entries)
entry = list_entry(node, struct acpi_prt_entry, node);
/* Need to get irq for dynamic entry */
if (entry->link.handle) {
irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index, &edge_level, &active_high_low);
+ if (irq < 0) {
+ acpi_pci_destroy_prt_list(prt_list);
+ return -ENODEV;
+ }
if (!irq)
continue;
} else {
@@ -1026,8 +1040,11 @@
mp_ioapic_routing[ioapic].apic_id, ioapic_pin, vector,
entry->irq);
}
-
- return;
+
+ /* if we get here, the PRT was fine. commit it */
+ acpi_pci_commit_prt_list(prt_list);
+
+ return 0;
}
#endif /*CONFIG_ACPI_PCI*/
diff -Nur linux-2.4.23-pre6.orig/arch/x86_64/kernel/pic.c linux-2.4.23-pre6/arch/x86_64/kernel/pic.c
--- linux-2.4.23-pre6.orig/arch/x86_64/kernel/pic.c Thu Jan 1 00:00:00 1970
+++ linux-2.4.23-pre6/arch/x86_64/kernel/pic.c Wed Oct 8 03:56:42 2003
@@ -0,0 +1,102 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 2003 Andrew de Quincey - All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
+ * USA; either version 2 of the License, or (at your option) any later
+ * version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include <linux/mm.h>
+#include <linux/irq.h>
+#include <linux/init.h>
+#include <linux/acpi.h>
+#include <linux/delay.h>
+#include <linux/config.h>
+#include <linux/bootmem.h>
+#include <linux/smp_lock.h>
+#include <linux/kernel_stat.h>
+
+#include <asm/acpi.h>
+
+#ifdef CONFIG_ACPI_PCI
+
+extern void eisa_set_level_irq(unsigned int irq);
+
+int __init pic_parse_prt (void)
+{
+ struct list_head *node = NULL;
+ struct acpi_prt_entry *entry = NULL;
+ struct acpi_prt_list *prt_list = NULL;
+ int edge_level = 0;
+ int active_high_low = 0;
+ int irq = 0;
+ int programmed[16];
+
+ /* Get the current PRT */
+ prt_list = acpi_pci_get_prt_list();
+
+ if (!prt_list->count) {
+ acpi_pci_destroy_prt_list(prt_list);
+ printk(KERN_WARNING "ACPI tables contain no PIC PCI IRQ "
+ "routing entries\n");
+ return_VALUE(-ENODEV);
+ }
+
+ /* mark all IRQs as unprogrammed */
+ memset(programmed, 0, sizeof(programmed));
+
+ /*
+ * Parsing through the PCI Interrupt Routing Table (PRT) and program
+ * IRQs if necessary.
+ */
+ list_for_each(node, &prt_list->entries) {
+ entry = list_entry(node, struct acpi_prt_entry, node);
+
+ /* Need to get irq for dynamic entry */
+ if (entry->link.handle) {
+ irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index, &edge_level, &active_high_low);
+ if (irq < 0) {
+ acpi_pci_destroy_prt_list(prt_list);
+ return -ENODEV;
+ }
+ if (!irq)
+ continue;
+ }
+
+ /* sanity check + update entry */
+ if ((irq < 0) || (irq > 15)) {
+ printk(KERN_ERR "Invalid IRQ (%i) passed to PIC programming code\n", irq);
+ entry->irq = 0;
+ continue;
+ }
+ entry->irq = irq;
+
+ /* check if it has already been dealt with */
+ if (programmed[irq]) {
+ printk(KERN_DEBUG "PIC: IRQ (%i) already programmed\n", irq);
+ continue;
+ }
+ programmed[irq] = 1;
+
+ /* program it */
+ if (edge_level) {
+ eisa_set_level_irq(irq);
+ }
+
+ printk(KERN_DEBUG "%02x:%02x:%02x[%c] -> IRQ %d Mode %d Trigger %d\n",
+ entry->id.segment, entry->id.bus,
+ entry->id.device, ('A' + entry->pin),
+ entry->irq, edge_level, active_high_low);
+ }
+
+ /* if we get here, the PRT was fine. commit it */
+ acpi_pci_commit_prt_list(prt_list);
+
+ return 0;
+}
+
+#endif /*CONFIG_ACPI_PCI*/
diff -Nur linux-2.4.23-pre6.orig/drivers/acpi/bus.c linux-2.4.23-pre6/drivers/acpi/bus.c
--- linux-2.4.23-pre6.orig/drivers/acpi/bus.c Wed Oct 8 00:51:23 2003
+++ linux-2.4.23-pre6/drivers/acpi/bus.c Wed Oct 8 03:56:42 2003
@@ -1802,7 +1802,7 @@
Initialization/Cleanup
-------------------------------------------------------------------------- */
-static int __init
+int
acpi_bus_init_irq (void)
{
acpi_status status = AE_OK;
diff -Nur linux-2.4.23-pre6.orig/drivers/acpi/pci_irq.c linux-2.4.23-pre6/drivers/acpi/pci_irq.c
--- linux-2.4.23-pre6.orig/drivers/acpi/pci_irq.c Wed Oct 8 00:51:24 2003
+++ linux-2.4.23-pre6/drivers/acpi/pci_irq.c Wed Oct 8 03:56:42 2003
@@ -50,7 +50,22 @@
#define PREFIX "PCI: "
-struct acpi_prt_list acpi_prt;
+struct acpi_prt_list* acpi_prt = NULL;
+
+struct acpi_prt_ref {
+ struct list_head node;
+ struct acpi_device *device;
+ acpi_handle handle;
+ int segment;
+ int bus;
+};
+
+struct acpi_prt_ref_list {
+ int count;
+ struct list_head entries;
+};
+
+struct acpi_prt_ref_list acpi_prt_ref_list;
#ifdef CONFIG_X86
extern void eisa_set_level_irq(unsigned int irq);
@@ -73,16 +88,22 @@
ACPI_FUNCTION_TRACE("acpi_pci_irq_find_prt_entry");
- if (!acpi_prt.count)
+ if (!acpi_prt->count)
return_PTR(NULL);
+ /* ensure we're not called before the routing table has been determined */
+ if (acpi_prt == NULL) {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Called before acpi_prt determined"));
+ return_PTR(NULL);
+ }
+
/*
* Parse through all PRT entries looking for a match on the specified
* PCI device's segment, bus, device, and pin (don't care about func).
*
* TBD: Acquire/release lock
*/
- list_for_each(node, &acpi_prt.entries) {
+ list_for_each(node, &acpi_prt->entries) {
entry = list_entry(node, struct acpi_prt_entry, node);
if ((segment == entry->id.segment)
&& (bus == entry->id.bus)
@@ -98,6 +119,7 @@
static int
acpi_pci_irq_add_entry (
+ struct acpi_prt_list* prt_list,
acpi_handle handle,
int segment,
int bus,
@@ -154,12 +176,115 @@
('A' + entry->pin), prt->source, entry->link.index));
/* TBD: Acquire/release lock */
- list_add_tail(&entry->node, &acpi_prt.entries);
- acpi_prt.count++;
+ list_add_tail(&entry->node, &prt_list->entries);
+ prt_list->count++;
return_VALUE(0);
}
+struct acpi_prt_list*
+acpi_pci_get_prt_list (void)
+{
+ acpi_status status = AE_OK;
+ struct acpi_buffer buffer = {0, NULL};
+ struct acpi_pci_routing_table *prt = NULL;
+ struct acpi_pci_routing_table *entry = NULL;
+ struct acpi_prt_list *prt_list = NULL;
+ struct acpi_prt_ref *prt_ref_entry = NULL;
+ struct list_head *node = NULL;
+
+ ACPI_FUNCTION_TRACE("acpi_pci_irq_get_prt_list");
+
+ /* Create a brand new acpi_prt_list */
+ prt_list = kmalloc(sizeof(struct acpi_prt_list), GFP_KERNEL);
+ if (!prt_list)
+ return_PTR(NULL);
+ memset(prt_list, 0, sizeof(struct acpi_prt_list));
+
+ prt_list->count = 0;
+ INIT_LIST_HEAD(&prt_list->entries);
+
+ /* iterate over all entries in acpi_prt_ref_list, extracting the current _PRT entries */
+ list_for_each(node, &acpi_prt_ref_list.entries) {
+ prt_ref_entry = list_entry(node, struct acpi_prt_ref, node);
+
+ /*
+ * Evaluate this _PRT and add its entries to our local list (prt_list).
+ */
+
+ buffer.length = 0;
+ buffer.pointer = NULL;
+ status = acpi_get_irq_routing_table(prt_ref_entry->handle, &buffer);
+ if (status != AE_BUFFER_OVERFLOW) {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PRT [%s]\n",
+ acpi_format_exception(status)));
+ kfree(prt_list);
+ return_PTR(NULL);
+ }
+
+ prt = kmalloc(buffer.length, GFP_KERNEL);
+ if (!prt) {
+ kfree(prt_list);
+ return_VALUE(NULL);
+ }
+ memset(prt, 0, buffer.length);
+ buffer.pointer = prt;
+
+ status = acpi_get_irq_routing_table(prt_ref_entry->handle, &buffer);
+ if (ACPI_FAILURE(status)) {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PRT [%s]\n",
+ acpi_format_exception(status)));
+ kfree(buffer.pointer);
+ kfree(prt_list);
+ return_PTR(NULL);
+ }
+
+ entry = prt;
+
+ while (entry && (entry->length > 0)) {
+ acpi_pci_irq_add_entry(prt_list, prt_ref_entry->handle, prt_ref_entry->segment,
+ prt_ref_entry->bus, entry);
+ entry = (struct acpi_pci_routing_table *)
+ ((unsigned long) entry + entry->length);
+ }
+
+ kfree(prt);
+ }
+
+ return_PTR(prt_list);
+}
+
+int
+acpi_pci_destroy_prt_list (struct acpi_prt_list* prt_list) {
+ struct list_head *node = NULL;
+ struct list_head *tmp = NULL;
+ struct acpi_prt_entry *entry = NULL;
+
+ ACPI_FUNCTION_TRACE("acpi_pci_irq_destroy_prt_list");
+
+ list_for_each_safe(node, tmp, &prt_list->entries) {
+ entry = list_entry(node, struct acpi_prt_entry, node);
+ list_del(node);
+ kfree(entry);
+ }
+ kfree(prt_list);
+
+ return_VALUE(0);
+}
+
+int
+acpi_pci_commit_prt_list (struct acpi_prt_list* prt_list) {
+
+ ACPI_FUNCTION_TRACE("acpi_pci_irq_commit_prt_list");
+
+ if (acpi_prt != NULL) {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Attempt to commit acpi_prt twice\n"));
+ return_VALUE(-ENODEV);
+ }
+
+ acpi_prt = prt_list;
+ return_VALUE(0);
+}
int
acpi_pci_irq_add_prt (
@@ -167,21 +292,20 @@
int segment,
int bus)
{
- acpi_status status = AE_OK;
- char pathname[ACPI_PATHNAME_MAX] = {0};
- struct acpi_buffer buffer = {0, NULL};
- struct acpi_pci_routing_table *prt = NULL;
- struct acpi_pci_routing_table *entry = NULL;
- static int first_time = 1;
+ static int first_time = 1;
+ struct acpi_prt_ref *entry = NULL;
+ struct acpi_buffer buffer = {0, NULL};
+ char pathname[ACPI_PATHNAME_MAX] = {0};
ACPI_FUNCTION_TRACE("acpi_pci_irq_add_prt");
if (first_time) {
- acpi_prt.count = 0;
- INIT_LIST_HEAD(&acpi_prt.entries);
+ acpi_prt_ref_list.count = 0;
+ INIT_LIST_HEAD(&acpi_prt_ref_list.entries);
first_time = 0;
}
+
/*
* NOTE: We're given a 'handle' to the _PRT object's parent device
* (either a PCI root bridge or PCI-PCI bridge).
@@ -194,42 +318,19 @@
printk(KERN_DEBUG "ACPI: PCI Interrupt Routing Table [%s._PRT]\n",
pathname);
- /*
- * Evaluate this _PRT and add its entries to our global list (acpi_prt).
- */
-
- buffer.length = 0;
- buffer.pointer = NULL;
- status = acpi_get_irq_routing_table(handle, &buffer);
- if (status != AE_BUFFER_OVERFLOW) {
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PRT [%s]\n",
- acpi_format_exception(status)));
- return_VALUE(-ENODEV);
- }
-
- prt = kmalloc(buffer.length, GFP_KERNEL);
- if (!prt)
+
+
+ entry = kmalloc(sizeof(struct acpi_prt_ref), GFP_KERNEL);
+ if (!entry)
return_VALUE(-ENOMEM);
- memset(prt, 0, buffer.length);
- buffer.pointer = prt;
-
- status = acpi_get_irq_routing_table(handle, &buffer);
- if (ACPI_FAILURE(status)) {
- ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PRT [%s]\n",
- acpi_format_exception(status)));
- kfree(buffer.pointer);
- return_VALUE(-ENODEV);
- }
+ memset(entry, 0, sizeof(struct acpi_prt_ref));
+
+ entry->handle = handle;
+ entry->segment = segment;
+ entry->bus = bus;
- entry = prt;
-
- while (entry && (entry->length > 0)) {
- acpi_pci_irq_add_entry(handle, segment, bus, entry);
- entry = (struct acpi_pci_routing_table *)
- ((unsigned long) entry + entry->length);
- }
-
- kfree(prt);
+ list_add_tail(&entry->node, &acpi_prt_ref_list.entries);
+ acpi_prt_ref_list.count++;
return_VALUE(0);
}
@@ -390,6 +491,15 @@
}
+static void __init acpi_irq_pic_mode(void)
+{
+ acpi_irq_model = ACPI_IRQ_MODEL_PIC;
+ acpi_bus_init_irq();
+
+ /* recalculate penalties */
+ acpi_pci_link_calc_penalties();
+}
+
int __init
acpi_pci_irq_init (void)
{
@@ -397,26 +507,25 @@
ACPI_FUNCTION_TRACE("acpi_pci_irq_init");
- if (!acpi_prt.count) {
- printk(KERN_WARNING PREFIX "ACPI tables contain no PCI IRQ "
- "routing entries\n");
- return_VALUE(-ENODEV);
- }
-
- /* Make sure all link devices have a valid IRQ. */
- if (acpi_pci_link_check()) {
- return_VALUE(-ENODEV);
- }
+ /* Calculate IRQ penalties for each link device */
+ acpi_pci_link_calc_penalties();
#ifdef CONFIG_X86_IO_APIC
/* Program IOAPICs using data from PRT entries. */
if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC)
- mp_parse_prt();
+ if (mp_parse_prt())
+ acpi_irq_pic_mode();
#endif
#ifdef CONFIG_IOSAPIC
if (acpi_irq_model == ACPI_IRQ_MODEL_IOSAPIC)
- iosapic_parse_prt();
+ if (iosapic_parse_prt())
+ return_VALUE(-ENODEV);
#endif
+
+ /* This one is last, as a catchall */
+ if (acpi_irq_model == ACPI_IRQ_MODEL_PIC)
+ if (pic_parse_prt())
+ return_VALUE(-ENODEV);
pci_for_each_dev(dev)
acpi_pci_irq_enable(dev);
diff -Nur linux-2.4.23-pre6.orig/drivers/acpi/pci_link.c linux-2.4.23-pre6/drivers/acpi/pci_link.c
--- linux-2.4.23-pre6.orig/drivers/acpi/pci_link.c Wed Oct 8 00:51:24 2003
+++ linux-2.4.23-pre6/drivers/acpi/pci_link.c Wed Oct 8 03:56:42 2003
@@ -444,22 +444,25 @@
* as 'best bets' for PCI use.
*/
-static int acpi_irq_penalty[ACPI_MAX_IRQS] = {
+static int acpi_irq_default_penalty[ACPI_MAX_IRQS] = {
1000000, 1000000, 1000000, 10000,
10000, 0, 10000, 10000,
10000, 0, 0, 0,
10000, 100000, 100000, 100000,
};
+static int acpi_irq_penalty[ACPI_MAX_IRQS] = { 0 };
int
-acpi_pci_link_check (void)
+acpi_pci_link_calc_penalties (void)
{
struct list_head *node = NULL;
struct acpi_pci_link *link = NULL;
int i = 0;
- ACPI_FUNCTION_TRACE("acpi_pci_link_check");
+ ACPI_FUNCTION_TRACE("acpi_pci_calc_penalties");
+
+ memcpy(&acpi_irq_penalty, &acpi_irq_default_penalty, sizeof(acpi_irq_default_penalty));
/*
* Update penalties to facilitate IRQ balancing.
@@ -471,6 +474,7 @@
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n"));
continue;
}
+ link->irq.setonboot = 0;
if (link->irq.active)
acpi_irq_penalty[link->irq.active] += 100;
@@ -512,7 +516,7 @@
/* Attempt to enable the link device at this IRQ. */
if (acpi_pci_link_set(link, irq)) {
- printk(PREFIX "Unable to set IRQ for %s [%s] (likely buggy ACPI BIOS). Aborting ACPI-based IRQ routing. Try pci=noacpi or acpi=off\n",
+ printk(PREFIX "Unable to set IRQ for %s [%s] (likely buggy ACPI BIOS, please report to acpi-devel!)\n",
acpi_device_name(link->device),
acpi_device_bid(link->device));
return_VALUE(-ENODEV);
diff -Nur linux-2.4.23-pre6.orig/include/acpi/acpi_bus.h linux-2.4.23-pre6/include/acpi/acpi_bus.h
--- linux-2.4.23-pre6.orig/include/acpi/acpi_bus.h Mon Aug 25 12:44:43 2003
+++ linux-2.4.23-pre6/include/acpi/acpi_bus.h Wed Oct 8 03:56:42 2003
@@ -309,6 +309,7 @@
int acpi_init (void);
void acpi_exit (void);
+int acpi_bus_init_irq (void);
#endif /*CONFIG_ACPI_BUS*/
diff -Nur linux-2.4.23-pre6.orig/include/acpi/acpi_drivers.h linux-2.4.23-pre6/include/acpi/acpi_drivers.h
--- linux-2.4.23-pre6.orig/include/acpi/acpi_drivers.h Mon Aug 25 12:44:43 2003
+++ linux-2.4.23-pre6/include/acpi/acpi_drivers.h Wed Oct 8 03:56:42 2003
@@ -26,6 +26,9 @@
#ifndef __ACPI_DRIVERS_H__
#define __ACPI_DRIVERS_H__
+/* forward definitions */
+struct acpi_prt_list;
+
#include <linux/acpi.h>
#include "acpi_bus.h"
@@ -173,7 +176,7 @@
#define ACPI_PCI_LINK_FILE_INFO "info"
#define ACPI_PCI_LINK_FILE_STATUS "state"
-int acpi_pci_link_check (void);
+int acpi_pci_link_calc_penalties (void);
int acpi_pci_link_get_irq (acpi_handle handle, int index, int* edge_level, int* active_high_low);
int acpi_pci_link_init (void);
void acpi_pci_link_exit (void);
@@ -181,6 +184,9 @@
/* ACPI PCI Interrupt Routing (pci_irq.c) */
int acpi_pci_irq_add_prt (acpi_handle handle, int segment, int bus);
+int acpi_pci_commit_prt_list (struct acpi_prt_list* prt_list);
+int acpi_pci_destroy_prt_list (struct acpi_prt_list* prt_list);
+struct acpi_prt_list* acpi_pci_get_prt_list (void);
/* ACPI PCI Device Binding (pci_bind.c) */
diff -Nur linux-2.4.23-pre6.orig/include/asm-i386/acpi.h linux-2.4.23-pre6/include/asm-i386/acpi.h
--- linux-2.4.23-pre6.orig/include/asm-i386/acpi.h Wed Oct 8 00:51:35 2003
+++ linux-2.4.23-pre6/include/asm-i386/acpi.h Wed Oct 8 03:56:42 2003
@@ -173,6 +173,9 @@
/* early initialization routine */
extern void acpi_reserve_bootmem(void);
+/* ACPI-based PIC initialisation */
+extern int pic_parse_prt (void);
+
#endif /*CONFIG_ACPI_SLEEP*/
diff -Nur linux-2.4.23-pre6.orig/include/asm-i386/mpspec.h linux-2.4.23-pre6/include/asm-i386/mpspec.h
--- linux-2.4.23-pre6.orig/include/asm-i386/mpspec.h Mon Aug 25 12:44:43 2003
+++ linux-2.4.23-pre6/include/asm-i386/mpspec.h Wed Oct 8 03:56:42 2003
@@ -228,7 +228,7 @@
extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 global_irq);
extern void mp_config_acpi_legacy_irqs (void);
extern void mp_config_ioapic_for_sci(int irq);
-extern void mp_parse_prt (void);
+extern int mp_parse_prt (void);
#else /*!CONFIG_X86_IO_APIC*/
static inline void mp_config_ioapic_for_sci(int irq) { }
#endif /*!CONFIG_X86_IO_APIC*/
diff -Nur linux-2.4.23-pre6.orig/include/asm-ia64/acpi.h linux-2.4.23-pre6/include/asm-ia64/acpi.h
--- linux-2.4.23-pre6.orig/include/asm-ia64/acpi.h Wed Oct 8 00:51:35 2003
+++ linux-2.4.23-pre6/include/asm-ia64/acpi.h Wed Oct 8 03:56:42 2003
@@ -110,6 +110,9 @@
extern int __initdata nid_to_pxm_map[NR_NODES];
#endif
+/* ia64 machines don't have PIC controllers */
+static inline int pic_parse_prt(void) { return -1; }
+
#endif /*__KERNEL__*/
#endif /*_ASM_ACPI_H*/
diff -Nur linux-2.4.23-pre6.orig/include/asm-x86_64/acpi.h linux-2.4.23-pre6/include/asm-x86_64/acpi.h
--- linux-2.4.23-pre6.orig/include/asm-x86_64/acpi.h Wed Oct 8 00:51:39 2003
+++ linux-2.4.23-pre6/include/asm-x86_64/acpi.h Wed Oct 8 03:56:42 2003
@@ -159,6 +159,9 @@
extern int use_acpi_pci;
+/* ACPI-based PIC initialisation */
+extern int pic_parse_prt (void);
+
#endif /*__KERNEL__*/
#endif /*_ASM_ACPI_H*/
diff -Nur linux-2.4.23-pre6.orig/include/linux/acpi.h linux-2.4.23-pre6/include/linux/acpi.h
--- linux-2.4.23-pre6.orig/include/linux/acpi.h Wed Oct 8 00:51:39 2003
+++ linux-2.4.23-pre6/include/linux/acpi.h Wed Oct 8 03:56:42 2003
@@ -395,7 +395,7 @@
struct list_head entries;
};
-extern struct acpi_prt_list acpi_prt;
+extern struct acpi_prt_list* acpi_prt;
struct pci_dev;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] resend Andrew de Quincey patch, that resolve hangs problems
[not found] ` <1068531948.2682.1076.camel-D2Zvc0uNKG8@public.gmane.org>
@ 2003-11-12 1:11 ` Sérgio Monteiro Basto
[not found] ` <1068599493.2115.34.camel-4/PLUo9XfK/yXfm4dIG/yWZHpeb/A1Y/@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Sérgio Monteiro Basto @ 2003-11-12 1:11 UTC (permalink / raw)
To: Len Brown; +Cc: Shaohua Li, acpi-devel
Hi
Windows run with APIC mode (at least is what windows says) and in linux
we must disable APIC in kernel.
with or without noapic, hangs on boot, if we don't disable APIC.
with last message
ACPI Namespace successfully loaded at root c031547c
or just before:
evxfevnt-0093 [04] acpi_enable : Transition to ACPI mode
successful.
I discover that system hangs when my cable modem, plugged by usb, goes
down (when ISP have problems).
BTW I had other hanging problems with an old USB storage.
cat /proc/interupts
CPU0
0: 1003741 XT-PIC timer
1: 3100 XT-PIC keyboard
2: 0 XT-PIC cascade
5: 882 XT-PIC VIA686A
8: 1 XT-PIC rtc
9: 13807 XT-PIC usb-uhci
10: 6 XT-PIC acpi
12: 91976 XT-PIC PS/2 Mouse
14: 45941 XT-PIC ide0
15: 151078 XT-PIC ide1
NMI: 0
ERR: 0
On Tue, 2003-11-11 at 06:25, Len Brown wrote:
> If Windows can run a box in IO-APIC mode, then Linux should be able to
> do the same.
>
> I hesitate to integrate Andrew's automatic pic-fallback workaround into
> the baseline kernel because I'm concerned that it will function
> perfectly. If we drop into PIC mode automatically, we may not realize
> that we have a significant Linux-specific problem that we might be able
> to solve.
But we have many reports, for VIA or athlon boards, that resolves the
problems and we have many problem that wasnt yet resolved.
In my case, the laptop has 2 years and it is history, so I am not worry
about what is the real problem.
Conclusion if you put debug information when drop into pic mode, for me
it better.
>
> On the other hand, if Windows can't run in IO-APIC mode and the system
> is broken, then I'm fine with Linux also running in PIC mode. We
> currently have the manual "noapic" on the cmdline workaround for that,
> as well as the opportunity to build APIC support out of the kernel. If
> the system is common, we can invoke "noapic" automatically via
> dmi-blacklist.
>
> That said...
>
> Does Windows (2000/XP) run in IO-APIC mode on this system?
>
> Without patching the kernel, does dmesg and /proc/interrupts show your
> system has booted in IO-APIC mode?
>
> Can you describe in detail exactly what events cause your system to
> hang? Can you re-produce this hang at will?
>
> If you boot the un-patched kernel with "noapic", does dmesg and
> /proc/interrupts show that we configured the PIC correctly? Does the
> hang occur under these conditions?
>
> Can you send the dmesg and /proc/interrupts for the pacthed kernel? Can
> you show that the hang doesn't occur using this kernel?
>
> It would be ideal if you could make these 6 items attachments in a bug
> report.
I will do it ...
>
> thanks,
> -Len
>
>
> How to file a bug against ACPI:
>
> http://bugzilla.kernel.org/
> Category: Power Management
> Component: ACPI
>
> Please attach the output from dmidecode, available in /usr/sbin/, or
> here:
> http://www.nongnu.org/dmidecode/
>
> Please attach the output from acpidmp, available in /usr/sbin/, or in
> here
> http://www.intel.com/technology/iapc/acpi/downloads/pmtools-20010730.tar.gz
>
> Please attach /proc/interrupts and the dmesg output showing the failure,
> if possible.
>
>
> On Mon, 2003-11-10 at 18:15, Sérgio Monteiro Basto wrote:
> > Hi
> > After the last experience with kernel 2.4.23-pre9, I test this patch and
> > resolves the problem above.
> > And I believe that resolve various problems with irqs.
> > My tests confirm that I need this patch for my machine works well.
> > Yesterday my ISP had many problems and my cable modem has gone down
> > several times and my laptop never hangs.
> > _Note: This patch is already applied.in kernel 2.4.22-ac4.
> > thanks
> >
> > On Fri, 2003-11-07 at 04:31, Sérgio Monteiro Basto wrote:
> > > Hi
> > > Sorry to say this, but laptop hangs again with this patch in pre-9.
> > > when usb CDCEthernet, was gone down.
> > > The facts are:
> > > With 22-ac4 never hangs, I use this kernel, for my normally work, since
> > > this release (2003-09-21) and I never had this kind of problems.
> > > I just began use usb CDCEthernet with kernel 4.22, so I don't know if it
> > > hangs or not before.
> > > so I know the problem is began in 23-preX, (I think after pre7) or is
> > > not been corrected like it does in ac4.
> > > If the first choice, what I can test more?
> > > If the second choice, could be one Andrew de Quincey patch's, that is
> > > not applied.
> > > Well I just don't resend the patch because I don't want make more
> > > confusions , and I don't understand if you try (force) to not use the
> > > patch. If Alan had applied it , I think that can be trustable. Not more
> > > than that.
> > >
> > > thanks
> > >
> > > On Thu, 2003-11-06 at 02:40, Li, Shaohua wrote:
> > > >
> > > > Many thanks you let me know the result.
> > > >
> > > > Thanks,
> > > > Shaohua
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Sérgio Monteiro Basto [mailto:sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org]
> > > > > Sent: 2003年11月6日 11:20
> > > > > To: Li, Shaohua
> > > > > Cc: acpi-devel
> > > > > Subject: RE: [ACPI] [Patch]fix EC GPE context error
> > > > >
> > > > > Hi,
> > > > > The first tests seems ok, in 2.4.23-pre9, I had problems without this
> > > > > patch, my laptop had hang again, when my usb cable modem has gone down
> > > > > and I turn it off.
> > > > > Now, with this patch, don't had hang anymore.
> > > > > I will test it more time, if I have a problems, I will tell you.
> > > > >
> > > > > thanks
> > > > >
> > > > > On Mon, 2003-11-03 at 13:29, Li, Shaohua wrote:
> > > > > >
> > > > > > Hi,
> > > > > > I have attached a patch against 2.4 in bugzilla 1171, please help
> > > > > test. Many thanks.
> > > > > >
> > > > > > Thanks,
> > > > > > Shaohua
> > > > > >
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Sérgio Monteiro Basto [mailto:sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org]
> > > > > > > Sent: 2003年11月3日 3:30
> > > > > > > To: Li, Shaohua
> > > > > > > Cc: ACPI Developers
> > > > > > > Subject: Re: [ACPI] [Patch]fix EC GPE context error
> > > > > > >
> > > > > > > Hi
> > > > > > > I can't apply this patch to 2.23-pre9 neither pre8 or pre7 .
> > > > > > > I got one big rejected file (on osl.c I think)
> > > > > > >
> > > > > > > thanks
> > > > > > >
> > > > > > > On Fri, 2003-10-31 at 08:42, Li, Shaohua wrote:
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > 2.6-test9 has a regression. Specifically, the EC GPE context
> > > > > fix
> > > > > > > > has error. This new patch is to replace the old one. The patch is
> > > > > > > > against 2.6-test7, and has passed under T40 and ASUS M2400. You can
> > > > > find
> > > > > > > > detail info in osdl bugzilla 1171. Please help test.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > >
> > > > > > > > Shaohua
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > --
> > > > > > > SérgioMB
> > > > > > > email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
> > > > > > >
> > > > > > > Who gives me one shell, give me everything.
> > > > > >
> > > > > --
> > > > > SérgioMB
> > > > > email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
> > > > >
> > > > > Who gives me one shell, give me everything.
> > > >
> > > --
> > > SérgioMB
> > > email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
> > >
> > > Who gives me one shell, give me everything.
> > >
> > >
> > >
> > > -------------------------------------------------------
> > > This SF.net email is sponsored by: SF.net Giveback Program.
> > > Does SourceForge.net help you be more productive? Does it
> > > help you create better code? SHARE THE LOVE, and help us help
> > > YOU! Click Here: http://sourceforge.net/donate/
> > > _______________________________________________
> > > Acpi-devel mailing list
> > > Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> > > https://lists.sourceforge.net/lists/listinfo/acpi-devel
>
--
SérgioMB
email: sergiomb-hHo3WeeoaswVhHzd4jOs4w@public.gmane.org
Who gives me one shell, give me everything.
-------------------------------------------------------
This SF.Net email sponsored by: ApacheCon 2003,
16-19 November in Las Vegas. Learn firsthand the latest
developments in Apache, PHP, Perl, XML, Java, MySQL,
WebDAV, and more! http://www.apachecon.com/
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] resend Andrew de Quincey patch, that resolve hangs problems
[not found] ` <1068599493.2115.34.camel-4/PLUo9XfK/yXfm4dIG/yWZHpeb/A1Y/@public.gmane.org>
@ 2003-11-22 3:06 ` Len Brown
0 siblings, 0 replies; 4+ messages in thread
From: Len Brown @ 2003-11-22 3:06 UTC (permalink / raw)
To: Sérgio Monteiro Basto; +Cc: Shaohua Li, ACPI Developers
On Tue, 2003-11-11 at 20:11, Sérgio Monteiro Basto wrote:
> Windows run with APIC mode (at least is what windows says) and in linux
> we must disable APIC in kernel.
Does Windows have ACPI enabled? (Device Manager will show ACPI devices,
power button and sleep button will work gracefully). Does winmsd show
that windows is running in IOAPIC mode? see this bug report for example
screen shots of what you're looking for:
http://bugzilla.kernel.org/show_bug.cgi?id=1164
> > If Windows can run a box in IO-APIC mode, then Linux should be able to
> > do the same.
> >
> > I hesitate to integrate Andrew's automatic pic-fallback workaround into
> > the baseline kernel because I'm concerned that it will function
> > perfectly. If we drop into PIC mode automatically, we may not realize
> > that we have a significant Linux-specific problem that we might be able
> > to solve.
>
> But we have many reports, for VIA or athlon boards, that resolves the
> problems and we have many problem that wasnt yet resolved.
> In my case, the laptop has 2 years and it is history, so I am not worry
> about what is the real problem.
> Conclusion if you put debug information when drop into pic mode, for me
> it better.
The system in the bug report above has a totally screwed up _PRT, and a
broken SCI OVER_RIDE entry in the MADT, yet XP still runs with ACPI
enabled and working, with IOAPIC enabled, and the devices with the
screwed up _PRT entries are working!
PIC-fallback will not get us there. When we detect a bad _PRT, I think
we need to drop all the way down to pci=noacpi -- automatically.
This would cover the older machines with IOAPIC that is configured
properly with MPS -- and still allow them to run ACPI. The newer
machines with IOAPIC and no MPS will need ACPI to get into APIC mode,
and if XP can do it, then Linux should be able to figure out how to do
it too.
So tell me, does booting with "pci=noacpi" allow your system to boot
with correct interrupts in IOAPIC mode, and with ACPI enabled?
thanks,
-Len
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2003-11-22 3:06 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <571ACEFD467F7749BC50E0A98C17CDD8E84DC4@pdsmsx403.ccr.corp.intel.com>
[not found] ` <571ACEFD467F7749BC50E0A98C17CDD8E84DC4-4yWAQGcml64gGBtAFL8yw7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2003-11-07 4:31 ` [Patch]fix EC GPE context error Sérgio Monteiro Basto
[not found] ` <1068179499.3555.26.camel-4/PLUo9XfK/yXfm4dIG/yWZHpeb/A1Y/@public.gmane.org>
2003-11-10 23:15 ` [PATCH] resend Andrew de Quincey patch, that resolve hangs problems Sérgio Monteiro Basto
[not found] ` <1068531948.2682.1076.camel@dhcppc4>
[not found] ` <1068531948.2682.1076.camel-D2Zvc0uNKG8@public.gmane.org>
2003-11-12 1:11 ` Sérgio Monteiro Basto
[not found] ` <1068599493.2115.34.camel-4/PLUo9XfK/yXfm4dIG/yWZHpeb/A1Y/@public.gmane.org>
2003-11-22 3:06 ` Len Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox