7#include <linux/memremap.h>
10#define NR_PAGES(order) (1U << (order))
14struct drm_pagemap_cache;
15struct drm_pagemap_dev_hold;
16struct drm_pagemap_zdd;
127 unsigned long start,
unsigned long end,
128 struct mm_struct *mm,
129 unsigned long timeslice_ms);
148 bool is_atomic_or_reclaim);
206 unsigned long npages,
unsigned long *pfn);
224 unsigned long npages,
243 unsigned long npages,
247#if IS_ENABLED(CONFIG_ZONE_DEVICE)
250 struct dev_pagemap *pagemap,
269static inline void drm_pagemap_put(
struct drm_pagemap *dpagemap)
285 kref_get(&dpagemap->
ref);
299drm_pagemap_get_unless_zero(
struct drm_pagemap *dpagemap)
301 return (dpagemap && kref_get_unless_zero(&dpagemap->
ref)) ? dpagemap :
NULL;
319 struct mm_struct *
mm;
340#if IS_ENABLED(CONFIG_ZONE_DEVICE)
343 struct mm_struct *mm,
344 unsigned long start,
unsigned long end,
349const struct dev_pagemap_ops *drm_pagemap_pagemap_ops_get(
void);
352 struct device *
dev,
struct mm_struct *mm,
357int drm_pagemap_populate_mm(
struct drm_pagemap *dpagemap,
358 unsigned long start,
unsigned long end,
359 struct mm_struct *mm,
360 unsigned long timeslice_ms);
362void drm_pagemap_destroy(
struct drm_pagemap *dpagemap,
bool is_atomic_or_reclaim);
364int drm_pagemap_reinit(
struct drm_pagemap *dpagemap);
372static inline struct drm_pagemap_zdd *drm_pagemap_page_zone_device_data(
struct page *
page)
376 return folio_zone_device_data(
folio);
381static inline struct drm_pagemap_zdd *drm_pagemap_page_zone_device_data(
struct page *
page)
#define NULL
Definition actypes.h:561
size_t pages
Definition audrv.c:83
#define likely(x)
Definition compiler.h:29
#define __must_check
Definition compiler.h:114
dma_data_direction
Definition dma-direction.h:21
size_t size
Definition drm_bridge.h:1299
drm_interconnect_protocol
Definition drm_pagemap.h:25
@ DRM_INTERCONNECT_SYSTEM
Definition drm_pagemap.h:26
@ DRM_INTERCONNECT_DRIVER
Definition drm_pagemap.h:27
const struct device * dev
Definition drm_print.h:519
uint64_t u64
Definition kernel.h:17
uintptr_t dma_addr_t
Definition kernel.h:42
uint32_t u32
Definition kernel.h:16
Definition completion.h:55
Definition dma-fence.h:70
const struct dma_fence_ops __rcu * ops
Definition dma-fence.h:75
Definition drm_device.h:75
Definition drm_pagemap.h:41
u64 order
Definition drm_pagemap.h:44
u64 dir
Definition drm_pagemap.h:45
u64 proto
Definition drm_pagemap.h:43
dma_addr_t addr
Definition drm_pagemap.h:42
Definition drm_pagemap.h:185
int(* copy_to_ram)(struct page **pages, struct drm_pagemap_addr *pagemap_addr, unsigned long npages, struct dma_fence *pre_migrate_fence)
Definition drm_pagemap.h:241
int(* copy_to_devmem)(struct page **pages, struct drm_pagemap_addr *pagemap_addr, unsigned long npages, struct dma_fence *pre_migrate_fence)
Definition drm_pagemap.h:222
int(* populate_devmem_pfn)(struct drm_pagemap_devmem *devmem_allocation, unsigned long npages, unsigned long *pfn)
Definition drm_pagemap.h:205
void(* devmem_release)(struct drm_pagemap_devmem *devmem_allocation)
Definition drm_pagemap.h:193
Definition drm_pagemap.h:317
struct dma_fence * pre_migrate_fence
Definition drm_pagemap.h:325
struct drm_pagemap * dpagemap
Definition drm_pagemap.h:322
struct device * dev
Definition drm_pagemap.h:318
struct mm_struct * mm
Definition drm_pagemap.h:319
const struct drm_pagemap_devmem_ops * ops
Definition drm_pagemap.h:321
struct completion detached
Definition drm_pagemap.h:320
size_t size
Definition drm_pagemap.h:323
u64 timeslice_expiration
Definition drm_pagemap.h:324
Definition drm_pagemap.h:335
unsigned long timeslice_ms
Definition drm_pagemap.h:336
u32 can_migrate_same_pagemap
Definition drm_pagemap.h:337
Definition drm_pagemap.h:74
void(* device_unmap)(struct drm_pagemap *dpagemap, struct device *dev, const struct drm_pagemap_addr *addr)
Definition drm_pagemap.h:97
void(* destroy)(struct drm_pagemap *dpagemap, bool is_atomic_or_reclaim)
Definition drm_pagemap.h:147
int(* populate_mm)(struct drm_pagemap *dpagemap, unsigned long start, unsigned long end, struct mm_struct *mm, unsigned long timeslice_ms)
Definition drm_pagemap.h:126
struct drm_pagemap_addr(* device_map)(struct drm_pagemap *dpagemap, struct device *dev, struct page *page, unsigned int order, enum dma_data_direction dir)
Definition drm_pagemap.h:84
Definition drm_pagemap.h:165
struct kref ref
Definition drm_pagemap.h:167
struct dev_pagemap * pagemap
Definition drm_pagemap.h:169
struct drm_pagemap_cache * cache
Definition drm_pagemap.h:171
const struct drm_pagemap_ops * ops
Definition drm_pagemap.h:166
struct drm_device * drm
Definition drm_pagemap.h:168
struct drm_pagemap_dev_hold * dev_hold
Definition drm_pagemap.h:170
struct list_head shrink_link
Definition drm_pagemap.h:172