Lines Matching refs:page

40 #include <asm/page.h>
61 } page[];
109 struct page *page;
115 page = alloc_pages(gfp_mask | __GFP_ZERO, order);
116 if (!page)
119 sg_set_page(mem, page, PAGE_SIZE << order, 0);
283 struct page *page = NULL;
306 * so if we found the page, dma_handle has already
309 page = sg_page(&chunk->mem[i]);
318 return page ? lowmem_page_address(page) + offset : NULL;
439 static u64 mthca_uarc_virt(struct mthca_dev *dev, struct mthca_uar *uar, int page)
443 page * MTHCA_ICM_PAGE_SIZE;
449 struct page *pages[1];
463 if ((db_tab->page[i].refcount >= MTHCA_DB_REC_PER_PAGE) ||
464 (db_tab->page[i].uvirt && db_tab->page[i].uvirt != uaddr) ||
470 if (db_tab->page[i].refcount) {
471 ++db_tab->page[i].refcount;
480 sg_set_page(&db_tab->page[i].mem, pages[0], MTHCA_ICM_PAGE_SIZE,
483 ret = dma_map_sg(&dev->pdev->dev, &db_tab->page[i].mem, 1,
490 ret = mthca_MAP_ICM_page(dev, sg_dma_address(&db_tab->page[i].mem),
493 dma_unmap_sg(&dev->pdev->dev, &db_tab->page[i].mem, 1,
495 unpin_user_page(sg_page(&db_tab->page[i].mem));
499 db_tab->page[i].uvirt = uaddr;
500 db_tab->page[i].refcount = 1;
520 --db_tab->page[index / MTHCA_DB_REC_PER_PAGE].refcount;
535 db_tab = kmalloc(struct_size(db_tab, page, npages), GFP_KERNEL);
541 db_tab->page[i].refcount = 0;
542 db_tab->page[i].uvirt = 0;
543 sg_init_table(&db_tab->page[i].mem, 1);
558 if (db_tab->page[i].uvirt) {
560 dma_unmap_sg(&dev->pdev->dev, &db_tab->page[i].mem, 1,
562 unpin_user_page(sg_page(&db_tab->page[i].mem));
575 struct mthca_db_page *page;
604 if (dev->db_tab->page[i].db_rec &&
605 !bitmap_full(dev->db_tab->page[i].used,
607 page = dev->db_tab->page + i;
612 if (!dev->db_tab->page[i].db_rec) {
613 page = dev->db_tab->page + i;
627 page = dev->db_tab->page + end;
630 page->db_rec = dma_alloc_coherent(&dev->pdev->dev,
631 MTHCA_ICM_PAGE_SIZE, &page->mapping,
633 if (!page->db_rec) {
638 ret = mthca_MAP_ICM_page(dev, page->mapping,
642 page->db_rec, page->mapping);
646 bitmap_zero(page->used, MTHCA_DB_REC_PER_PAGE);
649 j = find_first_zero_bit(page->used, MTHCA_DB_REC_PER_PAGE);
650 set_bit(j, page->used);
657 page->db_rec[j] = cpu_to_be64((qn << 8) | (type << 5));
659 *db = (__be32 *) &page->db_rec[j];
670 struct mthca_db_page *page;
675 page = dev->db_tab->page + i;
679 page->db_rec[j] = 0;
682 clear_bit(j, page->used);
684 if (bitmap_empty(page->used, MTHCA_DB_REC_PER_PAGE) &&
689 page->db_rec, page->mapping);
690 page->db_rec = NULL;
720 dev->db_tab->page = kmalloc_array(dev->db_tab->npages,
721 sizeof(*dev->db_tab->page),
723 if (!dev->db_tab->page) {
729 dev->db_tab->page[i].db_rec = NULL;
748 if (!dev->db_tab->page[i].db_rec)
751 if (!bitmap_empty(dev->db_tab->page[i].used, MTHCA_DB_REC_PER_PAGE))
752 mthca_warn(dev, "Kernel UARC page %d not empty\n", i);
757 dev->db_tab->page[i].db_rec,
758 dev->db_tab->page[i].mapping);
761 kfree(dev->db_tab->page);