mirror of
https://github.com/torvalds/linux.git
synced 2026-04-23 09:05:50 -04:00
Add sysfs entries for the min, max, and defaults for each of
engine scheduler controls for every hardware engine class.
Non-elevated user IOCTLs to set these controls must be within
the min-max ranges of the sysfs entries, elevated user can set
these controls to any value. However, introduced compile time
CONFIG min-max values which restricts elevated user to be in
compile time min-max range if at all sysfs min/max are violated.
Sysfs entries examples are,
DUT# cat /sys/class/drm/cardX/device/tileN/gtN/engines/ccs/.defaults/
job_timeout_max job_timeout_ms preempt_timeout_min timeslice_duration_max timeslice_duration_us
job_timeout_min preempt_timeout_max preempt_timeout_us timeslice_duration_min
DUT# cat /sys/class/drm/card1/device/tileN/gtN/engines/ccs/
.defaults/ job_timeout_min preempt_timeout_max preempt_timeout_us timeslice_duration_min
job_timeout_max job_timeout_ms preempt_timeout_min timeslice_duration_max timeslice_duration_us
V12:
- Rebase
V11:
- Make engine_get_prop_minmax and enforce_sched_limit static - Matt
- use enum in place of string in engine_get_prop_minmax - Matt
- no need to use enforce_sched_limit or no need to filter min/max
per user type in sysfs - Matt
V10:
- Add kernel doc for non-static func
- Make helper to get min/max for range validation - Matt
- Filter min/max per user type
V9 :
- Rebase to use s/xe_engine/xe_hw_engine/ - Matt
V8 :
- fix enforce_sched_limit and avoid code duplication - Niranjana
- Make sure min < max - Niranjana
V7 :
- Rebase to replace hw engine with eclass interface
- return EINVAL in place of EPERM
- Use some APIs to avoid code duplication
V6 :
- Rebase changes to reflect per engine class props interface - MattB
- Use #if ENABLED - MattB
- Remove MAX_SCHED_TIMEOUT check as range validation is enough
V5 :
- Rebase to resolve conflicts - CI
V4 :
- Rebase
- Update commit to reflect tile addition
- Use XE_HW macro directly as they are already filtered
for CONFIG checks - Niranjana
- Add CONFIG for enable/disable min/max limitation
on elevated user. Default is enable - Matt/Joonas
V3 :
- Resolve CI hooks warning for kernel-doc
V2 :
- Restric min/max setting to #define default min/max for
elevated user - Himal
- Remove unrelated changes from patch - Niranjana
Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
37 lines
924 B
C
37 lines
924 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2023 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_ENGINE_CLASS_SYSFS_H_
|
|
#define _XE_ENGINE_CLASS_SYSFS_H__
|
|
|
|
#include <linux/kobject.h>
|
|
|
|
struct xe_gt;
|
|
struct xe_hw_engine_class_intf;
|
|
|
|
int xe_hw_engine_class_sysfs_init(struct xe_gt *gt);
|
|
bool xe_hw_engine_timeout_in_range(u64 timeout, u64 min, u64 max);
|
|
|
|
/**
|
|
* struct kobj_eclass - A eclass's kobject struct that connects the kobject and the
|
|
* eclass.
|
|
*
|
|
* When dealing with multiple eclass, this struct helps to understand which eclass
|
|
* needs to be addressed on a given sysfs call.
|
|
*/
|
|
struct kobj_eclass {
|
|
/** @base: The actual kobject */
|
|
struct kobject base;
|
|
/** @eclass: A pointer to the hw engine class interface */
|
|
struct xe_hw_engine_class_intf *eclass;
|
|
};
|
|
|
|
static inline struct xe_hw_engine_class_intf *kobj_to_eclass(struct kobject *kobj)
|
|
{
|
|
return container_of(kobj, struct kobj_eclass, base)->eclass;
|
|
}
|
|
|
|
#endif
|