The patch titled
     pci: disable decoding during sizing of BARs
has been removed from the -mm tree.  Its filename was
     pci-disable-decoding-during-sizing-of-bars.patch

This patch was dropped because it is obsolete

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: pci: disable decoding during sizing of BARs

Cc: Matthew Wilcox <[EMAIL PROTECTED]>

Stolen from http://bugs.gentoo.org/show_bug.cgi?id=198810

Fixes Marco's boot problem, described thusly:

  I first got acpi failure on boot, pci=nommconf worked first time, than I
  patched with q35.pci.patch from
  http://bugs.gentoo.org/show_bug.cgi?id=198810 and boot worked without
  nommconf.

  (See http://lkml.org/lkml/2007/12/4/336)

Linus sayeth

  It looks ok now that it doesn't do it for host controllers.  I guess we
  could just apply it.

Cc: Daniel Drake <[EMAIL PROTECTED]>
Cc: Marco Gatti <[EMAIL PROTECTED]>
Cc: Greg KH <[EMAIL PROTECTED]>
Cc: Andi Kleen <[EMAIL PROTECTED]>
Cc: Thomas Gleixner <[EMAIL PROTECTED]>
Cc: Ingo Molnar <[EMAIL PROTECTED]>
Cc: Linus Torvalds <[EMAIL PROTECTED]>
Cc: Andreas Eckstein <[EMAIL PROTECTED]>

Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 drivers/pci/probe.c |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff -puN drivers/pci/probe.c~pci-disable-decoding-during-sizing-of-bars 
drivers/pci/probe.c
--- a/drivers/pci/probe.c~pci-disable-decoding-during-sizing-of-bars
+++ a/drivers/pci/probe.c
@@ -181,11 +181,26 @@ static inline int is_64bit_memory(u32 ma
        return 0;
 }
 
+/*
+ * Sizing PCI BARs requires us to disable decoding, otherwise we may run
+ * into conflicts with other devices while trying to size the BAR.  Normally
+ * this isn't a problem, but it happens on some machines normally, and can
+ * happen on others during PCI device hotplug.  Don't disable BARs for host
+ * bridges, though.  Some of them do silly things like disable accesses to
+ * RAM from the CPU
+ */
 static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
 {
        unsigned int pos, reg, next;
        u32 l, sz;
        struct resource *res;
+       u16 orig_cmd;
+
+       if ((dev->class >> 8) != PCI_CLASS_BRIDGE_HOST) {
+               pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
+               pci_write_config_word(dev, PCI_COMMAND,
+                       orig_cmd & ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO));
+       }
 
        for(pos=0; pos<howmany; pos = next) {
                u64 l64;
@@ -284,6 +299,9 @@ static void pci_read_bases(struct pci_de
                        }
                }
        }
+
+       if ((dev->class >> 8) != PCI_CLASS_BRIDGE_HOST)
+               pci_write_config_word(dev, PCI_COMMAND, orig_cmd);
 }
 
 void pci_read_bridge_bases(struct pci_bus *child)
_

Patches currently in -mm which might be from [EMAIL PROTECTED] are

parisc-new-termios-definitions.patch
pci-disable-decoding-during-sizing-of-bars.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to