]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
authorLinus Torvalds <torvalds@g5.osdl.org>
Mon, 7 Nov 2005 21:26:58 +0000 (13:26 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 7 Nov 2005 21:26:58 +0000 (13:26 -0800)
1  2 
drivers/char/agp/ali-agp.c
drivers/char/agp/amd64-agp.c
drivers/char/agp/ati-agp.c
drivers/char/agp/i460-agp.c
drivers/char/agp/sgi-agp.c
drivers/char/agp/sworks-agp.c

index b02fc2267159675c32e8e6a58c27ab8173a9161f,4de5dcb42515ceebf6700eb45cd9828d7536c879..ba54b58725781e4678a41409318c0e45ff72b7ad
@@@ -7,7 -7,6 +7,7 @@@
  #include <linux/pci.h>
  #include <linux/init.h>
  #include <linux/agp_backend.h>
 +#include <asm/page.h>         /* PAGE_SIZE */
  #include "agp.h"
  
  #define ALI_AGPCTRL   0xb8
@@@ -389,6 -388,7 +389,7 @@@ static struct pci_device_id agp_ali_pci
  MODULE_DEVICE_TABLE(pci, agp_ali_pci_table);
  
  static struct pci_driver agp_ali_pci_driver = {
+       .owner          = THIS_MODULE,
        .name           = "agpgart-ali",
        .id_table       = agp_ali_pci_table,
        .probe          = agp_ali_probe,
index 78ce98a69f37044dfe17c98d6f264f3989535a23,b954ddcecd31553556f48c670d722b9cca7b4e82..8f748fddca9456d9cdb591d63d67aea049dc3e27
@@@ -13,8 -13,6 +13,8 @@@
  #include <linux/pci.h>
  #include <linux/init.h>
  #include <linux/agp_backend.h>
 +#include <linux/mmzone.h>
 +#include <asm/page.h>         /* PAGE_SIZE */
  #include "agp.h"
  
  /* Will need to be increased if AMD64 ever goes >8-way. */
@@@ -703,6 -701,7 +703,7 @@@ static struct pci_device_id agp_amd64_p
  MODULE_DEVICE_TABLE(pci, agp_amd64_pci_table);
  
  static struct pci_driver agp_amd64_pci_driver = {
+       .owner          = THIS_MODULE,
        .name           = "agpgart-amd64",
        .id_table       = agp_amd64_pci_table,
        .probe          = agp_amd64_probe,
index 0b6e72642d6e5a0126038d5cd553f39fd87d4d0c,9e9ad8cbf2964038efccc484fb6bc2147442ed29..fbd415565463426bf299188b47d5b482f6d4d47f
@@@ -6,8 -6,6 +6,8 @@@
  #include <linux/module.h>
  #include <linux/pci.h>
  #include <linux/init.h>
 +#include <linux/string.h>
 +#include <linux/slab.h>
  #include <linux/agp_backend.h>
  #include <asm/agp.h>
  #include "agp.h"
@@@ -118,14 -116,12 +118,12 @@@ static int ati_create_gatt_pages(int nr
        int retval = 0;
        int i;
  
-       tables = kmalloc((nr_tables + 1) * sizeof(ati_page_map *),
-                        GFP_KERNEL);
+       tables = kzalloc((nr_tables + 1) * sizeof(ati_page_map *),GFP_KERNEL);
        if (tables == NULL)
                return -ENOMEM;
  
-       memset(tables, 0, sizeof(ati_page_map *) * (nr_tables + 1));
        for (i = 0; i < nr_tables; i++) {
-               entry = kmalloc(sizeof(ati_page_map), GFP_KERNEL);
+               entry = kzalloc(sizeof(ati_page_map), GFP_KERNEL);
                if (entry == NULL) {
                        while (i>0) {
                                kfree (tables[i-1]);
                        retval = -ENOMEM;
                        break;
                }
-               memset(entry, 0, sizeof(ati_page_map));
                tables[i] = entry;
                retval = ati_create_page_map(entry);
                if (retval != 0) break;
@@@ -524,6 -519,7 +521,7 @@@ static struct pci_device_id agp_ati_pci
  MODULE_DEVICE_TABLE(pci, agp_ati_pci_table);
  
  static struct pci_driver agp_ati_pci_driver = {
+       .owner          = THIS_MODULE,
        .name           = "agpgart-ati",
        .id_table       = agp_ati_pci_table,
        .probe          = agp_ati_probe,
index a2d9e5e48bbeeff576bb7f0ac953b837017695b3,e2c616ba583464bc1dc3efdb9b810a1d91b2bed9..58944cd271ead9c55120a43ffa014bd5f34ac9cf
@@@ -10,8 -10,6 +10,8 @@@
  #include <linux/module.h>
  #include <linux/pci.h>
  #include <linux/init.h>
 +#include <linux/string.h>
 +#include <linux/slab.h>
  #include <linux/agp_backend.h>
  
  #include "agp.h"
@@@ -227,10 -225,9 +227,9 @@@ static int i460_configure (void
         */
        if (I460_IO_PAGE_SHIFT > PAGE_SHIFT) {
                size = current_size->num_entries * sizeof(i460.lp_desc[0]);
-               i460.lp_desc = kmalloc(size, GFP_KERNEL);
+               i460.lp_desc = kzalloc(size, GFP_KERNEL);
                if (!i460.lp_desc)
                        return -ENOMEM;
-               memset(i460.lp_desc, 0, size);
        }
        return 0;
  }
@@@ -366,13 -363,12 +365,12 @@@ static int i460_alloc_large_page (struc
        }
  
        map_size = ((I460_KPAGES_PER_IOPAGE + BITS_PER_LONG - 1) & -BITS_PER_LONG)/8;
-       lp->alloced_map = kmalloc(map_size, GFP_KERNEL);
+       lp->alloced_map = kzalloc(map_size, GFP_KERNEL);
        if (!lp->alloced_map) {
                free_pages((unsigned long) lpage, order);
                printk(KERN_ERR PFX "Out of memory, we're in trouble...\n");
                return -ENOMEM;
        }
-       memset(lp->alloced_map, 0, map_size);
  
        lp->paddr = virt_to_gart(lpage);
        lp->refcount = 0;
@@@ -619,6 -615,7 +617,7 @@@ static struct pci_device_id agp_intel_i
  MODULE_DEVICE_TABLE(pci, agp_intel_i460_pci_table);
  
  static struct pci_driver agp_intel_i460_pci_driver = {
+       .owner          = THIS_MODULE,
        .name           = "agpgart-intel-i460",
        .id_table       = agp_intel_i460_pci_table,
        .probe          = agp_intel_i460_probe,
index 7957fc91f6ada9faad5df39d4381e52e90267ce4,53eeb293d174006016e695389c5fd714c8f44361..4df7734b51c2b37824715038e5e0f9eb1c38fa00
@@@ -17,7 -17,6 +17,7 @@@
  #include <linux/init.h>
  #include <linux/agp_backend.h>
  #include <asm/sn/addrs.h>
 +#include <asm/sn/io.h>
  #include <asm/sn/pcidev.h>
  #include <asm/sn/pcibus_provider_defs.h>
  #include <asm/sn/tioca_provider.h>
@@@ -289,6 -288,8 +289,8 @@@ static int __devinit agp_sgi_init(void
        j = 0;
        list_for_each_entry(info, &tioca_list, ca_list) {
                struct list_head *tmp;
+               if (list_empty(info->ca_devices))
+                       continue;
                list_for_each(tmp, info->ca_devices) {
                        u8 cap_ptr;
                        pdev = pci_dev_b(tmp);
index 71ea59a1dbebf982fecbd86cc06fa516d2bcd152,94a855e1c0b58c32bb554b31fc738458c032d7b3..5a5392dd1254765de3b7345e317bbe9dac5878a4
@@@ -5,8 -5,6 +5,8 @@@
  #include <linux/module.h>
  #include <linux/pci.h>
  #include <linux/init.h>
 +#include <linux/string.h>
 +#include <linux/slab.h>
  #include <linux/agp_backend.h>
  #include "agp.h"
  
@@@ -102,19 -100,17 +102,17 @@@ static int serverworks_create_gatt_page
        int retval = 0;
        int i;
  
-       tables = kmalloc((nr_tables + 1) * sizeof(struct serverworks_page_map *), 
+       tables = kzalloc((nr_tables + 1) * sizeof(struct serverworks_page_map *), 
                         GFP_KERNEL);
-       if (tables == NULL) {
+       if (tables == NULL)
                return -ENOMEM;
-       }
-       memset(tables, 0, sizeof(struct serverworks_page_map *) * (nr_tables + 1));
        for (i = 0; i < nr_tables; i++) {
-               entry = kmalloc(sizeof(struct serverworks_page_map), GFP_KERNEL);
+               entry = kzalloc(sizeof(struct serverworks_page_map), GFP_KERNEL);
                if (entry == NULL) {
                        retval = -ENOMEM;
                        break;
                }
-               memset(entry, 0, sizeof(struct serverworks_page_map));
                tables[i] = entry;
                retval = serverworks_create_page_map(entry);
                if (retval != 0) break;
@@@ -244,13 -240,27 +242,27 @@@ static int serverworks_fetch_size(void
   */
  static void serverworks_tlbflush(struct agp_memory *temp)
  {
+       unsigned long timeout;
        writeb(1, serverworks_private.registers+SVWRKS_POSTFLUSH);
-       while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1)
+       timeout = jiffies + 3*HZ;
+       while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1) {
                cpu_relax();
+               if (time_after(jiffies, timeout)) {
+                       printk(KERN_ERR PFX "TLB post flush took more than 3 seconds\n");
+                       break;
+               }
+       }
  
        writel(1, serverworks_private.registers+SVWRKS_DIRFLUSH);
-       while(readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1)
+       timeout = jiffies + 3*HZ;
+       while (readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1) {
                cpu_relax();
+               if (time_after(jiffies, timeout)) {
+                       printk(KERN_ERR PFX "TLB Dir flush took more than 3 seconds\n");
+                       break;
+               }
+       }
  }
  
  static int serverworks_configure(void)
@@@ -533,6 -543,7 +545,7 @@@ static struct pci_device_id agp_serverw
  MODULE_DEVICE_TABLE(pci, agp_serverworks_pci_table);
  
  static struct pci_driver agp_serverworks_pci_driver = {
+       .owner          = THIS_MODULE,
        .name           = "agpgart-serverworks",
        .id_table       = agp_serverworks_pci_table,
        .probe          = agp_serverworks_probe,