Commit 541a1372 authored by Andrzej Kacprowski's avatar Andrzej Kacprowski Committed by Jacek Lawrynowicz
Browse files

accel/ivpu: Fix reset_engine debugfs file logic



The current reset_engine implementation unconditionally resets
all engines. Improve implementation to reset only the engine
requested by the user space to allow more granular testing.
Also use DEFINE_DEBUGFS_ATTRIBUTE() to simplify implementation.

Same changes applied to resume_engine debugfs file for consistency.

Signed-off-by: default avatarAndrzej Kacprowski <Andrzej.Kacprowski@intel.com>
Reviewed-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Reviewed-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240930195322.461209-22-jacek.lawrynowicz@linux.intel.com


Signed-off-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
parent 8c3c5f84
Loading
Loading
Loading
Loading
+8 −34
Original line number Diff line number Diff line
@@ -337,49 +337,23 @@ static const struct file_operations ivpu_force_recovery_fops = {
	.write = ivpu_force_recovery_fn,
};

static ssize_t
ivpu_reset_engine_fn(struct file *file, const char __user *user_buf, size_t size, loff_t *pos)
static int ivpu_reset_engine_fn(void *data, u64 val)
{
	struct ivpu_device *vdev = file->private_data;

	if (!size)
		return -EINVAL;

	if (ivpu_jsm_reset_engine(vdev, DRM_IVPU_ENGINE_COMPUTE))
		return -ENODEV;
	if (ivpu_jsm_reset_engine(vdev, DRM_IVPU_ENGINE_COPY))
		return -ENODEV;
	struct ivpu_device *vdev = (struct ivpu_device *)data;

	return size;
	return ivpu_jsm_reset_engine(vdev, (u32)val);
}

static const struct file_operations ivpu_reset_engine_fops = {
	.owner = THIS_MODULE,
	.open = simple_open,
	.write = ivpu_reset_engine_fn,
};
DEFINE_DEBUGFS_ATTRIBUTE(ivpu_reset_engine_fops, NULL, ivpu_reset_engine_fn, "0x%02llx\n");

static ssize_t
ivpu_resume_engine_fn(struct file *file, const char __user *user_buf, size_t size, loff_t *pos)
static int ivpu_resume_engine_fn(void *data, u64 val)
{
	struct ivpu_device *vdev = file->private_data;

	if (!size)
		return -EINVAL;

	if (ivpu_jsm_hws_resume_engine(vdev, DRM_IVPU_ENGINE_COMPUTE))
		return -ENODEV;
	if (ivpu_jsm_hws_resume_engine(vdev, DRM_IVPU_ENGINE_COPY))
		return -ENODEV;
	struct ivpu_device *vdev = (struct ivpu_device *)data;

	return size;
	return ivpu_jsm_hws_resume_engine(vdev, (u32)val);
}

static const struct file_operations ivpu_resume_engine_fops = {
	.owner = THIS_MODULE,
	.open = simple_open,
	.write = ivpu_resume_engine_fn,
};
DEFINE_DEBUGFS_ATTRIBUTE(ivpu_resume_engine_fops, NULL, ivpu_resume_engine_fn, "0x%02llx\n");

static int dct_active_get(void *data, u64 *active_percent)
{