Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
Linus Torvalds [Tue, 15 Sep 2009 16:51:09 +0000 (09:51 -0700)]
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (134 commits)
  powerpc/nvram: Enable use Generic NVRAM driver for different size chips
  powerpc/iseries: Fix oops reading from /proc/iSeries/mf/*/cmdline
  powerpc/ps3: Workaround for flash memory I/O error
  powerpc/booke: Don't set DABR on 64-bit BookE, use DAC1 instead
  powerpc/perf_counters: Reduce stack usage of power_check_constraints
  powerpc: Fix bug where perf_counters breaks oprofile
  powerpc/85xx: Fix SMP compile error and allow NULL for smp_ops
  powerpc/irq: Improve nanodoc
  powerpc: Fix some late PowerMac G5 with PCIe ATI graphics
  powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT
  powerpc/book3e: Add missing page sizes
  powerpc/pseries: Fix to handle slb resize across migration
  powerpc/powermac: Thermal control turns system off too eagerly
  powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan()
  powerpc/405ex: support cuImage via included dtb
  powerpc/405ex: provide necessary fixup function to support cuImage
  powerpc/40x: Add support for the ESTeem 195E (PPC405EP) SBC
  powerpc/44x: Add Eiger AMCC (AppliedMicro) PPC460SX evaluation board support.
  powerpc/44x: Update Arches defconfig
  powerpc/44x: Update Arches dts
  ...

Fix up conflicts in drivers/char/agp/uninorth-agp.c

1  2 
arch/powerpc/Kconfig
arch/powerpc/include/asm/device.h
arch/powerpc/kernel/setup_64.c
arch/powerpc/kernel/vmlinux.lds.S
drivers/char/agp/uninorth-agp.c
include/linux/pci_ids.h
lib/Kconfig.debug

Simple merge
Simple merge
Simple merge
Simple merge
@@@ -424,14 -424,28 +424,28 @@@ static int uninorth_create_gatt_table(s
        if (table == NULL)
                return -ENOMEM;
  
+       pages = kmalloc((1 << page_order) * sizeof(struct page*), GFP_KERNEL);
+       if (pages == NULL)
+               goto enomem;
        table_end = table + ((PAGE_SIZE * (1 << page_order)) - 1);
  
-       for (page = virt_to_page(table); page <= virt_to_page(table_end); page++)
+       for (page = virt_to_page(table), i = 0; page <= virt_to_page(table_end);
+            page++, i++) {
                SetPageReserved(page);
+               pages[i] = page;
+       }
  
        bridge->gatt_table_real = (u32 *) table;
-       bridge->gatt_table = (u32 *)table;
+       /* Need to clear out any dirty data still sitting in caches */
+       flush_dcache_range((unsigned long)table,
+                          (unsigned long)(table_end + PAGE_SIZE));
+       bridge->gatt_table = vmap(pages, (1 << page_order), 0, PAGE_KERNEL_NCG);
+       if (bridge->gatt_table == NULL)
+               goto enomem;
 -      bridge->gatt_bus_addr = virt_to_gart(table);
 +      bridge->gatt_bus_addr = virt_to_phys(table);
  
        for (i = 0; i < num_entries; i++)
                bridge->gatt_table[i] = 0;
Simple merge
Simple merge