Lines Matching refs:devmem
499 struct dmirror_chunk *devmem; in dmirror_allocate_chunk() local
507 devmem = kzalloc_obj(*devmem); in dmirror_allocate_chunk()
508 if (!devmem) in dmirror_allocate_chunk()
517 devmem->pagemap.range.start = res->start; in dmirror_allocate_chunk()
518 devmem->pagemap.range.end = res->end; in dmirror_allocate_chunk()
519 devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; in dmirror_allocate_chunk()
522 devmem->pagemap.range.start = (MINOR(mdevice->cdevice.dev) - 2) ? in dmirror_allocate_chunk()
525 devmem->pagemap.range.end = devmem->pagemap.range.start + in dmirror_allocate_chunk()
527 devmem->pagemap.type = MEMORY_DEVICE_COHERENT; in dmirror_allocate_chunk()
534 devmem->pagemap.nr_range = 1; in dmirror_allocate_chunk()
535 devmem->pagemap.ops = &dmirror_devmem_ops; in dmirror_allocate_chunk()
536 devmem->pagemap.owner = mdevice; in dmirror_allocate_chunk()
554 ptr = memremap_pages(&devmem->pagemap, numa_node_id()); in dmirror_allocate_chunk()
563 devmem->mdevice = mdevice; in dmirror_allocate_chunk()
564 pfn_first = devmem->pagemap.range.start >> PAGE_SHIFT; in dmirror_allocate_chunk()
565 pfn_last = pfn_first + (range_len(&devmem->pagemap.range) >> PAGE_SHIFT); in dmirror_allocate_chunk()
566 mdevice->devmem_chunks[mdevice->devmem_count++] = devmem; in dmirror_allocate_chunk()
619 if (res && devmem->pagemap.type == MEMORY_DEVICE_PRIVATE) in dmirror_allocate_chunk()
620 release_mem_region(devmem->pagemap.range.start, in dmirror_allocate_chunk()
621 range_len(&devmem->pagemap.range)); in dmirror_allocate_chunk()
623 kfree(devmem); in dmirror_allocate_chunk()
1431 static void dmirror_remove_free_pages(struct dmirror_chunk *devmem) in dmirror_remove_free_pages() argument
1433 struct dmirror_device *mdevice = devmem->mdevice; in dmirror_remove_free_pages()
1439 if (dmirror_page_to_chunk(folio_page(folio, 0)) == devmem) in dmirror_remove_free_pages()
1442 if (dmirror_page_to_chunk(page) == devmem) in dmirror_remove_free_pages()
1453 struct dmirror_chunk *devmem = in dmirror_device_remove_chunks() local
1457 devmem->remove = true; in dmirror_device_remove_chunks()
1458 dmirror_remove_free_pages(devmem); in dmirror_device_remove_chunks()
1461 dmirror_device_evict_chunk(devmem); in dmirror_device_remove_chunks()
1462 memunmap_pages(&devmem->pagemap); in dmirror_device_remove_chunks()
1463 if (devmem->pagemap.type == MEMORY_DEVICE_PRIVATE) in dmirror_device_remove_chunks()
1464 release_mem_region(devmem->pagemap.range.start, in dmirror_device_remove_chunks()
1465 range_len(&devmem->pagemap.range)); in dmirror_device_remove_chunks()
1466 kfree(devmem); in dmirror_device_remove_chunks()