Lines Matching defs:lp
355 static int i460_alloc_large_page (struct lp_desc *lp)
360 lp->page = alloc_pages(GFP_KERNEL, order);
361 if (!lp->page) {
367 lp->alloced_map = kzalloc(map_size, GFP_KERNEL);
368 if (!lp->alloced_map) {
369 __free_pages(lp->page, order);
374 lp->paddr = page_to_phys(lp->page);
375 lp->refcount = 0;
380 static void i460_free_large_page (struct lp_desc *lp)
382 kfree(lp->alloced_map);
383 lp->alloced_map = NULL;
385 __free_pages(lp->page, I460_IO_PAGE_SHIFT - PAGE_SHIFT);
393 struct lp_desc *start, *end, *lp;
414 for (lp = start; lp <= end; ++lp) {
415 if (!lp->alloced_map)
418 for (idx = ((lp == start) ? start_offset : 0);
419 idx < ((lp == end) ? (end_offset + 1) : I460_KPAGES_PER_IOPAGE);
422 if (test_bit(idx, lp->alloced_map))
427 for (lp = start, i = 0; lp <= end; ++lp) {
428 if (!lp->alloced_map) {
430 if (i460_alloc_large_page(lp) < 0)
432 pg = lp - i460.lp_desc;
434 lp->paddr, 0));
438 for (idx = ((lp == start) ? start_offset : 0);
439 idx < ((lp == end) ? (end_offset + 1) : I460_KPAGES_PER_IOPAGE);
442 mem->pages[i] = lp->page;
443 __set_bit(idx, lp->alloced_map);
444 ++lp->refcount;
454 struct lp_desc *start, *end, *lp;
466 for (i = 0, lp = start; lp <= end; ++lp) {
467 for (idx = ((lp == start) ? start_offset : 0);
468 idx < ((lp == end) ? (end_offset + 1) : I460_KPAGES_PER_IOPAGE);
472 __clear_bit(idx, lp->alloced_map);
473 --lp->refcount;
477 if (lp->refcount == 0) {
478 pg = lp - i460.lp_desc;
481 i460_free_large_page(lp);