Lines Matching refs:devmem
502 struct dmirror_chunk *devmem; in dmirror_allocate_chunk() local
510 devmem = kzalloc(sizeof(*devmem), GFP_KERNEL); in dmirror_allocate_chunk()
511 if (!devmem) in dmirror_allocate_chunk()
520 devmem->pagemap.range.start = res->start; in dmirror_allocate_chunk()
521 devmem->pagemap.range.end = res->end; in dmirror_allocate_chunk()
522 devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; in dmirror_allocate_chunk()
525 devmem->pagemap.range.start = (MINOR(mdevice->cdevice.dev) - 2) ? in dmirror_allocate_chunk()
528 devmem->pagemap.range.end = devmem->pagemap.range.start + in dmirror_allocate_chunk()
530 devmem->pagemap.type = MEMORY_DEVICE_COHERENT; in dmirror_allocate_chunk()
537 devmem->pagemap.nr_range = 1; in dmirror_allocate_chunk()
538 devmem->pagemap.ops = &dmirror_devmem_ops; in dmirror_allocate_chunk()
539 devmem->pagemap.owner = mdevice; in dmirror_allocate_chunk()
557 ptr = memremap_pages(&devmem->pagemap, numa_node_id()); in dmirror_allocate_chunk()
566 devmem->mdevice = mdevice; in dmirror_allocate_chunk()
567 pfn_first = devmem->pagemap.range.start >> PAGE_SHIFT; in dmirror_allocate_chunk()
568 pfn_last = pfn_first + (range_len(&devmem->pagemap.range) >> PAGE_SHIFT); in dmirror_allocate_chunk()
569 mdevice->devmem_chunks[mdevice->devmem_count++] = devmem; in dmirror_allocate_chunk()
597 if (res && devmem->pagemap.type == MEMORY_DEVICE_PRIVATE) in dmirror_allocate_chunk()
598 release_mem_region(devmem->pagemap.range.start, in dmirror_allocate_chunk()
599 range_len(&devmem->pagemap.range)); in dmirror_allocate_chunk()
601 kfree(devmem); in dmirror_allocate_chunk()
1264 static void dmirror_remove_free_pages(struct dmirror_chunk *devmem) in dmirror_remove_free_pages() argument
1266 struct dmirror_device *mdevice = devmem->mdevice; in dmirror_remove_free_pages()
1270 if (dmirror_page_to_chunk(page) == devmem) in dmirror_remove_free_pages()
1281 struct dmirror_chunk *devmem = in dmirror_device_remove_chunks() local
1285 devmem->remove = true; in dmirror_device_remove_chunks()
1286 dmirror_remove_free_pages(devmem); in dmirror_device_remove_chunks()
1289 dmirror_device_evict_chunk(devmem); in dmirror_device_remove_chunks()
1290 memunmap_pages(&devmem->pagemap); in dmirror_device_remove_chunks()
1291 if (devmem->pagemap.type == MEMORY_DEVICE_PRIVATE) in dmirror_device_remove_chunks()
1292 release_mem_region(devmem->pagemap.range.start, in dmirror_device_remove_chunks()
1293 range_len(&devmem->pagemap.range)); in dmirror_device_remove_chunks()
1294 kfree(devmem); in dmirror_device_remove_chunks()