]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/pf: Drop GuC notifications for non-existing VF
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Wed, 28 Aug 2024 21:08:08 +0000 (23:08 +0200)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Fri, 30 Aug 2024 08:51:08 +0000 (10:51 +0200)
It is unlikely that GuC will ever send a G2H notification with an
invalid VFID and it is currently harmless if that actually happen.
But in upcoming patches we will start using that VFID as an index
and we must be sure it is a valid to avoid a crash due to a buggy
firmware or a currupted G2H message.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240828210809.1528-4-michal.wajdeczko@intel.com
drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c

index d11839d9e7d4b99f262b4a3ab906f4aa222decc3..ad447d867e51c8cd53841228eb9d405bc163032f 100644 (file)
@@ -8,6 +8,7 @@
 #include "xe_device.h"
 #include "xe_gt.h"
 #include "xe_gt_sriov_pf_control.h"
+#include "xe_gt_sriov_pf_helpers.h"
 #include "xe_gt_sriov_printk.h"
 #include "xe_guc_ct.h"
 #include "xe_sriov.h"
@@ -212,6 +213,11 @@ static void pf_handle_vf_flr_done(struct xe_gt *gt, u32 vfid)
 
 static int pf_handle_vf_event(struct xe_gt *gt, u32 vfid, u32 eventid)
 {
+       xe_gt_sriov_dbg_verbose(gt, "received VF%u event %#x\n", vfid, eventid);
+
+       if (vfid > xe_gt_sriov_pf_get_totalvfs(gt))
+               return -EPROTO;
+
        switch (eventid) {
        case GUC_PF_NOTIFY_VF_FLR:
                pf_handle_vf_flr(gt, vfid);