*pci_gart++; 
pci_gart++; 
int drm_ati_pcigart_init(drm_device_t * dev, drm_ati_pcigart_info * gart_info){	drm_sg_mem_t *entry = dev->sg;	unsigned long address = 0;	unsigned long pages;	u32 *pci_gart, page_base, bus_address = 0;	int i, j, ret = 0;	if (!entry) {		DRM_ERROR("no scatter/gather memory!\n");		goto done;	}	if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) {		DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n");		address = drm_ati_alloc_pcigart_table();		if (!address) {			DRM_ERROR("cannot allocate PCI GART page!\n");			goto done;		}		if (!dev->pdev) {			DRM_ERROR("PCI device unknown!\n");			goto done;		}		bus_address = pci_map_single(dev->pdev, (void *)address,					     ATI_PCIGART_TABLE_PAGES *					     PAGE_SIZE, PCI_DMA_TODEVICE);		if (bus_address == 0) {			DRM_ERROR("unable to map PCIGART pages!\n");			drm_ati_free_pcigart_table(address);			address = 0;			goto done;		}	} else {		address = gart_info->addr;		bus_address = gart_info->bus_addr;		DRM_DEBUG("PCI: Gart Table: VRAM %08X mapped at %08lX\n",			  bus_address, address);	}	pci_gart = (u32 *) address;	pages = (entry->pages <= ATI_MAX_PCIGART_PAGES)	    ? entry->pages : ATI_MAX_PCIGART_PAGES;	memset(pci_gart, 0, ATI_MAX_PCIGART_PAGES * sizeof(u32));	for (i = 0; i < pages; i++) {		/* we need to support large memory configurations */		entry->busaddr[i] = pci_map_single(dev->pdev,						   page_address(entry->								pagelist[i]),						   PAGE_SIZE, PCI_DMA_TODEVICE);		if (entry->busaddr[i] == 0) {			DRM_ERROR("unable to map PCIGART pages!\n");			drm_ati_pcigart_cleanup(dev, gart_info);			address = 0;			bus_address = 0;			goto done;		}		page_base = (u32) entry->busaddr[i];		for (j = 0; j < (PAGE_SIZE / ATI_PCIGART_PAGE_SIZE); j++) {			if (gart_info->is_pcie)				*pci_gart = (cpu_to_le32(page_base) >> 8) | 0xc;			else				*pci_gart = cpu_to_le32(page_base);			*pci_gart++;			page_base += ATI_PCIGART_PAGE_SIZE;		}	}	ret = 1;#if defined(__i386__) || defined(__x86_64__)	wbinvd();#else	mb();#endif      done:	gart_info->addr = address;	gart_info->bus_addr = bus_address;	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d34d7ae266b23932809c43f115fda71fc5e5fcb1/ati_pcigart.c/buggy/drivers/char/drm/ati_pcigart.c