Commit bc3a06ea authored by Tejas Upadhyay's avatar Tejas Upadhyay Committed by Rodrigo Vivi

drm/xe: Add timeslice duration engine property to sysfs

Timeslices between multiple context is supported via
guc scheduling. Add sysfs entry to provide user defined
timeslice duration to guc scheduling.

The timeslice duration can be adjusted per-engine class using,

/sys/class/drm/cardX/device/tileN/gtN/engines/ccs/timeslice_duration_us

V8:
  - Rebase
V7:
  - Rebase to use s/xe_engine/xe_hw_engine/ - Matt
V6:
  - Remove duration validation, not relevant - Niranjana
V5:
  - Rebase to replace hw engine with eclass interface
V4:
  - Rebase to per class engine props interface
V3:
  - Rebase
  - Update commit messge to add tile
V2:
  - Rebase
Reviewed-by: default avatarNiranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
Signed-off-by: default avatarTejas Upadhyay <tejas.upadhyay@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent e91a989c
......@@ -63,6 +63,35 @@ static ssize_t job_timeout_default(struct kobject *kobj,
static struct kobj_attribute job_timeout_def =
__ATTR(job_timeout_ms, 0444, job_timeout_default, NULL);
static ssize_t timeslice_duration_store(struct kobject *kobj,
struct kobj_attribute *attr,
const char *buf, size_t count)
{
struct xe_hw_engine_class_intf *eclass = kobj_to_eclass(kobj);
u32 duration;
int err;
err = kstrtou32(buf, 0, &duration);
if (err)
return err;
WRITE_ONCE(eclass->sched_props.timeslice_us, duration);
return count;
}
static ssize_t timeslice_duration_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
{
struct xe_hw_engine_class_intf *eclass = kobj_to_eclass(kobj);
return sprintf(buf, "%u\n", eclass->sched_props.timeslice_us);
}
static struct kobj_attribute timeslice_duration_attr =
__ATTR(timeslice_duration_us, 0644, timeslice_duration_show,
timeslice_duration_store);
static ssize_t timeslice_default(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
{
......@@ -95,6 +124,7 @@ static const struct attribute *defaults[] = {
static const struct attribute *files[] = {
&job_timeout_attr.attr,
&timeslice_duration_attr.attr,
NULL
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment