aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2017-05-02 12:48:26 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-05-02 12:48:26 -0400
commit0337966d121ebebf73a1c346123e8112796e684e (patch)
treec0d4388591e72dc5a26ee976a9cbca70f6bafbbd /drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
parent7c5bb4ac2b76d2a09256aec8a7d584bf3e2b0466 (diff)
parent8a038b83e012097a7ac6cfb9f6c5fac1da8fad6e (diff)
Merge branch 'next' into for-linus
Prepare input updates for 4.12 merge window.
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h50
1 files changed, 43 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
index 2c37a374917f..675e12c42532 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
@@ -28,22 +28,48 @@
28#define AMDGPU_SRIOV_CAPS_ENABLE_IOV (1 << 1) /* sr-iov is enabled on this GPU */ 28#define AMDGPU_SRIOV_CAPS_ENABLE_IOV (1 << 1) /* sr-iov is enabled on this GPU */
29#define AMDGPU_SRIOV_CAPS_IS_VF (1 << 2) /* this GPU is a virtual function */ 29#define AMDGPU_SRIOV_CAPS_IS_VF (1 << 2) /* this GPU is a virtual function */
30#define AMDGPU_PASSTHROUGH_MODE (1 << 3) /* thw whole GPU is pass through for VM */ 30#define AMDGPU_PASSTHROUGH_MODE (1 << 3) /* thw whole GPU is pass through for VM */
31#define AMDGPU_SRIOV_CAPS_RUNTIME (1 << 4) /* is out of full access mode */
32
33/**
34 * struct amdgpu_virt_ops - amdgpu device virt operations
35 */
36struct amdgpu_virt_ops {
37 int (*req_full_gpu)(struct amdgpu_device *adev, bool init);
38 int (*rel_full_gpu)(struct amdgpu_device *adev, bool init);
39 int (*reset_gpu)(struct amdgpu_device *adev);
40};
41
31/* GPU virtualization */ 42/* GPU virtualization */
32struct amdgpu_virtualization { 43struct amdgpu_virt {
33 uint32_t virtual_caps; 44 uint32_t caps;
45 struct amdgpu_bo *csa_obj;
46 uint64_t csa_vmid0_addr;
47 bool chained_ib_support;
48 uint32_t reg_val_offs;
49 struct mutex lock;
50 struct amdgpu_irq_src ack_irq;
51 struct amdgpu_irq_src rcv_irq;
52 struct delayed_work flr_work;
53 const struct amdgpu_virt_ops *ops;
34}; 54};
35 55
56#define AMDGPU_CSA_SIZE (8 * 1024)
57#define AMDGPU_CSA_VADDR (AMDGPU_VA_RESERVED_SIZE - AMDGPU_CSA_SIZE)
58
36#define amdgpu_sriov_enabled(adev) \ 59#define amdgpu_sriov_enabled(adev) \
37((adev)->virtualization.virtual_caps & AMDGPU_SRIOV_CAPS_ENABLE_IOV) 60((adev)->virt.caps & AMDGPU_SRIOV_CAPS_ENABLE_IOV)
38 61
39#define amdgpu_sriov_vf(adev) \ 62#define amdgpu_sriov_vf(adev) \
40((adev)->virtualization.virtual_caps & AMDGPU_SRIOV_CAPS_IS_VF) 63((adev)->virt.caps & AMDGPU_SRIOV_CAPS_IS_VF)
41 64
42#define amdgpu_sriov_bios(adev) \ 65#define amdgpu_sriov_bios(adev) \
43((adev)->virtualization.virtual_caps & AMDGPU_SRIOV_CAPS_SRIOV_VBIOS) 66((adev)->virt.caps & AMDGPU_SRIOV_CAPS_SRIOV_VBIOS)
67
68#define amdgpu_sriov_runtime(adev) \
69((adev)->virt.caps & AMDGPU_SRIOV_CAPS_RUNTIME)
44 70
45#define amdgpu_passthrough(adev) \ 71#define amdgpu_passthrough(adev) \
46((adev)->virtualization.virtual_caps & AMDGPU_PASSTHROUGH_MODE) 72((adev)->virt.caps & AMDGPU_PASSTHROUGH_MODE)
47 73
48static inline bool is_virtual_machine(void) 74static inline bool is_virtual_machine(void)
49{ 75{
@@ -54,4 +80,14 @@ static inline bool is_virtual_machine(void)
54#endif 80#endif
55} 81}
56 82
57#endif \ No newline at end of file 83struct amdgpu_vm;
84int amdgpu_allocate_static_csa(struct amdgpu_device *adev);
85int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm);
86void amdgpu_virt_init_setting(struct amdgpu_device *adev);
87uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg);
88void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v);
89int amdgpu_virt_request_full_gpu(struct amdgpu_device *adev, bool init);
90int amdgpu_virt_release_full_gpu(struct amdgpu_device *adev, bool init);
91int amdgpu_virt_reset_gpu(struct amdgpu_device *adev);
92
93#endif