All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] PCI fixes for 2.6.9
Date: Tue, 19 Oct 2004 15:42:15 -0700	[thread overview]
Message-ID: <10982257353938@kroah.com> (raw)
In-Reply-To: <1098225735893@kroah.com>

ChangeSet 1.1997.37.25, 2004/10/06 12:25:07-07:00, akpm@osdl.org

[PATCH] add-pci_fixup_enable-pass.patch

From: Bjorn Helgaas <bjorn.helgaas@hp.com>

Nick Piggin's USB driver stopped working when I removed the unconditional
PCI ACPI IRQ routing stuff.  He has verified that the attached patch fixes
it.  I sort of hate to add another pass of PCI fixups, so I'm open to
alternate solutions if anybody suggests one.

Add a "pci_fixup_enable" pass of PCI fixups.  These are run at the end of
pci_enable_device() to fix up things like IRQs that are not set up until
then.  Some VIA boards require a fixup after the IRQ is set up.  Found by
Nick Piggin, initial patch by Bjorn Helgaas, reworked to fit into current
-mm by Nick.

Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/pci/pci.c                 |    7 ++++++-
 drivers/pci/quirks.c              |   15 ++++++++++++---
 include/asm-generic/vmlinux.lds.h |    3 +++
 include/linux/pci.h               |    7 +++++++
 4 files changed, 28 insertions(+), 4 deletions(-)


diff -Nru a/drivers/pci/pci.c b/drivers/pci/pci.c
--- a/drivers/pci/pci.c	2004-10-19 15:25:30 -07:00
+++ b/drivers/pci/pci.c	2004-10-19 15:25:30 -07:00
@@ -382,8 +382,13 @@
 int
 pci_enable_device(struct pci_dev *dev)
 {
+	int err;
+
 	dev->is_enabled = 1;
-	return pci_enable_device_bars(dev, (1 << PCI_NUM_RESOURCES) - 1);
+	if ((err = pci_enable_device_bars(dev, (1 << PCI_NUM_RESOURCES) - 1)))
+		return err;
+	pci_fixup_device(pci_fixup_enable, dev);
+	return 0;
 }
 
 /**
diff -Nru a/drivers/pci/quirks.c b/drivers/pci/quirks.c
--- a/drivers/pci/quirks.c	2004-10-19 15:25:30 -07:00
+++ b/drivers/pci/quirks.c	2004-10-19 15:25:30 -07:00
@@ -491,9 +491,9 @@
 		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
 	}
 }
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C586_2,	quirk_via_irqpic );
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C686_5,	quirk_via_irqpic );
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C686_6,	quirk_via_irqpic );
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C586_2,	quirk_via_irqpic );
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C686_5,	quirk_via_irqpic );
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C686_6,	quirk_via_irqpic );
 
 
 /*
@@ -1003,6 +1003,9 @@
 extern struct pci_fixup __end_pci_fixups_header[];
 extern struct pci_fixup __start_pci_fixups_final[];
 extern struct pci_fixup __end_pci_fixups_final[];
+extern struct pci_fixup __start_pci_fixups_enable[];
+extern struct pci_fixup __end_pci_fixups_enable[];
+
 
 void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev)
 {
@@ -1018,6 +1021,12 @@
 		start = __start_pci_fixups_final;
 		end = __end_pci_fixups_final;
 		break;
+
+	case pci_fixup_enable:
+		start = __start_pci_fixups_enable;
+		end = __end_pci_fixups_enable;
+		break;
+
 	default:
 		/* stupid compiler warning, you would think with an enum... */
 		return;
diff -Nru a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
--- a/include/asm-generic/vmlinux.lds.h	2004-10-19 15:25:30 -07:00
+++ b/include/asm-generic/vmlinux.lds.h	2004-10-19 15:25:30 -07:00
@@ -24,6 +24,9 @@
 		VMLINUX_SYMBOL(__start_pci_fixups_final) = .;		\
 		*(.pci_fixup_final)					\
 		VMLINUX_SYMBOL(__end_pci_fixups_final) = .;		\
+		VMLINUX_SYMBOL(__start_pci_fixups_enable) = .;		\
+		*(.pci_fixup_enable)					\
+		VMLINUX_SYMBOL(__end_pci_fixups_enable) = .;		\
 	}								\
 									\
 	/* Kernel symbol table: Normal symbols */			\
diff -Nru a/include/linux/pci.h b/include/linux/pci.h
--- a/include/linux/pci.h	2004-10-19 15:25:30 -07:00
+++ b/include/linux/pci.h	2004-10-19 15:25:30 -07:00
@@ -1001,6 +1001,7 @@
 enum pci_fixup_pass {
 	pci_fixup_header,	/* Called immediately after reading configuration header */
 	pci_fixup_final,	/* Final phase of device fixups */
+	pci_fixup_enable,	/* pci_enable_device() time */
 };
 
 /* Anonymous variables would be nice... */
@@ -1013,6 +1014,12 @@
 	static struct pci_fixup __pci_fixup_##vendor##device##hook __attribute_used__	\
 	__attribute__((__section__(".pci_fixup_final"))) = {				\
 		vendor, device, hook };
+
+#define DECLARE_PCI_FIXUP_ENABLE(vendor, device, hook)				\
+	static struct pci_fixup __pci_fixup_##vendor##device##hook __attribute_used__	\
+	__attribute__((__section__(".pci_fixup_enable"))) = {				\
+		vendor, device, hook };
+
 
 void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev);
 


  reply	other threads:[~2004-10-20  7:31 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-19 22:37 [BK PATCH] PCI fixes for 2.6.9 Greg KH
2004-10-19 22:42 ` [PATCH] " Greg KH
2004-10-19 22:42   ` Greg KH
2004-10-19 22:42     ` Greg KH
2004-10-19 22:42       ` Greg KH
2004-10-19 22:42         ` Greg KH
2004-10-19 22:42           ` Greg KH
2004-10-19 22:42             ` Greg KH
2004-10-19 22:42               ` Greg KH
2004-10-19 22:42                 ` Greg KH
2004-10-19 22:42                   ` Greg KH
2004-10-19 22:42                     ` Greg KH
2004-10-19 22:42                       ` Greg KH
2004-10-19 22:42                         ` Greg KH
2004-10-19 22:42                           ` Greg KH
2004-10-19 22:42                             ` Greg KH
2004-10-19 22:42                               ` Greg KH
2004-10-19 22:42                                 ` Greg KH
2004-10-19 22:42                                   ` Greg KH
2004-10-19 22:42                                     ` Greg KH
2004-10-19 22:42                                       ` Greg KH
2004-10-19 22:42                                         ` Greg KH
2004-10-19 22:42                                           ` Greg KH
2004-10-19 22:42                                             ` Greg KH
2004-10-19 22:42                                               ` Greg KH
2004-10-19 22:42                                                 ` Greg KH
2004-10-19 22:42                                                   ` Greg KH
2004-10-19 22:42                                                     ` Greg KH
2004-10-19 22:42                                                       ` Greg KH [this message]
2004-10-19 22:42                                                         ` Greg KH
2004-10-19 22:42                                                           ` Greg KH
2004-10-19 22:42                                                             ` Greg KH
2004-10-19 22:42                                                               ` Greg KH
2004-10-19 22:42                                                                 ` Greg KH
2004-10-19 22:42                                                                   ` Greg KH
2004-10-19 22:42                                                                     ` Greg KH
2004-10-19 22:42                                                                       ` Greg KH
2004-10-19 22:42                                                                         ` Greg KH
2004-10-19 22:42                                                                           ` Greg KH
2004-10-19 22:42                                                                             ` Greg KH
2004-10-19 22:42                                                                               ` Greg KH
2004-10-19 22:42                                                                                 ` Greg KH
2004-10-19 22:42                                                                                   ` Greg KH
2004-10-19 22:42                                                                                     ` Greg KH
2004-10-19 22:42                                                                                       ` Greg KH
2004-10-19 22:42                                                                                         ` Greg KH
2004-10-19 22:42                                                                                           ` Greg KH
2004-10-19 22:42                                                                                             ` Greg KH
2004-10-19 22:42                                                                                               ` Greg KH
2004-10-19 22:42                                                                                                 ` Greg KH
2004-10-19 22:42                                                                                                   ` Greg KH
2004-10-19 22:42                                                                                                     ` Greg KH
2004-10-19 22:42                                                                                                       ` Greg KH
2004-10-19 22:42                                                                                                         ` Greg KH
2004-10-19 22:42                                                                                                           ` Greg KH
2004-10-19 22:42                                                                                                             ` Greg KH
2004-10-19 22:42                                                                                                               ` Greg KH
2004-10-19 22:42                                                                                                                 ` Greg KH
2004-10-19 22:42                                                                                                                   ` Greg KH
2004-10-19 22:42                                                                                                                     ` Greg KH
2004-10-19 22:42                                                                                                                       ` Greg KH
2004-10-19 22:42                                                                                                                         ` Greg KH
2004-10-19 22:42                                                                                                                           ` Greg KH
2004-10-19 22:42                                                                                                                             ` Greg KH
2004-10-19 22:42                                                                                                                               ` Greg KH
2004-10-19 22:42                                                                                                                                 ` Greg KH
2004-10-19 22:42                                                                                                                                   ` Greg KH
2004-10-19 22:42                                                                                                                                     ` Greg KH
2004-10-20  8:10                                                                 ` Russell King
2004-10-22 23:45                                                                   ` Greg KH
2004-10-24 16:47                                                                     ` Alan Cox
2004-11-20 18:45                                                                     ` Russell King

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=10982257353938@kroah.com \
    --to=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.