Skip to content

Commit f5fc004

Browse files
hghimirarodrigovivi
authored andcommitted
drm/xe: Add member initialized_domains to xe_force_wake()
This field serves as a bitmask representing all initialized forcewake domains on the GT. v2 - Move awake_domains datatype change out of this patch (Michal) - Rename domain_init to init_domain (Michal) - optimize alignment (Michal) Cc: Michal Wajdeczko <[email protected]> Cc: Badal Nilawar <[email protected]> Cc: Rodrigo Vivi <[email protected]> Signed-off-by: Himal Prasad Ghimiray <[email protected]> Reviewed-by: Badal Nilawar <[email protected]> Reviewed-by: Michal Wajdeczko <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Signed-off-by: Rodrigo Vivi <[email protected]>
1 parent 649f533 commit f5fc004

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

drivers/gpu/drm/xe/xe_force_wake.c

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,25 @@ static const char *str_wake_sleep(bool wake)
2121
return wake ? "wake" : "sleep";
2222
}
2323

24-
static void domain_init(struct xe_force_wake_domain *domain,
24+
static void mark_domain_initialized(struct xe_force_wake *fw,
25+
enum xe_force_wake_domain_id id)
26+
{
27+
fw->initialized_domains |= BIT(id);
28+
}
29+
30+
static void init_domain(struct xe_force_wake *fw,
2531
enum xe_force_wake_domain_id id,
2632
struct xe_reg reg, struct xe_reg ack)
2733
{
34+
struct xe_force_wake_domain *domain = &fw->domains[id];
35+
2836
domain->id = id;
2937
domain->reg_ctl = reg;
3038
domain->reg_ack = ack;
3139
domain->val = FORCEWAKE_MT(FORCEWAKE_KERNEL);
3240
domain->mask = FORCEWAKE_MT_MASK(FORCEWAKE_KERNEL);
41+
42+
mark_domain_initialized(fw, id);
3343
}
3444

3545
void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
@@ -43,13 +53,11 @@ void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
4353
xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
4454

4555
if (xe->info.graphics_verx100 >= 1270) {
46-
domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
47-
XE_FW_DOMAIN_ID_GT,
56+
init_domain(fw, XE_FW_DOMAIN_ID_GT,
4857
FORCEWAKE_GT,
4958
FORCEWAKE_ACK_GT_MTL);
5059
} else {
51-
domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
52-
XE_FW_DOMAIN_ID_GT,
60+
init_domain(fw, XE_FW_DOMAIN_ID_GT,
5361
FORCEWAKE_GT,
5462
FORCEWAKE_ACK_GT);
5563
}
@@ -63,17 +71,15 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
6371
xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
6472

6573
if (!xe_gt_is_media_type(gt))
66-
domain_init(&fw->domains[XE_FW_DOMAIN_ID_RENDER],
67-
XE_FW_DOMAIN_ID_RENDER,
74+
init_domain(fw, XE_FW_DOMAIN_ID_RENDER,
6875
FORCEWAKE_RENDER,
6976
FORCEWAKE_ACK_RENDER);
7077

7178
for (i = XE_HW_ENGINE_VCS0, j = 0; i <= XE_HW_ENGINE_VCS7; ++i, ++j) {
7279
if (!(gt->info.engine_mask & BIT(i)))
7380
continue;
7481

75-
domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j],
76-
XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j,
82+
init_domain(fw, XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j,
7783
FORCEWAKE_MEDIA_VDBOX(j),
7884
FORCEWAKE_ACK_MEDIA_VDBOX(j));
7985
}
@@ -82,15 +88,13 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
8288
if (!(gt->info.engine_mask & BIT(i)))
8389
continue;
8490

85-
domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j],
86-
XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j,
91+
init_domain(fw, XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j,
8792
FORCEWAKE_MEDIA_VEBOX(j),
8893
FORCEWAKE_ACK_MEDIA_VEBOX(j));
8994
}
9095

9196
if (gt->info.engine_mask & BIT(XE_HW_ENGINE_GSCCS0))
92-
domain_init(&fw->domains[XE_FW_DOMAIN_ID_GSC],
93-
XE_FW_DOMAIN_ID_GSC,
97+
init_domain(fw, XE_FW_DOMAIN_ID_GSC,
9498
FORCEWAKE_GSC,
9599
FORCEWAKE_ACK_GSC);
96100
}

drivers/gpu/drm/xe/xe_force_wake_types.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ struct xe_force_wake {
7979
spinlock_t lock;
8080
/** @awake_domains: mask of all domains awake */
8181
enum xe_force_wake_domains awake_domains;
82+
/** @initialized_domains: mask of all initialized domains */
83+
unsigned int initialized_domains;
8284
/** @domains: force wake domains */
8385
struct xe_force_wake_domain domains[XE_FW_DOMAIN_ID_COUNT];
8486
};

0 commit comments

Comments
 (0)