Lines Matching refs:page

39 #include <linux/page.h>
60 } page[0];
108 struct page *page;
114 page = alloc_pages(gfp_mask | __GFP_ZERO, order);
115 if (!page)
118 sg_set_page(mem, page, PAGE_SIZE << order, 0);
285 struct page *page = NULL;
308 * so if we found the page, dma_handle has already
311 page = sg_page(&chunk->mem[i]);
320 return page ? lowmem_page_address(page) + offset : NULL;
444 static u64 mthca_uarc_virt(struct mthca_dev *dev, struct mthca_uar *uar, int page)
448 page * MTHCA_ICM_PAGE_SIZE;
463 struct page *pages[1];
478 if ((db_tab->page[i].refcount >= MTHCA_DB_REC_PER_PAGE) ||
479 (db_tab->page[i].uvirt && db_tab->page[i].uvirt != uaddr) ||
485 if (db_tab->page[i].refcount) {
486 ++db_tab->page[i].refcount;
495 sg_set_page(&db_tab->page[i].mem, pages[0], MTHCA_ICM_PAGE_SIZE,
498 ret = pci_map_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
504 ret = mthca_MAP_ICM_page(dev, sg_dma_address(&db_tab->page[i].mem),
509 pci_unmap_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
510 put_page(sg_page(&db_tab->page[i].mem));
514 db_tab->page[i].uvirt = uaddr;
515 db_tab->page[i].refcount = 1;
541 if ((db_tab->page[i].refcount >= MTHCA_DB_REC_PER_PAGE) ||
542 (db_tab->page[i].uvirt && db_tab->page[i].uvirt != uaddr) ||
548 if (db_tab->page[i].refcount) {
549 ++db_tab->page[i].refcount;
581 sg_set_page(&db_tab->page[i].mem, m, MTHCA_ICM_PAGE_SIZE,
584 ret = pci_map_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
588 ret = mthca_MAP_ICM_page(dev, sg_dma_address(&db_tab->page[i].mem),
593 pci_unmap_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
597 db_tab->page[i].uvirt = uaddr;
598 db_tab->page[i].refcount = 1;
623 --db_tab->page[index / MTHCA_DB_REC_PER_PAGE].refcount;
638 db_tab = kmalloc(sizeof *db_tab + npages * sizeof *db_tab->page, GFP_KERNEL);
644 db_tab->page[i].refcount = 0;
645 db_tab->page[i].uvirt = 0;
646 sg_init_table(&db_tab->page[i].mem, 1);
662 if (db_tab->page[i].uvirt) {
664 pci_unmap_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
666 put_page(sg_page(&db_tab->page[i].mem));
670 start = db_tab->page[i].uvirt & PAGE_MASK;
687 struct mthca_db_page *page;
717 if (dev->db_tab->page[i].db_rec &&
718 !bitmap_full(dev->db_tab->page[i].used,
720 page = dev->db_tab->page + i;
725 if (!dev->db_tab->page[i].db_rec) {
726 page = dev->db_tab->page + i;
740 page = dev->db_tab->page + end;
743 page->db_rec = dma_alloc_coherent(&dev->pdev->dev, MTHCA_ICM_PAGE_SIZE,
744 &page->mapping, GFP_KERNEL);
745 if (!page->db_rec) {
749 memset(page->db_rec, 0, MTHCA_ICM_PAGE_SIZE);
751 ret = mthca_MAP_ICM_page(dev, page->mapping,
757 page->db_rec, page->mapping);
761 bitmap_zero(page->used, MTHCA_DB_REC_PER_PAGE);
764 j = find_first_zero_bit(page->used, MTHCA_DB_REC_PER_PAGE);
765 set_bit(j, page->used);
772 page->db_rec[j] = cpu_to_be64((qn << 8) | (type << 5));
774 *db = (__be32 *) &page->db_rec[j];
785 struct mthca_db_page *page;
791 page = dev->db_tab->page + i;
795 page->db_rec[j] = 0;
798 clear_bit(j, page->used);
800 if (bitmap_empty(page->used, MTHCA_DB_REC_PER_PAGE) &&
805 page->db_rec, page->mapping);
806 page->db_rec = NULL;
836 dev->db_tab->page = kmalloc(dev->db_tab->npages *
837 sizeof *dev->db_tab->page,
839 if (!dev->db_tab->page) {
845 dev->db_tab->page[i].db_rec = NULL;
865 if (!dev->db_tab->page[i].db_rec)
868 if (!bitmap_empty(dev->db_tab->page[i].used, MTHCA_DB_REC_PER_PAGE))
869 mthca_warn(dev, "Kernel UARC page %d not empty\n", i);
874 dev->db_tab->page[i].db_rec,
875 dev->db_tab->page[i].mapping);
878 kfree(dev->db_tab->page);