Re: 2.6.13-rc3-mm1: a regression

2005-07-17 Thread Rafael J. Wysocki
On Saturday, 16 of July 2005 23:39, Andrew Morton wrote:
> "Rafael J. Wysocki" <[EMAIL PROTECTED]> wrote:
> >
> > On Friday, 15 of July 2005 10:36, Andrew Morton wrote:
> >  > 
> >  > 
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm1/
> >  > 
> >  > (http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz until
> >  > kernel.org syncs up)
> > 
> >  There seems to be a regression wrt 2.6.13-rc3 which causes my box (Asus 
> > L5D,
> >  Athlon 64 + nForce3) to hang solid during resume from disk on battery 
> > power.
> > 
> >  First, 2.6.13-rc3-mm1 is affected by the problems described at:
> >  http://bugzilla.kernel.org/show_bug.cgi?id=4416
> >  http://bugzilla.kernel.org/show_bug.cgi?id=4665
> >  These problems go away after applying the two attached patches.  Then, the
> >  box resumes on AC power but hangs solid during resume on battery power.
> >  The problem is 100% reproducible and I think it's related to ACPI.
> 
> That recent acpi merge seems to have damaged a number of people...
> 
> Are you able to test Linus's latest -git spanshot?  See if there's a
> difference between -linus and -mm behaviour?

I was afraid you would say so. ;-)

The -rc3-git-[2-4] kernels are unaffected by the problem described, so it seems
to be specific to -rc3-mm1.

Greets,
Rafael


-- 
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.13-rc3-mm1: a regression

2005-07-17 Thread Rafael J. Wysocki
On Saturday, 16 of July 2005 23:39, Andrew Morton wrote:
 Rafael J. Wysocki [EMAIL PROTECTED] wrote:
 
  On Friday, 15 of July 2005 10:36, Andrew Morton wrote:


  ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm1/

(http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz until
kernel.org syncs up)
  
   There seems to be a regression wrt 2.6.13-rc3 which causes my box (Asus 
  L5D,
   Athlon 64 + nForce3) to hang solid during resume from disk on battery 
  power.
  
   First, 2.6.13-rc3-mm1 is affected by the problems described at:
   http://bugzilla.kernel.org/show_bug.cgi?id=4416
   http://bugzilla.kernel.org/show_bug.cgi?id=4665
   These problems go away after applying the two attached patches.  Then, the
   box resumes on AC power but hangs solid during resume on battery power.
   The problem is 100% reproducible and I think it's related to ACPI.
 
 That recent acpi merge seems to have damaged a number of people...
 
 Are you able to test Linus's latest -git spanshot?  See if there's a
 difference between -linus and -mm behaviour?

I was afraid you would say so. ;-)

The -rc3-git-[2-4] kernels are unaffected by the problem described, so it seems
to be specific to -rc3-mm1.

Greets,
Rafael


-- 
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll Alice's Adventures in Wonderland
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.13-rc3-mm1: a regression

2005-07-16 Thread Andrew Morton
"Rafael J. Wysocki" <[EMAIL PROTECTED]> wrote:
>
> On Friday, 15 of July 2005 10:36, Andrew Morton wrote:
>  > 
>  > 
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm1/
>  > 
>  > (http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz until
>  > kernel.org syncs up)
> 
>  There seems to be a regression wrt 2.6.13-rc3 which causes my box (Asus L5D,
>  Athlon 64 + nForce3) to hang solid during resume from disk on battery power.
> 
>  First, 2.6.13-rc3-mm1 is affected by the problems described at:
>  http://bugzilla.kernel.org/show_bug.cgi?id=4416
>  http://bugzilla.kernel.org/show_bug.cgi?id=4665
>  These problems go away after applying the two attached patches.  Then, the
>  box resumes on AC power but hangs solid during resume on battery power.
>  The problem is 100% reproducible and I think it's related to ACPI.

That recent acpi merge seems to have damaged a number of people...

Are you able to test Linus's latest -git spanshot?  See if there's a
difference between -linus and -mm behaviour?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.13-rc3-mm1: a regression

2005-07-16 Thread Rafael J. Wysocki
On Friday, 15 of July 2005 10:36, Andrew Morton wrote:
> 
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm1/
> 
> (http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz until
> kernel.org syncs up)

There seems to be a regression wrt 2.6.13-rc3 which causes my box (Asus L5D,
Athlon 64 + nForce3) to hang solid during resume from disk on battery power.

First, 2.6.13-rc3-mm1 is affected by the problems described at:
http://bugzilla.kernel.org/show_bug.cgi?id=4416
http://bugzilla.kernel.org/show_bug.cgi?id=4665
These problems go away after applying the two attached patches.  Then, the
box resumes on AC power but hangs solid during resume on battery power.
The problem is 100% reproducible and I think it's related to ACPI.

Greets,
Rafael


-- 
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
--- linux-2.6.13-rc3-mm1/drivers/acpi/pci_link.c	2005-07-15 13:18:24.0 +0200
+++ new/drivers/acpi/pci_link.c	2005-07-15 13:19:30.0 +0200
@@ -72,12 +72,10 @@
 	u8			active;			/* Current IRQ */
 	u8			edge_level;		/* All IRQs */
 	u8			active_high_low;	/* All IRQs */
+	u8			initialized;
 	u8			resource_type;
 	u8			possible_count;
 	u8			possible[ACPI_PCI_LINK_MAX_POSSIBLE];
-	u8			initialized:1;
-	u8			suspend_resume:1;
-	u8			reserved:6;
 };
 
 struct acpi_pci_link {
@@ -532,10 +530,6 @@
 
 	ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
 
-	if (link->irq.suspend_resume) {
-		acpi_pci_link_set(link, link->irq.active);
-		link->irq.suspend_resume = 0;
-	}
 	if (link->irq.initialized)
 		return_VALUE(0);
 
@@ -719,21 +713,34 @@
 	return_VALUE(result);
 }
 
-static int irqrouter_suspend(struct sys_device *dev, pm_message_t state)
+
+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_suspend");
+	ACPI_FUNCTION_TRACE("irqrouter_resume");
 
 	list_for_each(node, _link.entries) {
+
 		link = list_entry(node, struct acpi_pci_link, node);
 		if (!link) {
 			ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n"));
 			continue;
 		}
-		if (link->irq.active && link->irq.initialized)
-			link->irq.suspend_resume = 1;
+
+		acpi_pci_link_resume(link);
 	}
 	return_VALUE(0);
 }
@@ -848,7 +855,7 @@
 
 static struct sysdev_class irqrouter_sysdev_class = {
 set_kset_name("irqrouter"),
-.suspend = irqrouter_suspend,
+.resume = irqrouter_resume,
 };
 
 
--- 2.6.12-rc3-mm2-old/drivers/acpi/ec.c	2005-05-01 13:13:43.0 +0200
+++ linux-2.6.12-rc3-mm2/drivers/acpi/ec.c	2005-05-01 14:08:12.0 +0200
@@ -31,7 +31,6 @@
 #include 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
@@ -50,19 +49,17 @@ ACPI_MODULE_NAME		("acpi_ec")
 
 #define ACPI_EC_FLAG_OBF	0x01	/* Output buffer full */
 #define ACPI_EC_FLAG_IBF	0x02	/* Input buffer full */
-#define ACPI_EC_FLAG_BURST	0x10	/* burst mode */
 #define ACPI_EC_FLAG_SCI	0x20	/* EC-SCI occurred */
 
 #define ACPI_EC_EVENT_OBF	0x01	/* Output buffer full */
 #define ACPI_EC_EVENT_IBE	0x02	/* Input buffer empty */
 
-#define ACPI_EC_DELAY		50	/* Wait 50ms max. during EC ops */
+#define ACPI_EC_UDELAY		100	/* Poll @ 100us increments */
+#define ACPI_EC_UDELAY_COUNT	1000	/* Wait 10ms max. during EC ops */
 #define ACPI_EC_UDELAY_GLK	1000	/* Wait 1ms max. to get global lock */
 
 #define ACPI_EC_COMMAND_READ	0x80
 #define ACPI_EC_COMMAND_WRITE	0x81
-#define ACPI_EC_BURST_ENABLE	0x82
-#define ACPI_EC_BURST_DISABLE	0x83
 #define ACPI_EC_COMMAND_QUERY	0x84
 
 static int acpi_ec_add (struct acpi_device *device);
@@ -90,11 +87,7 @@ struct acpi_ec {
 	struct acpi_generic_address	command_addr;
 	struct acpi_generic_address	data_addr;
 	unsigned long			global_lock;
-	unsigned int			expect_event;
-	atomic_t			leaving_burst; /* 0 : No, 1 : Yes, 2: abort*/
-	atomic_t			pending_gpe;
-	struct semaphore		sem;
-	wait_queue_head_t		wait;
+	spinlock_t			lock;
 };
 
 /* If we find an EC via the ECDT, we need to keep a ptr to its context */
@@ -107,138 +100,59 @@ static struct acpi_device *first_ec;
  Transaction Management
-- */
 
-static inline u32 acpi_ec_read_status(struct acpi_ec *ec)
-{
-	u32	status = 0;
-
-	acpi_hw_low_level_read(8, , >status_addr);
-	return status;
-}
-
-static int acpi_ec_wait(struct acpi_ec *ec, unsigned int event)
+static int
+acpi_ec_wait (
+	struct acpi_ec		*ec,
+	u8			event)
 {
-	int	result = 0;
-
-	ACPI_FUNCTION_TRACE("acpi_ec_wait");
+	u32			acpi_ec_status = 0;
+	u32			

Re: 2.6.13-rc3-mm1: a regression

2005-07-16 Thread Rafael J. Wysocki
On Friday, 15 of July 2005 10:36, Andrew Morton wrote:
 
 ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm1/
 
 (http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz until
 kernel.org syncs up)

There seems to be a regression wrt 2.6.13-rc3 which causes my box (Asus L5D,
Athlon 64 + nForce3) to hang solid during resume from disk on battery power.

First, 2.6.13-rc3-mm1 is affected by the problems described at:
http://bugzilla.kernel.org/show_bug.cgi?id=4416
http://bugzilla.kernel.org/show_bug.cgi?id=4665
These problems go away after applying the two attached patches.  Then, the
box resumes on AC power but hangs solid during resume on battery power.
The problem is 100% reproducible and I think it's related to ACPI.

Greets,
Rafael


-- 
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll Alice's Adventures in Wonderland
--- linux-2.6.13-rc3-mm1/drivers/acpi/pci_link.c	2005-07-15 13:18:24.0 +0200
+++ new/drivers/acpi/pci_link.c	2005-07-15 13:19:30.0 +0200
@@ -72,12 +72,10 @@
 	u8			active;			/* Current IRQ */
 	u8			edge_level;		/* All IRQs */
 	u8			active_high_low;	/* All IRQs */
+	u8			initialized;
 	u8			resource_type;
 	u8			possible_count;
 	u8			possible[ACPI_PCI_LINK_MAX_POSSIBLE];
-	u8			initialized:1;
-	u8			suspend_resume:1;
-	u8			reserved:6;
 };
 
 struct acpi_pci_link {
@@ -532,10 +530,6 @@
 
 	ACPI_FUNCTION_TRACE(acpi_pci_link_allocate);
 
-	if (link-irq.suspend_resume) {
-		acpi_pci_link_set(link, link-irq.active);
-		link-irq.suspend_resume = 0;
-	}
 	if (link-irq.initialized)
 		return_VALUE(0);
 
@@ -719,21 +713,34 @@
 	return_VALUE(result);
 }
 
-static int irqrouter_suspend(struct sys_device *dev, pm_message_t state)
+
+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_suspend);
+	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;
 		}
-		if (link-irq.active  link-irq.initialized)
-			link-irq.suspend_resume = 1;
+
+		acpi_pci_link_resume(link);
 	}
 	return_VALUE(0);
 }
@@ -848,7 +855,7 @@
 
 static struct sysdev_class irqrouter_sysdev_class = {
 set_kset_name(irqrouter),
-.suspend = irqrouter_suspend,
+.resume = irqrouter_resume,
 };
 
 
--- 2.6.12-rc3-mm2-old/drivers/acpi/ec.c	2005-05-01 13:13:43.0 +0200
+++ linux-2.6.12-rc3-mm2/drivers/acpi/ec.c	2005-05-01 14:08:12.0 +0200
@@ -31,7 +31,6 @@
 #include linux/delay.h
 #include linux/proc_fs.h
 #include linux/seq_file.h
-#include linux/interrupt.h
 #include asm/io.h
 #include acpi/acpi_bus.h
 #include acpi/acpi_drivers.h
@@ -50,19 +49,17 @@ ACPI_MODULE_NAME		(acpi_ec)
 
 #define ACPI_EC_FLAG_OBF	0x01	/* Output buffer full */
 #define ACPI_EC_FLAG_IBF	0x02	/* Input buffer full */
-#define ACPI_EC_FLAG_BURST	0x10	/* burst mode */
 #define ACPI_EC_FLAG_SCI	0x20	/* EC-SCI occurred */
 
 #define ACPI_EC_EVENT_OBF	0x01	/* Output buffer full */
 #define ACPI_EC_EVENT_IBE	0x02	/* Input buffer empty */
 
-#define ACPI_EC_DELAY		50	/* Wait 50ms max. during EC ops */
+#define ACPI_EC_UDELAY		100	/* Poll @ 100us increments */
+#define ACPI_EC_UDELAY_COUNT	1000	/* Wait 10ms max. during EC ops */
 #define ACPI_EC_UDELAY_GLK	1000	/* Wait 1ms max. to get global lock */
 
 #define ACPI_EC_COMMAND_READ	0x80
 #define ACPI_EC_COMMAND_WRITE	0x81
-#define ACPI_EC_BURST_ENABLE	0x82
-#define ACPI_EC_BURST_DISABLE	0x83
 #define ACPI_EC_COMMAND_QUERY	0x84
 
 static int acpi_ec_add (struct acpi_device *device);
@@ -90,11 +87,7 @@ struct acpi_ec {
 	struct acpi_generic_address	command_addr;
 	struct acpi_generic_address	data_addr;
 	unsigned long			global_lock;
-	unsigned int			expect_event;
-	atomic_t			leaving_burst; /* 0 : No, 1 : Yes, 2: abort*/
-	atomic_t			pending_gpe;
-	struct semaphore		sem;
-	wait_queue_head_t		wait;
+	spinlock_t			lock;
 };
 
 /* If we find an EC via the ECDT, we need to keep a ptr to its context */
@@ -107,138 +100,59 @@ static struct acpi_device *first_ec;
  Transaction Management
-- */
 
-static inline u32 acpi_ec_read_status(struct acpi_ec *ec)
-{
-	u32	status = 0;
-
-	acpi_hw_low_level_read(8, status, ec-status_addr);
-	return status;
-}
-
-static int acpi_ec_wait(struct acpi_ec *ec, unsigned int event)
+static int
+acpi_ec_wait (
+	struct acpi_ec		*ec,
+	u8			event)
 {
-	int	result = 

Re: 2.6.13-rc3-mm1: a regression

2005-07-16 Thread Andrew Morton
Rafael J. Wysocki [EMAIL PROTECTED] wrote:

 On Friday, 15 of July 2005 10:36, Andrew Morton wrote:
   
   
 ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm1/
   
   (http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-rc3-mm1.gz until
   kernel.org syncs up)
 
  There seems to be a regression wrt 2.6.13-rc3 which causes my box (Asus L5D,
  Athlon 64 + nForce3) to hang solid during resume from disk on battery power.
 
  First, 2.6.13-rc3-mm1 is affected by the problems described at:
  http://bugzilla.kernel.org/show_bug.cgi?id=4416
  http://bugzilla.kernel.org/show_bug.cgi?id=4665
  These problems go away after applying the two attached patches.  Then, the
  box resumes on AC power but hangs solid during resume on battery power.
  The problem is 100% reproducible and I think it's related to ACPI.

That recent acpi merge seems to have damaged a number of people...

Are you able to test Linus's latest -git spanshot?  See if there's a
difference between -linus and -mm behaviour?
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/