Lines Matching +full:idle +full:- +full:state +full:- +full:name

1 // SPDX-License-Identifier: MIT
17 * DOC: Xe GT Idle
19 * Contains functions that init GT idle features like C6
21 * device/gt#/gtidle/name - name of the state
22 * device/gt#/gtidle/idle_residency_ms - Provides residency of the idle state in ms
23 * device/gt#/gtidle/idle_status - Provides current idle state
28 struct kobject *kobj = &dev->kobj; in dev_to_gtidle()
30 return &kobj_to_gt(kobj->parent)->gtidle; in dev_to_gtidle()
40 return &gtidle_to_gt(gtidle)->uc.guc.pc; in gtidle_to_pc()
43 static const char *gt_idle_state_to_string(enum xe_gt_idle_state state) in gt_idle_state_to_string() argument
45 switch (state) { in gt_idle_state_to_string()
47 return "gt-c0"; in gt_idle_state_to_string()
49 return "gt-c6"; in gt_idle_state_to_string()
63 * Store previous hw counter values for counter wrap-around handling in get_residency_ms()
66 prev_residency = gtidle->prev_residency; in get_residency_ms()
67 gtidle->prev_residency = cur_residency; in get_residency_ms()
71 delta = cur_residency - prev_residency; in get_residency_ms()
73 delta = cur_residency + (overflow_residency - prev_residency); in get_residency_ms()
75 /* Add delta to extended raw driver copy of idle residency */ in get_residency_ms()
76 cur_residency = gtidle->cur_residency + delta; in get_residency_ms()
77 gtidle->cur_residency = cur_residency; in get_residency_ms()
80 cur_residency = mul_u64_u32_div(cur_residency, gtidle->residency_multiplier, 1e6); in get_residency_ms()
90 return sysfs_emit(buff, "%s\n", gtidle->name); in name_show()
92 static DEVICE_ATTR_RO(name);
99 enum xe_gt_idle_state state; in idle_status_show() local
101 state = gtidle->idle_status(pc); in idle_status_show()
103 return sysfs_emit(buff, "%s\n", gt_idle_state_to_string(state)); in idle_status_show()
114 residency = gtidle->idle_residency(pc); in idle_residency_ms_show()
141 kobj = kobject_create_and_add("gtidle", gt->sysfs); in xe_gt_idle_sysfs_init()
143 drm_warn(&xe->drm, "%s failed, err: %d\n", __func__, -ENOMEM); in xe_gt_idle_sysfs_init()
148 sprintf(gtidle->name, "gt%d-mc", gt->info.id); in xe_gt_idle_sysfs_init()
149 gtidle->idle_residency = xe_guc_pc_mc6_residency; in xe_gt_idle_sysfs_init()
151 sprintf(gtidle->name, "gt%d-rc", gt->info.id); in xe_gt_idle_sysfs_init()
152 gtidle->idle_residency = xe_guc_pc_rc6_residency; in xe_gt_idle_sysfs_init()
156 gtidle->residency_multiplier = 1280; in xe_gt_idle_sysfs_init()
157 gtidle->idle_status = xe_guc_pc_c_status; in xe_gt_idle_sysfs_init()
162 drm_warn(&xe->drm, "failed to register gtidle sysfs, err: %d\n", err); in xe_gt_idle_sysfs_init()
166 err = drmm_add_action_or_reset(&xe->drm, gt_idle_sysfs_fini, kobj); in xe_gt_idle_sysfs_init()
168 drm_warn(&xe->drm, "%s: drmm_add_action_or_reset failed, err: %d\n", in xe_gt_idle_sysfs_init()