Lines Matching refs:page

69 	/* i460 supports multiple GART page sizes, so GART pageshift is dynamic: */
78 int refcount; /* number of kernel pages using the large page */
79 u64 paddr; /* physical address of large page */
80 struct page *page; /* page pointer */
87 * The 32GB aperture is only available with a 4M GART page size. Due to the
88 * dynamic GART page size, we can't figure out page_order or num_entries until
110 /* Determine the GART page size */
117 "I/O (GART) page-size %luKB doesn't match expected "
230 * Initialize partial allocation trackers if a GART page is bigger than a kernel
231 * page.
289 * The following functions are called when the I/O (GART) page size is smaller than
355 * These functions are called when the I/O (GART) page size exceeds PAGE_SIZE.
358 * single GART page are possible. The i460.lp_desc array tracks partial allocation of the
361 * i460.lp_desc[pg_num].refcount tracks the number of kernel pages in use within GART page
362 * pg_num. i460.lp_desc[pg_num].paddr is the physical address of the large page and
371 lp->page = alloc_pages(GFP_KERNEL, order);
372 if (!lp->page) {
373 printk(KERN_ERR PFX "Couldn't alloc 4M GART page...\n");
380 __free_pages(lp->page, order);
385 lp->paddr = page_to_phys(lp->page);
396 __free_pages(lp->page, I460_IO_PAGE_SHIFT - PAGE_SHIFT);
427 continue; /* OK, the entire large page is available... */
453 mem->pages[i] = lp->page;
519 * If the I/O (GART) page size is bigger than the kernel page size, we don't want to
521 * multi-kernel-page alloc might fit inside of an already allocated GART page).
526 static struct page *i460_alloc_page (struct agp_bridge_data *bridge)
528 void *page;
531 page = agp_generic_alloc_page(agp_bridge);
535 page = (void *)~0UL;
536 return page;
539 static void i460_destroy_page (struct page *page, int flags)
542 agp_generic_destroy_page(page, flags);