Commit cf6d949a authored by Harish Kasiviswanathan's avatar Harish Kasiviswanathan Committed by Alex Deucher
Browse files

drm/amdkfd: Add support for more per-process flag



Add support for more per-process flags starting with option to configure
MFMA precision for gfx 9.5

v2: Change flag name to KFD_PROC_FLAG_MFMA_HIGH_PRECISION
    Remove unused else condition
v3: Bump the KFD API version
v4: Missed SH_MEM_CONFIG__PRECISION_MODE__SHIFT define. Added it.

Signed-off-by: default avatarHarish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Reviewed-by: default avatarFelix Kuehling <felix.kuehling@amd.com>
Reviewed-by: default avatarAmber Lin <Amber.Lin@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 61972cd9
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -606,7 +606,8 @@ static int kfd_ioctl_set_memory_policy(struct file *filep,
				default_policy,
				alternate_policy,
				(void __user *)args->alternate_aperture_base,
				args->alternate_aperture_size))
				args->alternate_aperture_size,
				args->misc_process_flag))
		err = -EINVAL;

out:
+4 −2
Original line number Diff line number Diff line
@@ -2596,7 +2596,8 @@ static bool set_cache_memory_policy(struct device_queue_manager *dqm,
				   enum cache_policy default_policy,
				   enum cache_policy alternate_policy,
				   void __user *alternate_aperture_base,
				   uint64_t alternate_aperture_size)
				   uint64_t alternate_aperture_size,
				   u32 misc_process_properties)
{
	bool retval = true;

@@ -2611,7 +2612,8 @@ static bool set_cache_memory_policy(struct device_queue_manager *dqm,
			default_policy,
			alternate_policy,
			alternate_aperture_base,
			alternate_aperture_size);
			alternate_aperture_size,
			misc_process_properties);

	if (retval)
		goto out;
+4 −2
Original line number Diff line number Diff line
@@ -174,7 +174,8 @@ struct device_queue_manager_ops {
					   enum cache_policy default_policy,
					   enum cache_policy alternate_policy,
					   void __user *alternate_aperture_base,
					   uint64_t alternate_aperture_size);
					   uint64_t alternate_aperture_size,
					   u32 misc_process_properties);

	int (*process_termination)(struct device_queue_manager *dqm,
			struct qcm_process_device *qpd);
@@ -210,7 +211,8 @@ struct device_queue_manager_asic_ops {
					   enum cache_policy default_policy,
					   enum cache_policy alternate_policy,
					   void __user *alternate_aperture_base,
					   uint64_t alternate_aperture_size);
					   uint64_t alternate_aperture_size,
					   u32 misc_process_properties);
	void	(*init_sdma_vm)(struct device_queue_manager *dqm,
				struct queue *q,
				struct qcm_process_device *qpd);
+4 −2
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ static bool set_cache_memory_policy_cik(struct device_queue_manager *dqm,
				   enum cache_policy default_policy,
				   enum cache_policy alternate_policy,
				   void __user *alternate_aperture_base,
				   uint64_t alternate_aperture_size);
				   uint64_t alternate_aperture_size,
				   u32 misc_process_properties);
static int update_qpd_cik(struct device_queue_manager *dqm,
			  struct qcm_process_device *qpd);
static void init_sdma_vm(struct device_queue_manager *dqm,
@@ -88,7 +89,8 @@ static bool set_cache_memory_policy_cik(struct device_queue_manager *dqm,
				   enum cache_policy default_policy,
				   enum cache_policy alternate_policy,
				   void __user *alternate_aperture_base,
				   uint64_t alternate_aperture_size)
				   uint64_t alternate_aperture_size,
				   u32 misc_process_properties)
{
	uint32_t default_mtype;
	uint32_t ape1_mtype;
+4 −2
Original line number Diff line number Diff line
@@ -36,7 +36,8 @@ static bool set_cache_memory_policy_v10(struct device_queue_manager *dqm,
				   enum cache_policy default_policy,
				   enum cache_policy alternate_policy,
				   void __user *alternate_aperture_base,
				   uint64_t alternate_aperture_size);
				   uint64_t alternate_aperture_size,
				   u32 misc_process_properties);

void device_queue_manager_init_v10(
	struct device_queue_manager_asic_ops *asic_ops)
@@ -61,7 +62,8 @@ static bool set_cache_memory_policy_v10(struct device_queue_manager *dqm,
				   enum cache_policy default_policy,
				   enum cache_policy alternate_policy,
				   void __user *alternate_aperture_base,
				   uint64_t alternate_aperture_size)
				   uint64_t alternate_aperture_size,
				   u32 misc_process_properties)
{
	qpd->sh_mem_config = (SH_MEM_ALIGNMENT_MODE_UNALIGNED <<
			      SH_MEM_CONFIG__ALIGNMENT_MODE__SHIFT) |
Loading