1 #ifndef __NOUVEAU_MM_H__
2 #define __NOUVEAU_MM_H__
3 
4 union nouveau_bo_config;
5 struct nouveau_mman;
6 
7 /* Since a resource can be migrated, we need to decouple allocations from
8  * them. This struct is linked with fences for delayed freeing of allocs.
9  */
10 struct nouveau_mm_allocation {
11    struct nouveau_mm_allocation *next;
12    void *priv;
13    uint32_t offset;
14 };
15 
16 extern struct nouveau_mman *
17 nouveau_mm_create(struct nouveau_device *, uint32_t domain,
18                   union nouveau_bo_config *);
19 
20 extern void
21 nouveau_mm_destroy(struct nouveau_mman *);
22 
23 extern struct nouveau_mm_allocation *
24 nouveau_mm_allocate(struct nouveau_mman *, uint32_t size,
25                     struct nouveau_bo **, uint32_t *offset);
26 
27 extern void
28 nouveau_mm_free(struct nouveau_mm_allocation *);
29 
30 extern void
31 nouveau_mm_free_work(void *);
32 
33 #endif // __NOUVEAU_MM_H__
34