diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h | 12 | 
1 files changed, 12 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h index 3de8e74e5b3a..ada89358e220 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h @@ -24,6 +24,8 @@  #ifndef __AMDGPU_IH_H__  #define __AMDGPU_IH_H__ +#include <linux/chash.h> +  struct amdgpu_device;   /*    * vega10+ IH clients @@ -69,6 +71,13 @@ enum amdgpu_ih_clientid  #define AMDGPU_IH_CLIENTID_LEGACY 0 +#define AMDGPU_PAGEFAULT_HASH_BITS 8 +struct amdgpu_retryfault_hashtable { +	DECLARE_CHASH_TABLE(hash, AMDGPU_PAGEFAULT_HASH_BITS, 8, 0); +	spinlock_t	lock; +	int		count; +}; +  /*   * R6xx+ IH ring   */ @@ -87,6 +96,7 @@ struct amdgpu_ih_ring {  	bool			use_doorbell;  	bool			use_bus_addr;  	dma_addr_t		rb_dma_addr; /* only used when use_bus_addr = true */ +	struct amdgpu_retryfault_hashtable *faults;  };  #define AMDGPU_IH_SRC_DATA_MAX_SIZE_DW 4 @@ -109,5 +119,7 @@ int amdgpu_ih_ring_init(struct amdgpu_device *adev, unsigned ring_size,  			bool use_bus_addr);  void amdgpu_ih_ring_fini(struct amdgpu_device *adev);  int amdgpu_ih_process(struct amdgpu_device *adev); +int amdgpu_ih_add_fault(struct amdgpu_device *adev, u64 key); +void amdgpu_ih_clear_fault(struct amdgpu_device *adev, u64 key);  #endif |