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