diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2017-05-02 12:48:26 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2017-05-02 12:48:26 -0400 |
commit | 0337966d121ebebf73a1c346123e8112796e684e (patch) | |
tree | c0d4388591e72dc5a26ee976a9cbca70f6bafbbd /drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | |
parent | 7c5bb4ac2b76d2a09256aec8a7d584bf3e2b0466 (diff) | |
parent | 8a038b83e012097a7ac6cfb9f6c5fac1da8fad6e (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.h | 50 |
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 | */ | ||
36 | struct 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 */ |
32 | struct amdgpu_virtualization { | 43 | struct 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 | ||
48 | static inline bool is_virtual_machine(void) | 74 | static 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 | 83 | struct amdgpu_vm; |
84 | int amdgpu_allocate_static_csa(struct amdgpu_device *adev); | ||
85 | int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm); | ||
86 | void amdgpu_virt_init_setting(struct amdgpu_device *adev); | ||
87 | uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg); | ||
88 | void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v); | ||
89 | int amdgpu_virt_request_full_gpu(struct amdgpu_device *adev, bool init); | ||
90 | int amdgpu_virt_release_full_gpu(struct amdgpu_device *adev, bool init); | ||
91 | int amdgpu_virt_reset_gpu(struct amdgpu_device *adev); | ||
92 | |||
93 | #endif | ||