trace_xe_reg_rw(mmio, true, addr, val, sizeof(val));
 
-       if (!reg.vf && mmio->sriov_vf_gt)
-               xe_gt_sriov_vf_write32(mmio->sriov_vf_gt, reg, val);
+       if (!reg.vf && IS_SRIOV_VF(mmio->tile->xe))
+               xe_gt_sriov_vf_write32(mmio->sriov_vf_gt ?:
+                                      mmio->tile->primary_gt, reg, val);
        else
                writel(val, mmio->regs + addr);
 }
        /* Wa_15015404425 */
        mmio_flush_pending_writes(mmio);
 
-       if (!reg.vf && mmio->sriov_vf_gt)
-               val = xe_gt_sriov_vf_read32(mmio->sriov_vf_gt, reg);
+       if (!reg.vf && IS_SRIOV_VF(mmio->tile->xe))
+               val = xe_gt_sriov_vf_read32(mmio->sriov_vf_gt ?:
+                                           mmio->tile->primary_gt, reg);
        else
                val = readl(mmio->regs + addr);