int agp_generic_create_gatt_table() { count_t pages; pages = bridge->current_size->pages_count; if( bridge->gatt_dma = AllocPages(pages)) { if(bridge->gatt_table = (u32_t*)MapIoMem((void*)bridge->gatt_dma, pages<<12, PG_SW+PG_NOCACHE)) { dbgprintf("gatt map %x at %x %d pages\n",bridge->gatt_dma , bridge->gatt_table, pages); /* AK: bogus, should encode addresses > 4GB */ u32_t volatile *table = bridge->gatt_table; count_t count = bridge->current_size->num_entries; while(count--) { /* FIXME memset */ addr_t tmp; *table = 0; table++; } return 1; }; }; dbgprintf("unable to get memory for " "graphics translation table.\n"); return 0; }
void* pci_alloc_consistent( void* pci_dev, size_t size, dma_addr_t* dma_handle ) { void* res; // res = pci_alloc_dmamem( pci_dev, size ); res = (void*) AllocPages( size, MEMF_PUBLIC ); *dma_handle = (dma_addr_t) pci_virt_to_bus( pci_dev, res ); return res; }
void* pci_alloc_consistent( void* pci_dev, size_t size, dma_addr_t* dma_handle ) { void* res; // res = pci_alloc_dmamem( pci_dev, size ); res = (void*) AllocPages( size, MEMF_PUBLIC | MEMF_CLEAR ); *dma_handle = (dma_addr_t) ahi_pci_logic_to_physic_addr( res, pci_dev ); return res; }
static struct sg_table * i915_pages_create_for_fb(struct drm_device *dev, u32 offset, u32 size) { struct drm_i915_private *dev_priv = dev->dev_private; struct sg_table *st; struct scatterlist *sg; addr_t fb_pages; DRM_DEBUG_DRIVER("offset=0x%x, size=%d\n", offset, size); // BUG_ON(offset > dev_priv->gtt.stolen_size - size); /* We hide that we have no struct page backing our stolen object * by wrapping the contiguous physical allocation with a fake * dma mapping in a single scatterlist. */ st = kmalloc(sizeof(*st), GFP_KERNEL); if (st == NULL) return NULL; if (sg_alloc_table(st, 1, GFP_KERNEL)) { kfree(st); return NULL; } fb_pages = AllocPages(size/PAGE_SIZE); if(fb_pages == 0) { kfree(st); return NULL; }; sg = st->sgl; sg->offset = offset; sg->length = size; sg_dma_address(sg) = (dma_addr_t)fb_pages; sg_dma_len(sg) = size; return st; }
unsigned long __get_free_page( unsigned int gfp_mask ) { return (unsigned long) AllocPages( PAGE_SIZE, MEMF_PUBLIC ); }