diff options
Diffstat (limited to 'drivers/gpu/drm/i915/gt/sysfs_engines.c')
| -rw-r--r-- | drivers/gpu/drm/i915/gt/sysfs_engines.c | 25 | 
1 files changed, 15 insertions, 10 deletions
| diff --git a/drivers/gpu/drm/i915/gt/sysfs_engines.c b/drivers/gpu/drm/i915/gt/sysfs_engines.c index 967031056202..f2d9858d827c 100644 --- a/drivers/gpu/drm/i915/gt/sysfs_engines.c +++ b/drivers/gpu/drm/i915/gt/sysfs_engines.c @@ -144,7 +144,7 @@ max_spin_store(struct kobject *kobj, struct kobj_attribute *attr,  	       const char *buf, size_t count)  {  	struct intel_engine_cs *engine = kobj_to_engine(kobj); -	unsigned long long duration; +	unsigned long long duration, clamped;  	int err;  	/* @@ -168,7 +168,8 @@ max_spin_store(struct kobject *kobj, struct kobj_attribute *attr,  	if (err)  		return err; -	if (duration > jiffies_to_nsecs(2)) +	clamped = intel_clamp_max_busywait_duration_ns(engine, duration); +	if (duration != clamped)  		return -EINVAL;  	WRITE_ONCE(engine->props.max_busywait_duration_ns, duration); @@ -203,7 +204,7 @@ timeslice_store(struct kobject *kobj, struct kobj_attribute *attr,  		const char *buf, size_t count)  {  	struct intel_engine_cs *engine = kobj_to_engine(kobj); -	unsigned long long duration; +	unsigned long long duration, clamped;  	int err;  	/* @@ -218,7 +219,8 @@ timeslice_store(struct kobject *kobj, struct kobj_attribute *attr,  	if (err)  		return err; -	if (duration > jiffies_to_msecs(MAX_SCHEDULE_TIMEOUT)) +	clamped = intel_clamp_timeslice_duration_ms(engine, duration); +	if (duration != clamped)  		return -EINVAL;  	WRITE_ONCE(engine->props.timeslice_duration_ms, duration); @@ -256,7 +258,7 @@ stop_store(struct kobject *kobj, struct kobj_attribute *attr,  	   const char *buf, size_t count)  {  	struct intel_engine_cs *engine = kobj_to_engine(kobj); -	unsigned long long duration; +	unsigned long long duration, clamped;  	int err;  	/* @@ -272,7 +274,8 @@ stop_store(struct kobject *kobj, struct kobj_attribute *attr,  	if (err)  		return err; -	if (duration > jiffies_to_msecs(MAX_SCHEDULE_TIMEOUT)) +	clamped = intel_clamp_stop_timeout_ms(engine, duration); +	if (duration != clamped)  		return -EINVAL;  	WRITE_ONCE(engine->props.stop_timeout_ms, duration); @@ -306,7 +309,7 @@ preempt_timeout_store(struct kobject *kobj, struct kobj_attribute *attr,  		      const char *buf, size_t count)  {  	struct intel_engine_cs *engine = kobj_to_engine(kobj); -	unsigned long long timeout; +	unsigned long long timeout, clamped;  	int err;  	/* @@ -322,7 +325,8 @@ preempt_timeout_store(struct kobject *kobj, struct kobj_attribute *attr,  	if (err)  		return err; -	if (timeout > jiffies_to_msecs(MAX_SCHEDULE_TIMEOUT)) +	clamped = intel_clamp_preempt_timeout_ms(engine, timeout); +	if (timeout != clamped)  		return -EINVAL;  	WRITE_ONCE(engine->props.preempt_timeout_ms, timeout); @@ -362,7 +366,7 @@ heartbeat_store(struct kobject *kobj, struct kobj_attribute *attr,  		const char *buf, size_t count)  {  	struct intel_engine_cs *engine = kobj_to_engine(kobj); -	unsigned long long delay; +	unsigned long long delay, clamped;  	int err;  	/* @@ -379,7 +383,8 @@ heartbeat_store(struct kobject *kobj, struct kobj_attribute *attr,  	if (err)  		return err; -	if (delay >= jiffies_to_msecs(MAX_SCHEDULE_TIMEOUT)) +	clamped = intel_clamp_heartbeat_interval_ms(engine, delay); +	if (delay != clamped)  		return -EINVAL;  	err = intel_engine_set_heartbeat(engine, delay); |