|
@@ -283,7 +283,8 @@ struct amdgpu_ring_funcs {
|
|
int (*parse_cs)(struct amdgpu_cs_parser *p, uint32_t ib_idx);
|
|
int (*parse_cs)(struct amdgpu_cs_parser *p, uint32_t ib_idx);
|
|
/* command emit functions */
|
|
/* command emit functions */
|
|
void (*emit_ib)(struct amdgpu_ring *ring,
|
|
void (*emit_ib)(struct amdgpu_ring *ring,
|
|
- struct amdgpu_ib *ib, bool ctx_switch);
|
|
|
|
|
|
+ struct amdgpu_ib *ib,
|
|
|
|
+ unsigned vm_id, bool ctx_switch);
|
|
void (*emit_fence)(struct amdgpu_ring *ring, uint64_t addr,
|
|
void (*emit_fence)(struct amdgpu_ring *ring, uint64_t addr,
|
|
uint64_t seq, unsigned flags);
|
|
uint64_t seq, unsigned flags);
|
|
void (*emit_pipeline_sync)(struct amdgpu_ring *ring);
|
|
void (*emit_pipeline_sync)(struct amdgpu_ring *ring);
|
|
@@ -741,11 +742,6 @@ struct amdgpu_ib {
|
|
uint64_t gpu_addr;
|
|
uint64_t gpu_addr;
|
|
uint32_t *ptr;
|
|
uint32_t *ptr;
|
|
struct amdgpu_user_fence *user;
|
|
struct amdgpu_user_fence *user;
|
|
- unsigned vm_id;
|
|
|
|
- uint64_t vm_pd_addr;
|
|
|
|
- uint32_t gds_base, gds_size;
|
|
|
|
- uint32_t gws_base, gws_size;
|
|
|
|
- uint32_t oa_base, oa_size;
|
|
|
|
uint32_t flags;
|
|
uint32_t flags;
|
|
/* resulting sequence number */
|
|
/* resulting sequence number */
|
|
uint64_t sequence;
|
|
uint64_t sequence;
|
|
@@ -1262,6 +1258,11 @@ struct amdgpu_job {
|
|
uint32_t num_ibs;
|
|
uint32_t num_ibs;
|
|
void *owner;
|
|
void *owner;
|
|
uint64_t ctx;
|
|
uint64_t ctx;
|
|
|
|
+ unsigned vm_id;
|
|
|
|
+ uint64_t vm_pd_addr;
|
|
|
|
+ uint32_t gds_base, gds_size;
|
|
|
|
+ uint32_t gws_base, gws_size;
|
|
|
|
+ uint32_t oa_base, oa_size;
|
|
struct amdgpu_user_fence uf;
|
|
struct amdgpu_user_fence uf;
|
|
};
|
|
};
|
|
#define to_amdgpu_job(sched_job) \
|
|
#define to_amdgpu_job(sched_job) \
|
|
@@ -2221,7 +2222,7 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
|
|
#define amdgpu_ring_get_rptr(r) (r)->funcs->get_rptr((r))
|
|
#define amdgpu_ring_get_rptr(r) (r)->funcs->get_rptr((r))
|
|
#define amdgpu_ring_get_wptr(r) (r)->funcs->get_wptr((r))
|
|
#define amdgpu_ring_get_wptr(r) (r)->funcs->get_wptr((r))
|
|
#define amdgpu_ring_set_wptr(r) (r)->funcs->set_wptr((r))
|
|
#define amdgpu_ring_set_wptr(r) (r)->funcs->set_wptr((r))
|
|
-#define amdgpu_ring_emit_ib(r, ib, c) (r)->funcs->emit_ib((r), (ib), (c))
|
|
|
|
|
|
+#define amdgpu_ring_emit_ib(r, ib, vm_id, c) (r)->funcs->emit_ib((r), (ib), (vm_id), (c))
|
|
#define amdgpu_ring_emit_pipeline_sync(r) (r)->funcs->emit_pipeline_sync((r))
|
|
#define amdgpu_ring_emit_pipeline_sync(r) (r)->funcs->emit_pipeline_sync((r))
|
|
#define amdgpu_ring_emit_vm_flush(r, vmid, addr) (r)->funcs->emit_vm_flush((r), (vmid), (addr))
|
|
#define amdgpu_ring_emit_vm_flush(r, vmid, addr) (r)->funcs->emit_vm_flush((r), (vmid), (addr))
|
|
#define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags))
|
|
#define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags))
|