Merge branch 'agp-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6

* 'agp-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6:
agp: balance ioremap checks
agp: Add device id for P4M900 to via-agp module
efficeon-agp leaks 'struct agp_bridge_data' in error paths of agp_efficeon_probe()

+30 -5
+2
drivers/char/agp/amd-k7-agp.c
··· 223 pci_read_config_dword(agp_bridge->dev, AMD_MMBASE, &temp); 224 temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); 225 amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 226 227 /* Write out the address of the gatt table */ 228 writel(agp_bridge->gatt_bus_addr, amd_irongate_private.registers+AMD_ATTBASE);
··· 223 pci_read_config_dword(agp_bridge->dev, AMD_MMBASE, &temp); 224 temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); 225 amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 226 + if (!amd_irongate_private.registers) 227 + return -ENOMEM; 228 229 /* Write out the address of the gatt table */ 230 writel(agp_bridge->gatt_bus_addr, amd_irongate_private.registers+AMD_ATTBASE);
+3
drivers/char/agp/ati-agp.c
··· 213 temp = (temp & 0xfffff000); 214 ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 215 216 if (is_r200()) 217 pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000); 218 else
··· 213 temp = (temp & 0xfffff000); 214 ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 215 216 + if (!ati_generic_private.registers) 217 + return -ENOMEM; 218 + 219 if (is_r200()) 220 pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000); 221 else
+2
drivers/char/agp/efficeon-agp.c
··· 375 if (!r->start && r->end) { 376 if (pci_assign_resource(pdev, 0)) { 377 printk(KERN_ERR PFX "could not assign resource 0\n"); 378 return -ENODEV; 379 } 380 } ··· 387 */ 388 if (pci_enable_device(pdev)) { 389 printk(KERN_ERR PFX "Unable to Enable PCI device\n"); 390 return -ENODEV; 391 } 392
··· 375 if (!r->start && r->end) { 376 if (pci_assign_resource(pdev, 0)) { 377 printk(KERN_ERR PFX "could not assign resource 0\n"); 378 + agp_put_bridge(bridge); 379 return -ENODEV; 380 } 381 } ··· 386 */ 387 if (pci_enable_device(pdev)) { 388 printk(KERN_ERR PFX "Unable to Enable PCI device\n"); 389 + agp_put_bridge(bridge); 390 return -ENODEV; 391 } 392
+1
drivers/char/agp/hp-agp.c
··· 221 if (cap != PCI_CAP_ID_AGP) { 222 printk(KERN_ERR PFX "Invalid capability ID 0x%02x at 0x%x\n", 223 cap, hp->lba_cap_offset); 224 return -ENODEV; 225 } 226
··· 221 if (cap != PCI_CAP_ID_AGP) { 222 printk(KERN_ERR PFX "Invalid capability ID 0x%02x at 0x%x\n", 223 cap, hp->lba_cap_offset); 224 + iounmap(hp->lba_regs); 225 return -ENODEV; 226 } 227
+4
drivers/char/agp/i460-agp.c
··· 249 num_entries = A_SIZE_8(temp)->num_entries; 250 251 i460.gatt = ioremap(INTEL_I460_ATTBASE, PAGE_SIZE << page_order); 252 253 /* These are no good, the should be removed from the agp_bridge strucure... */ 254 agp_bridge->gatt_table_real = NULL;
··· 249 num_entries = A_SIZE_8(temp)->num_entries; 250 251 i460.gatt = ioremap(INTEL_I460_ATTBASE, PAGE_SIZE << page_order); 252 + if (!i460.gatt) { 253 + printk(KERN_ERR PFX "ioremap failed\n"); 254 + return -ENOMEM; 255 + } 256 257 /* These are no good, the should be removed from the agp_bridge strucure... */ 258 agp_bridge->gatt_table_real = NULL;
+9 -5
drivers/char/agp/intel-agp.c
··· 930 temp &= 0xfff80000; 931 932 intel_private.registers = ioremap(temp,128 * 4096); 933 - if (!intel_private.registers) 934 return -ENOMEM; 935 936 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 937 global_cache_flush(); /* FIXME: ? */ ··· 987 temp &= 0xfff00000; 988 intel_private.gtt = ioremap((temp + (512 * 1024)) , 512 * 1024); 989 990 - if (!intel_private.gtt) 991 - return -ENOMEM; 992 993 994 intel_private.registers = ioremap(temp,128 * 4096); 995 - if (!intel_private.registers) 996 - return -ENOMEM; 997 998 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 999 global_cache_flush(); /* FIXME: ? */
··· 930 temp &= 0xfff80000; 931 932 intel_private.registers = ioremap(temp,128 * 4096); 933 + if (!intel_private.registers) { 934 + iounmap(intel_private.gtt); 935 return -ENOMEM; 936 + } 937 938 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 939 global_cache_flush(); /* FIXME: ? */ ··· 985 temp &= 0xfff00000; 986 intel_private.gtt = ioremap((temp + (512 * 1024)) , 512 * 1024); 987 988 + if (!intel_private.gtt) 989 + return -ENOMEM; 990 991 992 intel_private.registers = ioremap(temp,128 * 4096); 993 + if (!intel_private.registers) { 994 + iounmap(intel_private.gtt); 995 + return -ENOMEM; 996 + } 997 998 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 999 global_cache_flush(); /* FIXME: ? */
+3
drivers/char/agp/nvidia-agp.c
··· 157 nvidia_private.aperture = 158 (volatile u32 __iomem *) ioremap(apbase, 33 * PAGE_SIZE); 159 160 return 0; 161 } 162
··· 157 nvidia_private.aperture = 158 (volatile u32 __iomem *) ioremap(apbase, 33 * PAGE_SIZE); 159 160 + if (!nvidia_private.aperture) 161 + return -ENOMEM; 162 + 163 return 0; 164 } 165
+5
drivers/char/agp/via-agp.c
··· 399 .device_id = PCI_DEVICE_ID_VIA_P4M890, 400 .chipset_name = "P4M890", 401 }, 402 { }, /* dummy final entry, always present */ 403 }; 404
··· 399 .device_id = PCI_DEVICE_ID_VIA_P4M890, 400 .chipset_name = "P4M890", 401 }, 402 + /* P4M900 */ 403 + { 404 + .device_id = PCI_DEVICE_ID_VIA_VT3364, 405 + .chipset_name = "P4M900", 406 + }, 407 { }, /* dummy final entry, always present */ 408 }; 409
+1
include/linux/pci_ids.h
··· 1290 #define PCI_DEVICE_ID_VIA_VT3324 0x0324 1291 #define PCI_DEVICE_ID_VIA_VT3336 0x0336 1292 #define PCI_DEVICE_ID_VIA_VT3351 0x0351 1293 #define PCI_DEVICE_ID_VIA_8371_0 0x0391 1294 #define PCI_DEVICE_ID_VIA_8501_0 0x0501 1295 #define PCI_DEVICE_ID_VIA_82C561 0x0561
··· 1290 #define PCI_DEVICE_ID_VIA_VT3324 0x0324 1291 #define PCI_DEVICE_ID_VIA_VT3336 0x0336 1292 #define PCI_DEVICE_ID_VIA_VT3351 0x0351 1293 + #define PCI_DEVICE_ID_VIA_VT3364 0x0364 1294 #define PCI_DEVICE_ID_VIA_8371_0 0x0391 1295 #define PCI_DEVICE_ID_VIA_8501_0 0x0501 1296 #define PCI_DEVICE_ID_VIA_82C561 0x0561