-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
drm/i915/gt: create per-tile sysfs interface
Now that we have tiles we want each of them to have its own interface. A directory "gt/" is created under "cardN/" that will contain as many diroctories as the tiles. In the coming patches tile related interfaces will be added. For now the sysfs gt structure simply has an id interface related to the current tile count. The directory structure will follow this scheme: /sys/.../card0 └── gt ├── gt0 │ └── id : : └─- gtN └── id This new set of interfaces will be a basic tool for system managers and administrators when using i915. Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Matt Roper <matthew.d.roper@intel.com> Cc: Sujaritha Sundaresan <sujaritha.sundaresan@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Sujaritha Sundaresan <sujaritha.sundaresan@intel.com> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> Signed-off-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220318233938.149744-5-andi.shyti@linux.intel.com
- Loading branch information
Andi Shyti
authored and
Matthew Auld
committed
Mar 21, 2022
1 parent
bec68cc
commit b770bcf
Showing
7 changed files
with
151 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
// SPDX-License-Identifier: MIT | ||
/* | ||
* Copyright © 2022 Intel Corporation | ||
*/ | ||
|
||
#include <drm/drm_device.h> | ||
#include <linux/device.h> | ||
#include <linux/kobject.h> | ||
#include <linux/printk.h> | ||
#include <linux/sysfs.h> | ||
|
||
#include "i915_drv.h" | ||
#include "i915_sysfs.h" | ||
#include "intel_gt.h" | ||
#include "intel_gt_sysfs.h" | ||
#include "intel_gt_types.h" | ||
#include "intel_rc6.h" | ||
|
||
bool is_object_gt(struct kobject *kobj) | ||
{ | ||
return !strncmp(kobj->name, "gt", 2); | ||
} | ||
|
||
static struct intel_gt *kobj_to_gt(struct kobject *kobj) | ||
{ | ||
return container_of(kobj, struct kobj_gt, base)->gt; | ||
} | ||
|
||
struct intel_gt *intel_gt_sysfs_get_drvdata(struct device *dev, | ||
const char *name) | ||
{ | ||
struct kobject *kobj = &dev->kobj; | ||
|
||
/* | ||
* We are interested at knowing from where the interface | ||
* has been called, whether it's called from gt/ or from | ||
* the parent directory. | ||
* From the interface position it depends also the value of | ||
* the private data. | ||
* If the interface is called from gt/ then private data is | ||
* of the "struct intel_gt *" type, otherwise it's * a | ||
* "struct drm_i915_private *" type. | ||
*/ | ||
if (!is_object_gt(kobj)) { | ||
struct drm_i915_private *i915 = kdev_minor_to_i915(dev); | ||
|
||
return to_gt(i915); | ||
} | ||
|
||
return kobj_to_gt(kobj); | ||
} | ||
|
||
static ssize_t id_show(struct device *dev, | ||
struct device_attribute *attr, | ||
char *buf) | ||
{ | ||
struct intel_gt *gt = intel_gt_sysfs_get_drvdata(dev, attr->attr.name); | ||
|
||
return sysfs_emit(buf, "%u\n", gt->info.id); | ||
} | ||
static DEVICE_ATTR_RO(id); | ||
|
||
static struct attribute *id_attrs[] = { | ||
&dev_attr_id.attr, | ||
NULL, | ||
}; | ||
ATTRIBUTE_GROUPS(id); | ||
|
||
static void kobj_gt_release(struct kobject *kobj) | ||
{ | ||
kfree(kobj); | ||
} | ||
|
||
static struct kobj_type kobj_gt_type = { | ||
.release = kobj_gt_release, | ||
.sysfs_ops = &kobj_sysfs_ops, | ||
.default_groups = id_groups, | ||
}; | ||
|
||
void intel_gt_sysfs_register(struct intel_gt *gt) | ||
{ | ||
struct kobj_gt *kg; | ||
|
||
kg = kzalloc(sizeof(*kg), GFP_KERNEL); | ||
if (!kg) | ||
goto exit_fail; | ||
|
||
kobject_init(&kg->base, &kobj_gt_type); | ||
kg->gt = gt; | ||
|
||
/* xfer ownership to sysfs tree */ | ||
if (kobject_add(&kg->base, gt->i915->sysfs_gt, "gt%d", gt->info.id)) | ||
goto exit_kobj_put; | ||
|
||
return; | ||
|
||
exit_kobj_put: | ||
kobject_put(&kg->base); | ||
|
||
exit_fail: | ||
drm_warn(>->i915->drm, | ||
"failed to initialize gt%d sysfs root\n", gt->info.id); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/* SPDX-License-Identifier: MIT */ | ||
/* | ||
* Copyright © 2022 Intel Corporation | ||
*/ | ||
|
||
#ifndef __SYSFS_GT_H__ | ||
#define __SYSFS_GT_H__ | ||
|
||
#include <linux/ctype.h> | ||
#include <linux/kobject.h> | ||
|
||
#include "i915_gem.h" /* GEM_BUG_ON() */ | ||
|
||
struct intel_gt; | ||
|
||
struct kobj_gt { | ||
struct kobject base; | ||
struct intel_gt *gt; | ||
}; | ||
|
||
bool is_object_gt(struct kobject *kobj); | ||
|
||
struct drm_i915_private *kobj_to_i915(struct kobject *kobj); | ||
|
||
struct kobject * | ||
intel_gt_create_kobj(struct intel_gt *gt, | ||
struct kobject *dir, | ||
const char *name); | ||
|
||
void intel_gt_sysfs_register(struct intel_gt *gt); | ||
struct intel_gt *intel_gt_sysfs_get_drvdata(struct device *dev, | ||
const char *name); | ||
|
||
#endif /* SYSFS_GT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters