aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
index b89d37fc406f..6a83425aa9ed 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
@@ -55,6 +55,7 @@ struct amdgpu_virt_ops {
55 int (*req_full_gpu)(struct amdgpu_device *adev, bool init); 55 int (*req_full_gpu)(struct amdgpu_device *adev, bool init);
56 int (*rel_full_gpu)(struct amdgpu_device *adev, bool init); 56 int (*rel_full_gpu)(struct amdgpu_device *adev, bool init);
57 int (*reset_gpu)(struct amdgpu_device *adev); 57 int (*reset_gpu)(struct amdgpu_device *adev);
58 int (*wait_reset)(struct amdgpu_device *adev);
58 void (*trans_msg)(struct amdgpu_device *adev, u32 req, u32 data1, u32 data2, u32 data3); 59 void (*trans_msg)(struct amdgpu_device *adev, u32 req, u32 data1, u32 data2, u32 data3);
59}; 60};
60 61
@@ -80,6 +81,8 @@ enum AMDGIM_FEATURE_FLAG {
80 AMDGIM_FEATURE_ERROR_LOG_COLLECT = 0x1, 81 AMDGIM_FEATURE_ERROR_LOG_COLLECT = 0x1,
81 /* GIM supports feature of loading uCodes */ 82 /* GIM supports feature of loading uCodes */
82 AMDGIM_FEATURE_GIM_LOAD_UCODES = 0x2, 83 AMDGIM_FEATURE_GIM_LOAD_UCODES = 0x2,
84 /* VRAM LOST by GIM */
85 AMDGIM_FEATURE_GIM_FLR_VRAMLOST = 0x4,
83}; 86};
84 87
85struct amdgim_pf2vf_info_header { 88struct amdgim_pf2vf_info_header {
@@ -238,7 +241,6 @@ struct amdgpu_virt {
238 uint64_t csa_vmid0_addr; 241 uint64_t csa_vmid0_addr;
239 bool chained_ib_support; 242 bool chained_ib_support;
240 uint32_t reg_val_offs; 243 uint32_t reg_val_offs;
241 struct mutex lock_reset;
242 struct amdgpu_irq_src ack_irq; 244 struct amdgpu_irq_src ack_irq;
243 struct amdgpu_irq_src rcv_irq; 245 struct amdgpu_irq_src rcv_irq;
244 struct work_struct flr_work; 246 struct work_struct flr_work;
@@ -246,6 +248,7 @@ struct amdgpu_virt {
246 const struct amdgpu_virt_ops *ops; 248 const struct amdgpu_virt_ops *ops;
247 struct amdgpu_vf_error_buffer vf_errors; 249 struct amdgpu_vf_error_buffer vf_errors;
248 struct amdgpu_virt_fw_reserve fw_reserve; 250 struct amdgpu_virt_fw_reserve fw_reserve;
251 uint32_t gim_feature;
249}; 252};
250 253
251#define AMDGPU_CSA_SIZE (8 * 1024) 254#define AMDGPU_CSA_SIZE (8 * 1024)
@@ -276,16 +279,18 @@ static inline bool is_virtual_machine(void)
276} 279}
277 280
278struct amdgpu_vm; 281struct amdgpu_vm;
282bool amdgpu_virt_mmio_blocked(struct amdgpu_device *adev);
279int amdgpu_allocate_static_csa(struct amdgpu_device *adev); 283int amdgpu_allocate_static_csa(struct amdgpu_device *adev);
280int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm, 284int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm,
281 struct amdgpu_bo_va **bo_va); 285 struct amdgpu_bo_va **bo_va);
286void amdgpu_free_static_csa(struct amdgpu_device *adev);
282void amdgpu_virt_init_setting(struct amdgpu_device *adev); 287void amdgpu_virt_init_setting(struct amdgpu_device *adev);
283uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg); 288uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg);
284void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v); 289void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v);
285int amdgpu_virt_request_full_gpu(struct amdgpu_device *adev, bool init); 290int amdgpu_virt_request_full_gpu(struct amdgpu_device *adev, bool init);
286int amdgpu_virt_release_full_gpu(struct amdgpu_device *adev, bool init); 291int amdgpu_virt_release_full_gpu(struct amdgpu_device *adev, bool init);
287int amdgpu_virt_reset_gpu(struct amdgpu_device *adev); 292int amdgpu_virt_reset_gpu(struct amdgpu_device *adev);
288int amdgpu_sriov_gpu_reset(struct amdgpu_device *adev, struct amdgpu_job *job); 293int amdgpu_virt_wait_reset(struct amdgpu_device *adev);
289int amdgpu_virt_alloc_mm_table(struct amdgpu_device *adev); 294int amdgpu_virt_alloc_mm_table(struct amdgpu_device *adev);
290void amdgpu_virt_free_mm_table(struct amdgpu_device *adev); 295void amdgpu_virt_free_mm_table(struct amdgpu_device *adev);
291int amdgpu_virt_fw_reserve_get_checksum(void *obj, unsigned long obj_size, 296int amdgpu_virt_fw_reserve_get_checksum(void *obj, unsigned long obj_size,