Let's ensure our PCI device is awaken on every sysfs call. Let's increase the runtime_pm protection and start moving that to the outer bounds. For now, for the files with small number of attr functions, let's only call the runtime pm functions directly. For the hw_engines entries with many files, let's add the sysfs_ops wrapper. Reviewed-by: Matthew Auld <matthew.auld@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240222163937.138342-5-rodrigo.vivi@intel.com
43 lines
1.1 KiB
C
43 lines
1.1 KiB
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;
|
|
/** @xe: A pointer to the xe device */
|
|
struct xe_device *xe;
|
|
};
|
|
|
|
static inline struct xe_hw_engine_class_intf *kobj_to_eclass(struct kobject *kobj)
|
|
{
|
|
return container_of(kobj, struct kobj_eclass, base)->eclass;
|
|
}
|
|
|
|
static inline struct xe_device *kobj_to_xe(struct kobject *kobj)
|
|
{
|
|
return container_of(kobj, struct kobj_eclass, base)->xe;
|
|
}
|
|
|
|
#endif
|