Lines Matching refs:lp
366 static int i460_alloc_large_page (struct lp_desc *lp)
371 lp->page = alloc_pages(GFP_KERNEL, order);
372 if (!lp->page) {
378 lp->alloced_map = kzalloc(map_size, GFP_KERNEL);
379 if (!lp->alloced_map) {
380 __free_pages(lp->page, order);
385 lp->paddr = page_to_phys(lp->page);
386 lp->refcount = 0;
391 static void i460_free_large_page (struct lp_desc *lp)
393 kfree(lp->alloced_map);
394 lp->alloced_map = NULL;
396 __free_pages(lp->page, I460_IO_PAGE_SHIFT - PAGE_SHIFT);
404 struct lp_desc *start, *end, *lp;
425 for (lp = start; lp <= end; ++lp) {
426 if (!lp->alloced_map)
429 for (idx = ((lp == start) ? start_offset : 0);
430 idx < ((lp == end) ? (end_offset + 1) : I460_KPAGES_PER_IOPAGE);
433 if (test_bit(idx, lp->alloced_map))
438 for (lp = start, i = 0; lp <= end; ++lp) {
439 if (!lp->alloced_map) {
441 if (i460_alloc_large_page(lp) < 0)
443 pg = lp - i460.lp_desc;
445 lp->paddr, 0));
449 for (idx = ((lp == start) ? start_offset : 0);
450 idx < ((lp == end) ? (end_offset + 1) : I460_KPAGES_PER_IOPAGE);
453 mem->pages[i] = lp->page;
454 __set_bit(idx, lp->alloced_map);
455 ++lp->refcount;
465 struct lp_desc *start, *end, *lp;
477 for (i = 0, lp = start; lp <= end; ++lp) {
478 for (idx = ((lp == start) ? start_offset : 0);
479 idx < ((lp == end) ? (end_offset + 1) : I460_KPAGES_PER_IOPAGE);
483 __clear_bit(idx, lp->alloced_map);
484 --lp->refcount;
488 if (lp->refcount == 0) {
489 pg = lp - i460.lp_desc;
492 i460_free_large_page(lp);