Re: [patch] MSI-X: fix resume crash

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Ingo Molnar
Date: Wednesday, March 28, 2007 - 6:36 am

* Eric W. Biederman <ebiederm@xmission.com> wrote:


i've updated the patch below with your sign-off, and trimmed the 
description to the relevant bits, for easy upstream application.

	Ingo

------------->
Subject: [patch] MSI-X: fix resume crash
From: Eric W. Biederman <ebiederm@xmission.com>

So I think the right solution is to simply make pci_enable_device just 
flip enable bits and move the rest of the work someplace else.

However a thorough cleanup is a little extreme for this point in the 
release cycle, so I think a quick hack that makes the code not stomp the 
irq when msi irq's are enabled should be the first fix.  Then we can 
later make the code not change the irqs at all.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/cris/arch-v32/drivers/pci/bios.c |    4 +++-
 arch/frv/mb93090-mb00/pci-vdk.c       |    3 ++-
 arch/i386/pci/common.c                |    6 ++++--
 arch/ia64/pci/pci.c                   |    8 ++++++--
 4 files changed, 15 insertions(+), 6 deletions(-)

Index: linux/arch/cris/arch-v32/drivers/pci/bios.c
===================================================================
--- linux.orig/arch/cris/arch-v32/drivers/pci/bios.c
+++ linux/arch/cris/arch-v32/drivers/pci/bios.c
@@ -100,7 +100,9 @@ int pcibios_enable_device(struct pci_dev
 	if ((err = pcibios_enable_resources(dev, mask)) < 0)
 		return err;
 
-	return pcibios_enable_irq(dev);
+	if (!dev->msi_enabled)
+		pcibios_enable_irq(dev);
+	return 0;
 }
 
 int pcibios_assign_resources(void)
Index: linux/arch/frv/mb93090-mb00/pci-vdk.c
===================================================================
--- linux.orig/arch/frv/mb93090-mb00/pci-vdk.c
+++ linux/arch/frv/mb93090-mb00/pci-vdk.c
@@ -466,6 +466,7 @@ int pcibios_enable_device(struct pci_dev
 
 	if ((err = pcibios_enable_resources(dev, mask)) < 0)
 		return err;
-	pcibios_enable_irq(dev);
+	if (!dev->msi_enabled)
+		pcibios_enable_irq(dev);
 	return 0;
 }
Index: linux/arch/i386/pci/common.c
===================================================================
--- linux.orig/arch/i386/pci/common.c
+++ linux/arch/i386/pci/common.c
@@ -434,11 +434,13 @@ int pcibios_enable_device(struct pci_dev
 	if ((err = pcibios_enable_resources(dev, mask)) < 0)
 		return err;
 
-	return pcibios_enable_irq(dev);
+	if (!dev->msi_enabled)
+		return pcibios_enable_irq(dev);
+	return 0;
 }
 
 void pcibios_disable_device (struct pci_dev *dev)
 {
-	if (pcibios_disable_irq)
+	if (!dev->msi_enabled && pcibios_disable_irq)
 		pcibios_disable_irq(dev);
 }
Index: linux/arch/ia64/pci/pci.c
===================================================================
--- linux.orig/arch/ia64/pci/pci.c
+++ linux/arch/ia64/pci/pci.c
@@ -557,14 +557,18 @@ pcibios_enable_device (struct pci_dev *d
 	if (ret < 0)
 		return ret;
 
-	return acpi_pci_irq_enable(dev);
+	if (!dev->msi_enabled)
+		return acpi_pci_irq_enable(dev);
+	return 0;
 }
 
 void
 pcibios_disable_device (struct pci_dev *dev)
 {
 	BUG_ON(atomic_read(&dev->enable_cnt));
-	acpi_pci_irq_disable(dev);
+	if (!dev->msi_enabled)
+		acpi_pci_irq_disable(dev);
+	return 0;
 }
 
 void
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Linux 2.6.21-rc5, Linus Torvalds, (Sun Mar 25, 4:08 pm)
Re: Linux 2.6.21-rc5, Ayaz Abdulla, (Mon Mar 26, 1:17 am)
Re: Linux 2.6.21-rc5, Ingo Molnar, (Mon Mar 26, 1:31 am)
Re: Linux 2.6.21-rc5, Ingo Molnar, (Mon Mar 26, 1:39 am)
Re: Linux 2.6.21-rc5, Thomas Gleixner, (Mon Mar 26, 1:55 am)
-rc5: e1000 resume weirdness, Ingo Molnar, (Mon Mar 26, 3:11 am)
Re: Linux 2.6.21-rc5, Bob Tracy, (Mon Mar 26, 5:25 am)
Re: Linux 2.6.21-rc5, Thomas Gleixner, (Mon Mar 26, 5:30 am)
Re: -rc5: e1000 resume weirdness, Kok, Auke, (Mon Mar 26, 8:39 am)
Re: -rc5: e1000 resume weirdness, Jesse Brandeburg, (Mon Mar 26, 8:50 am)
Re: -rc5: e1000 resume weirdness, Kok, Auke, (Mon Mar 26, 8:55 am)
Re: -rc5: e1000 resume weirdness, Ingo Molnar, (Mon Mar 26, 10:39 am)
Re: 2.6.21-rc5: maxcpus=1 crash in cpufreq: kernel BUG at ..., Venki Pallipadi, (Mon Mar 26, 11:12 am)
Re: 2.6.21-rc5: maxcpus=1 crash in cpufreq: kernel BUG at ..., Venki Pallipadi, (Mon Mar 26, 12:03 pm)
[1/5] 2.6.21-rc5: known regressions, Adrian Bunk, (Mon Mar 26, 6:59 pm)
[2/5] 2.6.21-rc5: known regressions, Adrian Bunk, (Mon Mar 26, 6:59 pm)
[3/5] 2.6.21-rc5: known regressions, Adrian Bunk, (Mon Mar 26, 6:59 pm)
[4/5] 2.6.21-rc5: known regressions, Adrian Bunk, (Mon Mar 26, 6:59 pm)
[5/5] 2.6.21-rc5: known regressions, Adrian Bunk, (Mon Mar 26, 6:59 pm)
ATA ACPI (was Re: Linux 2.6.21-rc5), Jeff Garzik, (Mon Mar 26, 10:51 pm)
Re: ATA ACPI (was Re: Linux 2.6.21-rc5), Tejun Heo, (Mon Mar 26, 10:54 pm)
Re: Linux 2.6.21-rc5, Andrew Morton, (Mon Mar 26, 11:17 pm)
Re: Linux 2.6.21-rc5, Greg KH, (Mon Mar 26, 11:20 pm)
[PATCH] i386: Fix bogus return value in hpet_next_event(), Thomas Gleixner, (Tue Mar 27, 12:08 am)
Re: [4/5] 2.6.21-rc5: known regressions, Marcus Better, (Tue Mar 27, 1:00 am)
Re: Linux 2.6.21-rc5, Takashi Iwai, (Tue Mar 27, 2:49 am)
Re: [4/5] 2.6.21-rc5: known regressions, Rafael J. Wysocki, (Tue Mar 27, 3:09 am)
Re: Linux 2.6.21-rc5, Andi Kleen, (Tue Mar 27, 5:25 am)
Re: Linux 2.6.21-rc5, Dmitry Torokhov, (Tue Mar 27, 5:43 am)
Re: [4/5] 2.6.21-rc5: known regressions, Eric W. Biederman, (Tue Mar 27, 6:25 am)
Re: Linux 2.6.21-rc5, Andrew Morton, (Tue Mar 27, 9:33 am)
Re: Linux 2.6.21-rc5, Jesse Barnes, (Tue Mar 27, 9:49 am)
Re: [4/5] 2.6.21-rc5: known regressions, Marcus Better, (Tue Mar 27, 9:53 am)
Re: ATA ACPI (was Re: Linux 2.6.21-rc5), Linus Torvalds, (Tue Mar 27, 10:07 am)
Re: Linux 2.6.21-rc5, Michal Piotrowski, (Tue Mar 27, 11:34 am)
Re: ATA ACPI (was Re: Linux 2.6.21-rc5), Jeff Garzik, (Tue Mar 27, 11:48 am)
Re: Linux 2.6.21-rc5, Michal Piotrowski, (Tue Mar 27, 11:53 am)
Re: [4/5] 2.6.21-rc5: known regressions, Eric W. Biederman, (Tue Mar 27, 1:50 pm)
Re: ATA ACPI (was Re: Linux 2.6.21-rc5), Pavel Machek, (Tue Mar 27, 2:32 pm)
Re: [4/5] 2.6.21-rc5: known regressions, Adrian Bunk, (Tue Mar 27, 3:29 pm)
Re: Linux 2.6.21-rc5, Pavel Machek, (Tue Mar 27, 3:29 pm)
Re: [4/5] 2.6.21-rc5: known regressions, Thomas Meyer, (Tue Mar 27, 3:45 pm)
Re: Linux 2.6.21-rc5, Michal Piotrowski, (Tue Mar 27, 3:55 pm)
Re: ATA ACPI (was Re: Linux 2.6.21-rc5), Tejun Heo, (Wed Mar 28, 2:51 am)
Re: [4/5] 2.6.21-rc5: known regressions, Ingo Molnar, (Wed Mar 28, 5:19 am)
Re: [4/5] 2.6.21-rc5: known regressions, Ingo Molnar, (Wed Mar 28, 5:41 am)
Re: [4/5] 2.6.21-rc5: known regressions, Ingo Molnar, (Wed Mar 28, 6:03 am)
[patch] MSI-X: fix resume crash, Ingo Molnar, (Wed Mar 28, 6:06 am)
Re: [patch] MSI-X: fix resume crash, Eric W. Biederman, (Wed Mar 28, 6:31 am)
Re: [patch] MSI-X: fix resume crash, Ingo Molnar, (Wed Mar 28, 6:36 am)
Re: Linux 2.6.21-rc5, Andi Kleen, (Wed Mar 28, 7:30 am)
Re: Linux 2.6.21-rc5, Michal Piotrowski, (Wed Mar 28, 7:56 am)
Re: Linux 2.6.21-rc5, Jiri Kosina, (Wed Mar 28, 9:12 am)
Re: Linux 2.6.21-rc5, Michal Piotrowski, (Wed Mar 28, 9:51 am)
Re: Linux 2.6.21-rc5, Linus Torvalds, (Wed Mar 28, 10:56 am)
Re: [1/5] 2.6.21-rc5: known regressions, Kok, Auke, (Wed Mar 28, 11:54 am)
Re: [1/5] 2.6.21-rc5: known regressions, Ingo Molnar, (Wed Mar 28, 12:23 pm)
Re: [2/5] 2.6.21-rc5: known regressions, Laurent Riffard, (Wed Mar 28, 12:46 pm)
Re: Linux 2.6.21-rc5, Tilman Schmidt, (Wed Mar 28, 3:32 pm)
Re: [patch] MSI-X: fix resume crash, Len Brown, (Wed Mar 28, 9:30 pm)
Re: [patch] MSI-X: fix resume crash, Eric W. Biederman, (Wed Mar 28, 9:57 pm)
Re: [2/5] 2.6.21-rc5: known regressions, Fabio Comolli, (Thu Mar 29, 12:02 pm)
Re: [1/5] 2.6.21-rc5: known regressions, Adrian Bunk, (Fri Mar 30, 11:04 am)
[1/4] 2.6.21-rc5: known regressions (v2), Adrian Bunk, (Fri Mar 30, 2:32 pm)
[2/4] 2.6.21-rc5: known regressions (v2), Adrian Bunk, (Fri Mar 30, 2:32 pm)
[3/4] 2.6.21-rc5: known regressions (v2), Adrian Bunk, (Fri Mar 30, 2:32 pm)
Re: [1/4] 2.6.21-rc5: known regressions (v2), Greg KH, (Fri Mar 30, 2:38 pm)
[4/4] 2.6.21-rc5: known regressions (v2), Adrian Bunk, (Fri Mar 30, 2:49 pm)
Re: [1/4] 2.6.21-rc5: known regressions (v2), Michal Jaegermann, (Fri Mar 30, 5:23 pm)
Re: [4/4] 2.6.21-rc5: known regressions (v2), Jeff Chua, (Fri Mar 30, 7:41 pm)
Re: [3/4] 2.6.21-rc5: known regressions (v2), Jeff Chua, (Fri Mar 30, 7:52 pm)
Re: [3/4] 2.6.21-rc5: known regressions (v2), Adrian Bunk, (Fri Mar 30, 8:16 pm)
Re: [4/4] 2.6.21-rc5: known regressions (v2), Frédéric, (Fri Mar 30, 11:44 pm)
Re: [3/4] 2.6.21-rc5: known regressions (v2), Jens Axboe, (Sat Mar 31, 4:08 am)
Re: [1/4] 2.6.21-rc5: known regressions (v2), Adrian Bunk, (Sat Mar 31, 8:01 am)
Re: [1/4] 2.6.21-rc5: known regressions (v2), Michal Jaegermann, (Sat Mar 31, 9:42 am)
[patch] driver core: fix built-in drivers sysfs links, Ingo Molnar, (Sat Mar 31, 9:51 am)
2.6.21-rc5: known regressions with patches (v2), Adrian Bunk, (Sat Mar 31, 11:19 am)
Re: [3/4] 2.6.21-rc5: known regressions (v2), Jeremy Fitzhardinge, (Sat Mar 31, 10:39 pm)
Re: [4/4] 2.6.21-rc5: known regressions (v2), Michael S. Tsirkin, (Sun Apr 1, 12:04 am)
Re: [4/4] 2.6.21-rc5: known regressions (v2), Michael S. Tsirkin, (Sun Apr 1, 1:37 pm)
[patch] forcedeth: improve NAPI logic, Ingo Molnar, (Mon Apr 2, 4:56 am)
Re: [3/4] 2.6.21-rc5: known regressions (v2), Michal Piotrowski, (Fri Apr 13, 9:32 am)