]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_object.h
index a401fe3bdd26ca8e8b4d7c0d22e4f313c6af81a5..a288fa6d72c8026f60a62625f4bf421cc6d3a74e 100644 (file)
@@ -33,6 +33,7 @@
 
 #define AMDGPU_BO_INVALID_OFFSET       LONG_MAX
 
+/* bo virtual addresses in a vm */
 struct amdgpu_bo_va_mapping {
        struct list_head                list;
        struct rb_node                  rb;
@@ -43,29 +44,22 @@ struct amdgpu_bo_va_mapping {
        uint64_t                        flags;
 };
 
-/* bo virtual addresses in a specific vm */
+/* User space allocated BO in a VM */
 struct amdgpu_bo_va {
+       struct amdgpu_vm_bo_base        base;
+
        /* protected by bo being reserved */
-       struct list_head                bo_list;
        struct dma_fence                *last_pt_update;
        unsigned                        ref_count;
 
-       /* protected by vm mutex and spinlock */
-       struct list_head                vm_status;
-
        /* mappings for this bo_va */
        struct list_head                invalids;
        struct list_head                valids;
-
-       /* constant after initialization */
-       struct amdgpu_vm                *vm;
-       struct amdgpu_bo                *bo;
 };
 
-
 struct amdgpu_bo {
        /* Protected by tbo.reserved */
-       u32                             prefered_domains;
+       u32                             preferred_domains;
        u32                             allowed_domains;
        struct ttm_place                placements[AMDGPU_GEM_DOMAIN_MAX + 1];
        struct ttm_placement            placement;
@@ -87,8 +81,11 @@ struct amdgpu_bo {
 
        struct ttm_bo_kmap_obj          dma_buf_vmap;
        struct amdgpu_mn                *mn;
-       struct list_head                mn_list;
-       struct list_head                shadow_list;
+
+       union {
+               struct list_head        mn_list;
+               struct list_head        shadow_list;
+       };
 };
 
 /**
@@ -190,6 +187,7 @@ int amdgpu_bo_create(struct amdgpu_device *adev,
                            bool kernel, u32 domain, u64 flags,
                            struct sg_table *sg,
                            struct reservation_object *resv,
+                           uint64_t init_value,
                            struct amdgpu_bo **bo_ptr);
 int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
                                unsigned long size, int byte_align,
@@ -197,7 +195,12 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
                                struct sg_table *sg,
                                struct ttm_placement *placement,
                                struct reservation_object *resv,
+                               uint64_t init_value,
                                struct amdgpu_bo **bo_ptr);
+int amdgpu_bo_create_reserved(struct amdgpu_device *adev,
+                             unsigned long size, int align,
+                             u32 domain, struct amdgpu_bo **bo_ptr,
+                             u64 *gpu_addr, void **cpu_addr);
 int amdgpu_bo_create_kernel(struct amdgpu_device *adev,
                            unsigned long size, int align,
                            u32 domain, struct amdgpu_bo **bo_ptr,
This page took 0.036964 seconds and 4 git commands to generate.