Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart

* master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart:
[AGPGART] Add new IDs to VIA AGP.
[AGPGART] Remove pointless assignment.
[AGPGART] Remove pointless typedef in ati-agp
[AGPGART] Prevent (unlikely) memory leak in amd_create_gatt_pages()
[AGPGART] intel_agp: restore graphics device's pci space early in resume

+54 -22
+5
drivers/char/agp/amd-k7-agp.c
··· 101 101 for (i = 0; i < nr_tables; i++) { 102 102 entry = kzalloc(sizeof(struct amd_page_map), GFP_KERNEL); 103 103 if (entry == NULL) { 104 + while (i > 0) { 105 + kfree(tables[i-1]); 106 + i--; 107 + } 108 + kfree(tables); 104 109 retval = -ENOMEM; 105 110 break; 106 111 }
+1 -1
drivers/char/agp/amd64-agp.c
··· 655 655 .class = (PCI_CLASS_BRIDGE_HOST << 8), 656 656 .class_mask = ~0, 657 657 .vendor = PCI_VENDOR_ID_VIA, 658 - .device = PCI_DEVICE_ID_VIA_K8M890CE, 658 + .device = PCI_DEVICE_ID_VIA_VT3336, 659 659 .subvendor = PCI_ANY_ID, 660 660 .subdevice = PCI_ANY_ID, 661 661 },
+18 -18
drivers/char/agp/ati-agp.c
··· 41 41 }; 42 42 43 43 44 - typedef struct _ati_page_map { 44 + struct ati_page_map { 45 45 unsigned long *real; 46 46 unsigned long __iomem *remapped; 47 - } ati_page_map; 47 + }; 48 48 49 49 static struct _ati_generic_private { 50 50 volatile u8 __iomem *registers; 51 - ati_page_map **gatt_pages; 51 + struct ati_page_map **gatt_pages; 52 52 int num_tables; 53 53 } ati_generic_private; 54 54 55 - static int ati_create_page_map(ati_page_map *page_map) 55 + static int ati_create_page_map(struct ati_page_map *page_map) 56 56 { 57 57 int i, err = 0; 58 58 ··· 82 82 } 83 83 84 84 85 - static void ati_free_page_map(ati_page_map *page_map) 85 + static void ati_free_page_map(struct ati_page_map *page_map) 86 86 { 87 87 unmap_page_from_agp(virt_to_page(page_map->real)); 88 88 iounmap(page_map->remapped); ··· 94 94 static void ati_free_gatt_pages(void) 95 95 { 96 96 int i; 97 - ati_page_map **tables; 98 - ati_page_map *entry; 97 + struct ati_page_map **tables; 98 + struct ati_page_map *entry; 99 99 100 100 tables = ati_generic_private.gatt_pages; 101 101 for (i = 0; i < ati_generic_private.num_tables; i++) { ··· 112 112 113 113 static int ati_create_gatt_pages(int nr_tables) 114 114 { 115 - ati_page_map **tables; 116 - ati_page_map *entry; 115 + struct ati_page_map **tables; 116 + struct ati_page_map *entry; 117 117 int retval = 0; 118 118 int i; 119 119 120 - tables = kzalloc((nr_tables + 1) * sizeof(ati_page_map *),GFP_KERNEL); 120 + tables = kzalloc((nr_tables + 1) * sizeof(struct ati_page_map *),GFP_KERNEL); 121 121 if (tables == NULL) 122 122 return -ENOMEM; 123 123 124 124 for (i = 0; i < nr_tables; i++) { 125 - entry = kzalloc(sizeof(ati_page_map), GFP_KERNEL); 125 + entry = kzalloc(sizeof(struct ati_page_map), GFP_KERNEL); 126 126 if (entry == NULL) { 127 - while (i>0) { 128 - kfree (tables[i-1]); 127 + while (i > 0) { 128 + kfree(tables[i-1]); 129 129 i--; 130 130 } 131 - kfree (tables); 132 - tables = NULL; 131 + kfree(tables); 133 132 retval = -ENOMEM; 134 133 break; 135 134 } 136 135 tables[i] = entry; 137 136 retval = ati_create_page_map(entry); 138 - if (retval != 0) break; 137 + if (retval != 0) 138 + break; 139 139 } 140 140 ati_generic_private.num_tables = nr_tables; 141 141 ati_generic_private.gatt_pages = tables; ··· 340 340 static int ati_create_gatt_table(struct agp_bridge_data *bridge) 341 341 { 342 342 struct aper_size_info_lvl2 *value; 343 - ati_page_map page_dir; 343 + struct ati_page_map page_dir; 344 344 unsigned long addr; 345 345 int retval; 346 346 u32 temp; ··· 400 400 401 401 static int ati_free_gatt_table(struct agp_bridge_data *bridge) 402 402 { 403 - ati_page_map page_dir; 403 + struct ati_page_map page_dir; 404 404 405 405 page_dir.real = (unsigned long *)agp_bridge->gatt_table_real; 406 406 page_dir.remapped = (unsigned long __iomem *)agp_bridge->gatt_table;
+9
drivers/char/agp/intel-agp.c
··· 1955 1955 1956 1956 pci_restore_state(pdev); 1957 1957 1958 + /* We should restore our graphics device's config space, 1959 + * as host bridge (00:00) resumes before graphics device (02:00), 1960 + * then our access to its pci space can work right. 1961 + */ 1962 + if (intel_i810_private.i810_dev) 1963 + pci_restore_state(intel_i810_private.i810_dev); 1964 + if (intel_i830_private.i830_dev) 1965 + pci_restore_state(intel_i830_private.i830_dev); 1966 + 1958 1967 if (bridge->driver == &intel_generic_driver) 1959 1968 intel_configure(); 1960 1969 else if (bridge->driver == &intel_850_driver)
+19 -2
drivers/char/agp/via-agp.c
··· 380 380 /* P4M800CE */ 381 381 { 382 382 .device_id = PCI_DEVICE_ID_VIA_P4M800CE, 383 - .chipset_name = "P4M800CE", 383 + .chipset_name = "VT3314", 384 384 }, 385 - 385 + /* CX700 */ 386 + { 387 + .device_id = PCI_DEVICE_ID_VIA_CX700, 388 + .chipset_name = "CX700", 389 + }, 390 + /* VT3336 */ 391 + { 392 + .device_id = PCI_DEVICE_ID_VIA_VT3336, 393 + .chipset_name = "VT3336", 394 + }, 395 + /* P4M890 */ 396 + { 397 + .device_id = PCI_DEVICE_ID_VIA_P4M890, 398 + .chipset_name = "P4M890", 399 + }, 386 400 { }, /* dummy final entry, always present */ 387 401 }; 388 402 ··· 538 524 ID(PCI_DEVICE_ID_VIA_83_87XX_1), 539 525 ID(PCI_DEVICE_ID_VIA_3296_0), 540 526 ID(PCI_DEVICE_ID_VIA_P4M800CE), 527 + ID(PCI_DEVICE_ID_VIA_CX700), 528 + ID(PCI_DEVICE_ID_VIA_VT3336), 529 + ID(PCI_DEVICE_ID_VIA_P4M890), 541 530 { } 542 531 }; 543 532
+2 -1
include/linux/pci_ids.h
··· 1277 1277 #define PCI_DEVICE_ID_VIA_3296_0 0x0296 1278 1278 #define PCI_DEVICE_ID_VIA_8363_0 0x0305 1279 1279 #define PCI_DEVICE_ID_VIA_P4M800CE 0x0314 1280 - #define PCI_DEVICE_ID_VIA_K8M890CE 0x0336 1280 + #define PCI_DEVICE_ID_VIA_P4M890 0x0327 1281 + #define PCI_DEVICE_ID_VIA_VT3336 0x0336 1281 1282 #define PCI_DEVICE_ID_VIA_8371_0 0x0391 1282 1283 #define PCI_DEVICE_ID_VIA_8501_0 0x0501 1283 1284 #define PCI_DEVICE_ID_VIA_82C561 0x0561