Lines Matching refs:dev_dax
51 struct dev_dax *dev_dax = dax_get_private(dax_dev); in __fsdev_dax_direct_access() local
56 phys = dax_pgoff_to_phys(dev_dax, pgoff, size); in __fsdev_dax_direct_access()
58 dev_dbg(&dev_dax->dev, in __fsdev_dax_direct_access()
73 return PHYS_PFN(min(size, dev_dax->cached_size - offset)); in __fsdev_dax_direct_access()
116 static void fsdev_kill(void *dev_dax) in fsdev_kill() argument
118 kill_dev_dax(dev_dax); in fsdev_kill()
123 struct dev_dax *dev_dax = data; in fsdev_clear_ops() local
125 dax_set_ops(dev_dax->dax_dev, NULL); in fsdev_clear_ops()
153 static u64 fsdev_pfn_to_offset(struct dev_dax *dev_dax, unsigned long pfn) in fsdev_pfn_to_offset() argument
158 for (int i = 0; i < dev_dax->nr_range; i++) { in fsdev_pfn_to_offset()
159 struct range *range = &dev_dax->ranges[i].range; in fsdev_pfn_to_offset()
171 struct dev_dax *dev_dax = pgmap->owner; in fsdev_pagemap_memory_failure() local
172 u64 offset = fsdev_pfn_to_offset(dev_dax, pfn); in fsdev_pagemap_memory_failure()
175 return dax_holder_notify_failure(dev_dax->dax_dev, offset, in fsdev_pagemap_memory_failure()
194 static void fsdev_clear_folio_state(struct dev_dax *dev_dax) in fsdev_clear_folio_state() argument
196 for (int i = 0; i < dev_dax->nr_range; i++) { in fsdev_clear_folio_state()
197 struct range *range = &dev_dax->ranges[i].range; in fsdev_clear_folio_state()
218 struct dev_dax *dev_dax = dax_get_private(dax_dev); in fsdev_open() local
220 filp->private_data = dev_dax; in fsdev_open()
244 static struct dev_pagemap *fsdev_acquire_pgmap(struct dev_dax *dev_dax) in fsdev_acquire_pgmap() argument
246 struct device *dev = &dev_dax->dev; in fsdev_acquire_pgmap()
250 if (static_dev_dax(dev_dax)) { in fsdev_acquire_pgmap()
251 if (dev_dax->nr_range > 1) { in fsdev_acquire_pgmap()
257 pgmap = dev_dax->pgmap; in fsdev_acquire_pgmap()
262 if (dev_dax->pgmap) { in fsdev_acquire_pgmap()
267 pgmap_size = struct_size(pgmap, ranges, dev_dax->nr_range - 1); in fsdev_acquire_pgmap()
272 pgmap->nr_range = dev_dax->nr_range; in fsdev_acquire_pgmap()
273 for (int i = 0; i < dev_dax->nr_range; i++) in fsdev_acquire_pgmap()
274 pgmap->ranges[i] = dev_dax->ranges[i].range; in fsdev_acquire_pgmap()
279 static int fsdev_dax_probe(struct dev_dax *dev_dax) in fsdev_dax_probe() argument
281 struct dax_device *dax_dev = dev_dax->dax_dev; in fsdev_dax_probe()
282 struct device *dev = &dev_dax->dev; in fsdev_dax_probe()
290 pgmap = fsdev_acquire_pgmap(dev_dax); in fsdev_dax_probe()
294 for (i = 0; i < dev_dax->nr_range; i++) { in fsdev_dax_probe()
295 struct range *range = &dev_dax->ranges[i].range; in fsdev_dax_probe()
306 dev_dax->cached_size = 0; in fsdev_dax_probe()
307 for (i = 0; i < dev_dax->nr_range; i++) in fsdev_dax_probe()
308 dev_dax->cached_size += range_len(&dev_dax->ranges[i].range); in fsdev_dax_probe()
318 pgmap->owner = dev_dax; in fsdev_dax_probe()
335 fsdev_clear_folio_state(dev_dax); in fsdev_dax_probe()
337 dev_dax); in fsdev_dax_probe()
342 if (pgmap->range.start != dev_dax->ranges[0].range.start) { in fsdev_dax_probe()
343 u64 phys = dev_dax->ranges[0].range.start; in fsdev_dax_probe()
375 rc = devm_add_action_or_reset(dev, fsdev_clear_ops, dev_dax); in fsdev_dax_probe()
380 rc = devm_add_action_or_reset(dev, fsdev_kill, dev_dax); in fsdev_dax_probe()
385 dev_dax->pgmap = pgmap; in fsdev_dax_probe()