]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/pf: Fix EAGAIN sign in pf_migration_consume()
authorShuicheng Lin <shuicheng.lin@intel.com>
Tue, 28 Apr 2026 20:14:48 +0000 (20:14 +0000)
committerMatthew Brost <matthew.brost@intel.com>
Tue, 5 May 2026 23:14:56 +0000 (16:14 -0700)
PTR_ERR() returns a negative value, so comparing against the positive
EAGAIN is always true for ERR_PTR(-EAGAIN), causing pf_migration_consume()
to bail out instead of continuing to the remaining GTs. On multi-GT
platforms this can skip GTs that already have data ready.

Compare against -EAGAIN to match the intent (and the following line
that correctly uses -EAGAIN). While at it, gate PTR_ERR() with
IS_ERR().

v2: add IS_ERR() guard before PTR_ERR(). (Gustavo)

Fixes: 67df4a5cbc58 ("drm/xe/pf: Add data structures and handlers for migration rings")
Cc: MichaƂ Winiarski <michal.winiarski@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Link: https://patch.msgid.link/20260428201448.3999428-1-shuicheng.lin@intel.com
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
(cherry picked from commit 9d770e72e1edb54beacfce5f402edb51632811e3)
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
drivers/gpu/drm/xe/xe_sriov_pf_migration.c

index 6c4b16409cc9af9a5f6f86e86e4e9e52e4add33c..150a241110fbdece31d1d8519d4efd190c9919e0 100644 (file)
@@ -149,10 +149,11 @@ pf_migration_consume(struct xe_device *xe, unsigned int vfid)
 
        for_each_gt(gt, xe, gt_id) {
                data = xe_gt_sriov_pf_migration_save_consume(gt, vfid);
-               if (data && PTR_ERR(data) != EAGAIN)
+               if (!data)
+                       continue;
+               if (!IS_ERR(data) || PTR_ERR(data) != -EAGAIN)
                        return data;
-               if (PTR_ERR(data) == -EAGAIN)
-                       more_data = true;
+               more_data = true;
        }
 
        if (!more_data)