Skip to content

Commit bd1aad7

Browse files
hghimirarodrigovivi
authored andcommitted
drm/xe/vram: Update handling of xe_force_wake_get return
xe_force_wake_get() now returns the reference count-incremented domain mask. If it fails for individual domains, the return value will always be 0. However, for XE_FORCEWAKE_ALL, it may return a non-zero value even in the event of failure. Update the return handling of xe_force_wake_get() to reflect this behavior, and ensure that the return value is passed as input to xe_force_wake_put(). v3 - return xe_wakeref_t instead of int in xe_force_wake_get() - xe_force_wake_put() error doesn't need to be escalated/considered as probing error. It internally WARNS on domain ack failure. v5 - return unsigned int from xe_force_wake_get() v7 - Fix commit message Cc: Rodrigo Vivi <[email protected]> Cc: Lucas De Marchi <[email protected]> Signed-off-by: Himal Prasad Ghimiray <[email protected]> Reviewed-by: Nirmoy Das <[email protected]> Reviewed-by: Badal Nilawar <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Signed-off-by: Rodrigo Vivi <[email protected]>
1 parent 7b1e908 commit bd1aad7

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

drivers/gpu/drm/xe/xe_vram.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,8 @@ static int tile_vram_size(struct xe_tile *tile, u64 *vram_size,
220220
{
221221
struct xe_device *xe = tile_to_xe(tile);
222222
struct xe_gt *gt = tile->primary_gt;
223+
unsigned int fw_ref;
223224
u64 offset;
224-
int err;
225225
u32 reg;
226226

227227
if (IS_SRIOV_VF(xe)) {
@@ -240,9 +240,9 @@ static int tile_vram_size(struct xe_tile *tile, u64 *vram_size,
240240
return 0;
241241
}
242242

243-
err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
244-
if (err)
245-
return err;
243+
fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
244+
if (!fw_ref)
245+
return -ETIMEDOUT;
246246

247247
/* actual size */
248248
if (unlikely(xe->info.platform == XE_DG1)) {
@@ -264,7 +264,9 @@ static int tile_vram_size(struct xe_tile *tile, u64 *vram_size,
264264
/* remove the tile offset so we have just the available size */
265265
*vram_size = offset - *tile_offset;
266266

267-
return xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
267+
xe_force_wake_put(gt_to_fw(gt), fw_ref);
268+
269+
return 0;
268270
}
269271

270272
static void vram_fini(void *arg)

0 commit comments

Comments
 (0)