Lines Matching defs:mem

475 	struct agp_memory *mem;
489 mem = malloc(sizeof *mem, M_AGP, M_WAITOK);
490 mem->am_id = sc->as_nextid++;
491 mem->am_size = size;
492 mem->am_type = 0;
493 mem->am_obj = vm_object_allocate(OBJT_DEFAULT, atop(round_page(size)));
494 mem->am_physical = 0;
495 mem->am_offset = 0;
496 mem->am_is_bound = 0;
497 TAILQ_INSERT_TAIL(&sc->as_memory, mem, am_link);
500 return mem;
504 agp_generic_free_memory(device_t dev, struct agp_memory *mem)
508 if (mem->am_is_bound)
511 sc->as_allocated -= mem->am_size;
512 TAILQ_REMOVE(&sc->as_memory, mem, am_link);
513 vm_object_deallocate(mem->am_obj);
514 free(mem, M_AGP);
519 agp_generic_bind_memory(device_t dev, struct agp_memory *mem,
529 offset + mem->am_size > AGP_GET_APERTURE(dev)) {
540 VM_OBJECT_WLOCK(mem->am_obj);
541 for (i = 0; i < mem->am_size; i += PAGE_SIZE) {
549 m = vm_page_grab(mem->am_obj, OFF_TO_IDX(i),
553 VM_OBJECT_WUNLOCK(mem->am_obj);
557 if (mem->am_is_bound) {
560 VM_OBJECT_WLOCK(mem->am_obj);
569 VM_OBJECT_WLOCK(mem->am_obj);
570 for (i = 0; i < mem->am_size; i += PAGE_SIZE) {
571 m = vm_page_lookup(mem->am_obj, OFF_TO_IDX(i));
575 * AGP_PAGE_SIZE < PAGE_SIZE and mem->am_size is not
579 for (j = 0; j < PAGE_SIZE && i + j < mem->am_size;
597 VM_OBJECT_WUNLOCK(mem->am_obj);
604 mem->am_offset = offset;
605 mem->am_is_bound = 1;
612 VM_OBJECT_ASSERT_WLOCKED(mem->am_obj);
613 for (k = 0; k < mem->am_size; k += PAGE_SIZE) {
614 m = vm_page_lookup(mem->am_obj, OFF_TO_IDX(k));
621 VM_OBJECT_WUNLOCK(mem->am_obj);
627 agp_generic_unbind_memory(device_t dev, struct agp_memory *mem)
635 if (!mem->am_is_bound) {
646 for (i = 0; i < mem->am_size; i += AGP_PAGE_SIZE)
647 AGP_UNBIND_PAGE(dev, mem->am_offset + i);
651 VM_OBJECT_WLOCK(mem->am_obj);
652 for (i = 0; i < mem->am_size; i += PAGE_SIZE) {
653 m = vm_page_lookup(mem->am_obj, atop(i));
658 VM_OBJECT_WUNLOCK(mem->am_obj);
660 mem->am_offset = 0;
661 mem->am_is_bound = 0;
701 struct agp_memory *mem;
704 TAILQ_FOREACH(mem, &sc->as_memory, am_link) {
705 AGP_DPF("considering memory block %d\n", mem->am_id);
706 if (mem->am_id == id)
707 return mem;
743 struct agp_memory *mem;
745 mem = AGP_ALLOC_MEMORY(dev,
748 if (mem) {
749 alloc->key = mem->am_id;
750 alloc->physical = mem->am_physical;
760 struct agp_memory *mem = agp_find_memory(dev, id);
762 if (mem) {
763 AGP_FREE_MEMORY(dev, mem);
773 struct agp_memory *mem = agp_find_memory(dev, bind->key);
775 if (!mem)
778 return AGP_BIND_MEMORY(dev, mem, bind->pg_start << AGP_PAGE_SHIFT);
784 struct agp_memory *mem = agp_find_memory(dev, unbind->key);
786 if (!mem)
789 return AGP_UNBIND_MEMORY(dev, mem);
818 struct agp_memory *mem;
823 while ((mem = TAILQ_FIRST(&sc->as_memory)) != NULL) {
824 if (mem->am_is_bound)
825 AGP_UNBIND_MEMORY(dev, mem);
826 AGP_FREE_MEMORY(dev, mem);
959 struct agp_memory *mem = (struct agp_memory *) handle;
960 AGP_FREE_MEMORY(dev, mem);
965 struct agp_memory *mem = (struct agp_memory *) handle;
966 return AGP_BIND_MEMORY(dev, mem, offset);
971 struct agp_memory *mem = (struct agp_memory *) handle;
972 return AGP_UNBIND_MEMORY(dev, mem);
978 struct agp_memory *mem = (struct agp_memory *) handle;
980 mi->ami_size = mem->am_size;
981 mi->ami_physical = mem->am_physical;
982 mi->ami_offset = mem->am_offset;
983 mi->ami_is_bound = mem->am_is_bound;