]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/fix-kbuild
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 10 Dec 2007 18:17:07 +0000 (10:17 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 10 Dec 2007 18:17:07 +0000 (10:17 -0800)
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/fix-kbuild:
  kbuild: fix building with O=.. options
  kbuild: fix building with redirected output.

arch/powerpc/platforms/chrp/pci.c
arch/powerpc/platforms/powermac/pci.c
drivers/pci/probe.c
mm/slob.c
mm/slub.c

index e43465d34d29aac181ae728042fe3b86164358d3..0340a342f7726c8a721eacf36491f2c604d50cce 100644 (file)
@@ -317,8 +317,12 @@ chrp_find_bridges(void)
 /* SL82C105 IDE Control/Status Register */
 #define SL82C105_IDECSR                0x40
 
-/* Fixup for Winbond ATA quirk, required for briq */
-void chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105)
+/* Fixup for Winbond ATA quirk, required for briq mostly because the
+ * 8259 is configured for level sensitive IRQ 14 and so wants the
+ * ATA controller to be set to fully native mode or bad things
+ * will happen.
+ */
+static void __devinit chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105)
 {
        u8 progif;
 
@@ -334,10 +338,15 @@ void chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105)
                sl82c105->class |= 0x05;
                /* Disable SL82C105 second port */
                pci_write_config_word(sl82c105, SL82C105_IDECSR, 0x0003);
+               /* Clear IO BARs, they will be reassigned */
+               pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_0, 0);
+               pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_1, 0);
+               pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_2, 0);
+               pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_3, 0);
        }
 }
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
-               chrp_pci_fixup_winbond_ata);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
+                       chrp_pci_fixup_winbond_ata);
 
 /* Pegasos2 firmware version 20040810 configures the built-in IDE controller
  * in legacy mode, but sets the PCI registers to PCI native mode.
@@ -345,7 +354,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
  * mode as well. The same fixup must be done to the class-code property in
  * the IDE node /pci@80000000/ide@C,1
  */
-static void chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide)
+static void __devinit chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide)
 {
        u8 progif;
        struct pci_dev *viaisa;
@@ -366,4 +375,4 @@ static void chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide)
 
        pci_dev_put(viaisa);
 }
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, chrp_pci_fixup_vt8231_ata);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, chrp_pci_fixup_vt8231_ata);
index ec49099830d55b0fe5c256180b3ac8b3c7f4eafb..f852ae3e0ee42a016adc6155b2f5c37942f6dbc5 100644 (file)
@@ -1243,15 +1243,22 @@ void pmac_pci_fixup_pciata(struct pci_dev* dev)
  good:
        pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
        if ((progif & 5) != 5) {
-               printk(KERN_INFO "Forcing PCI IDE into native mode: %s\n",
+               printk(KERN_INFO "PCI: %s Forcing PCI IDE into native mode\n",
                       pci_name(dev));
                (void) pci_write_config_byte(dev, PCI_CLASS_PROG, progif|5);
                if (pci_read_config_byte(dev, PCI_CLASS_PROG, &progif) ||
                    (progif & 5) != 5)
                        printk(KERN_ERR "Rewrite of PROGIF failed !\n");
+               else {
+                       /* Clear IO BARs, they will be reassigned */
+                       pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, 0);
+                       pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, 0);
+                       pci_write_config_dword(dev, PCI_BASE_ADDRESS_2, 0);
+                       pci_write_config_dword(dev, PCI_BASE_ADDRESS_3, 0);
+               }
        }
 }
-DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata);
+DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata);
 #endif
 
 /*
index 463a5a9d583d03747323285a18df00d5e46d717c..c2f8a78c894c180dbf838fbce8cf2d0c4212057f 100644 (file)
@@ -743,46 +743,22 @@ static int pci_setup_device(struct pci_dev * dev)
                 */
                if (class == PCI_CLASS_STORAGE_IDE) {
                        u8 progif;
-                       struct pci_bus_region region;
-
                        pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
                        if ((progif & 1) == 0) {
-                               struct resource resource = {
-                                       .start = 0x1F0,
-                                       .end = 0x1F7,
-                                       .flags = LEGACY_IO_RESOURCE,
-                               };
-
-                               pcibios_resource_to_bus(dev, &region, &resource);
-                               dev->resource[0].start = region.start;
-                               dev->resource[0].end = region.end;
-                               dev->resource[0].flags = resource.flags;
-                               resource.start = 0x3F6;
-                               resource.end = 0x3F6;
-                               resource.flags = LEGACY_IO_RESOURCE;
-                               pcibios_resource_to_bus(dev, &region, &resource);
-                               dev->resource[1].start = region.start;
-                               dev->resource[1].end = region.end;
-                               dev->resource[1].flags = resource.flags;
+                               dev->resource[0].start = 0x1F0;
+                               dev->resource[0].end = 0x1F7;
+                               dev->resource[0].flags = LEGACY_IO_RESOURCE;
+                               dev->resource[1].start = 0x3F6;
+                               dev->resource[1].end = 0x3F6;
+                               dev->resource[1].flags = LEGACY_IO_RESOURCE;
                        }
                        if ((progif & 4) == 0) {
-                               struct resource resource = {
-                                       .start = 0x170,
-                                       .end = 0x177,
-                                       .flags = LEGACY_IO_RESOURCE,
-                               };
-
-                               pcibios_resource_to_bus(dev, &region, &resource);
-                               dev->resource[2].start = region.start;
-                               dev->resource[2].end = region.end;
-                               dev->resource[2].flags = resource.flags;
-                               resource.start = 0x376;
-                               resource.end = 0x376;
-                               resource.flags = LEGACY_IO_RESOURCE;
-                               pcibios_resource_to_bus(dev, &region, &resource);
-                               dev->resource[3].start = region.start;
-                               dev->resource[3].end = region.end;
-                               dev->resource[3].flags = resource.flags;
+                               dev->resource[2].start = 0x170;
+                               dev->resource[2].end = 0x177;
+                               dev->resource[2].flags = LEGACY_IO_RESOURCE;
+                               dev->resource[3].start = 0x376;
+                               dev->resource[3].end = 0x376;
+                               dev->resource[3].flags = LEGACY_IO_RESOURCE;
                        }
                }
                break;
index ee2ef8af0d43194536bb9e6744166c33002c8e9d..773a7aa80ab5ce53883cd7ad4d07a6019a175fe0 100644 (file)
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -330,7 +330,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
 
        /* Not enough space: must allocate a new page */
        if (!b) {
-               b = slob_new_page(gfp, 0, node);
+               b = slob_new_page(gfp & ~__GFP_ZERO, 0, node);
                if (!b)
                        return 0;
                sp = (struct slob_page *)virt_to_page(b);
index b9f37cb0f2e6a61d80eeca2b3c9dc3799e863bce..9c1d9f3b364f63d7a6be5cdc5f98f2b18f8f797a 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1468,6 +1468,9 @@ static void *__slab_alloc(struct kmem_cache *s,
        void **object;
        struct page *new;
 
+       /* We handle __GFP_ZERO in the caller */
+       gfpflags &= ~__GFP_ZERO;
+
        if (!c->page)
                goto new_slab;