All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Wajdeczko <michal.wajdeczko@intel.com>
To: "Michał Winiarski" <michal.winiarski@intel.com>,
	"Alex Williamson" <alex@shazbot.org>,
	"Lucas De Marchi" <lucas.demarchi@intel.com>,
	"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
	"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
	"Jason Gunthorpe" <jgg@ziepe.ca>,
	"Yishai Hadas" <yishaih@nvidia.com>,
	"Kevin Tian" <kevin.tian@intel.com>,
	"Shameer Kolothum" <skolothumtho@nvidia.com>,
	intel-xe@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, "Matthew Brost" <matthew.brost@intel.com>
Cc: <dri-devel@lists.freedesktop.org>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
	Tvrtko Ursulin <tursulin@ursulin.net>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	"Lukasz Laguna" <lukasz.laguna@intel.com>,
	Christoph Hellwig <hch@infradead.org>
Subject: Re: [PATCH v5 24/28] drm/xe/pf: Enable SR-IOV VF migration
Date: Sat, 22 Nov 2025 19:10:12 +0100	[thread overview]
Message-ID: <ced3b341-cecc-45e6-bed1-04f5dfdc93d8@intel.com> (raw)
In-Reply-To: <20251111010439.347045-25-michal.winiarski@intel.com>



On 11/11/2025 2:04 AM, Michał Winiarski wrote:
> All of the necessary building blocks are now in place to support SR-IOV
> VF migration.
> Flip the enable/disable logic to match VF code and disable the feature
> only for platforms that don't meet the necessary pre-requisites.

typo: prerequisites

> 
> Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 12 +++++++
>  drivers/gpu/drm/xe/xe_sriov_pf_migration.c    | 32 ++++++++++++++++---
>  drivers/gpu/drm/xe/xe_sriov_pf_migration.h    |  1 +
>  .../gpu/drm/xe/xe_sriov_pf_migration_types.h  |  4 +--
>  4 files changed, 42 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c
> index 6ad948e96fd45..0a0c3145e1274 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c
> @@ -17,6 +17,7 @@
>  #include "xe_gt_sriov_pf_helpers.h"
>  #include "xe_gt_sriov_pf_migration.h"
>  #include "xe_gt_sriov_printk.h"
> +#include "xe_guc.h"
>  #include "xe_guc_buf.h"
>  #include "xe_guc_ct.h"
>  #include "xe_migrate.h"
> @@ -1008,6 +1009,15 @@ static void action_ring_cleanup(void *arg)
>  	ptr_ring_cleanup(r, destroy_pf_packet);
>  }
>  
> +static void pf_gt_migration_check_support(struct xe_gt *gt)
> +{
> +	if (IS_ENABLED(CONFIG_DRM_XE_DEBUG))
> +		return;

maybe instead of blindly ignoring all checks in the debug mode, let them go
and just in xe_sriov_pf_migration_disable() don't set disabled=true or
ignore .disabled flag in xe_sriov_pf_migration_supported() ?

then we could still experiment in debug mode without any restrictions,
but have some logs about missing official prerequisites 

> +
> +	if (GUC_FIRMWARE_VER(&gt->uc.guc) < MAKE_GUC_VER(70, 54, 0))
> +		xe_sriov_pf_migration_disable(gt_to_xe(gt), "requires GuC version >= 70.54.0");
> +}
> +
>  /**
>   * xe_gt_sriov_pf_migration_init() - Initialize support for VF migration.
>   * @gt: the &xe_gt
> @@ -1024,6 +1034,8 @@ int xe_gt_sriov_pf_migration_init(struct xe_gt *gt)
>  
>  	xe_gt_assert(gt, IS_SRIOV_PF(xe));
>  
> +	pf_gt_migration_check_support(gt);
> +
>  	if (!pf_migration_supported(gt))
>  		return 0;
>  
> diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c
> index d6c24bea759af..7dd7625e5aeed 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c
> @@ -46,13 +46,34 @@ bool xe_sriov_pf_migration_supported(struct xe_device *xe)
>  {
>  	xe_assert(xe, IS_SRIOV_PF(xe));
>  
> -	return xe->sriov.pf.migration.supported;
> +	return !xe->sriov.pf.migration.disabled;

	return IS_ENABLED(CONFIG_DRM_XE_DEBUG) || !xe->sriov.pf.migration.disabled;

>  }
>  
> -static bool pf_check_migration_support(struct xe_device *xe)
> +/**
> + * xe_sriov_pf_migration_disable - Turn off SR-IOV VF migration support on PF.

    * xe_sriov_pf_migration_disable() - ...

> + * @xe: the &xe_device instance.
> + * @fmt: format string for the log message, to be combined with following VAs.
> + */
> +void xe_sriov_pf_migration_disable(struct xe_device *xe, const char *fmt, ...)
> +{
> +	struct va_format vaf;
> +	va_list va_args;
> +
> +	xe_assert(xe, IS_SRIOV_PF(xe));
> +
> +	va_start(va_args, fmt);
> +	vaf.fmt = fmt;
> +	vaf.va  = &va_args;
> +	xe_sriov_notice(xe, "migration disabled: %pV\n", &vaf);

	"migration %s: %pV\n",
		IS_ENABLED(CONFIG_DRM_XE_DEBUG) ?
		"missing prerequisite" : "disabled"

> +	va_end(va_args);
> +
> +	xe->sriov.pf.migration.disabled = true;
> +}
> +
> +static void pf_migration_check_support(struct xe_device *xe)
>  {
> -	/* XXX: for now this is for feature enabling only */
> -	return IS_ENABLED(CONFIG_DRM_XE_DEBUG);
> +	if (!xe_device_has_memirq(xe))
> +		xe_sriov_pf_migration_disable(xe, "requires memory-based IRQ support");
>  }
>  
>  static void pf_migration_cleanup(void *arg)
> @@ -77,7 +98,8 @@ int xe_sriov_pf_migration_init(struct xe_device *xe)
>  
>  	xe_assert(xe, IS_SRIOV_PF(xe));
>  
> -	xe->sriov.pf.migration.supported = pf_check_migration_support(xe);
> +	pf_migration_check_support(xe);
> +
>  	if (!xe_sriov_pf_migration_supported(xe))
>  		return 0;
>  
> diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h b/drivers/gpu/drm/xe/xe_sriov_pf_migration.h
> index b806298a0bb62..f8f408df84813 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h
> +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.h
> @@ -14,6 +14,7 @@ struct xe_sriov_packet;
>  
>  int xe_sriov_pf_migration_init(struct xe_device *xe);
>  bool xe_sriov_pf_migration_supported(struct xe_device *xe);
> +void xe_sriov_pf_migration_disable(struct xe_device *xe, const char *fmt, ...);
>  int xe_sriov_pf_migration_restore_produce(struct xe_device *xe, unsigned int vfid,
>  					  struct xe_sriov_packet *data);
>  struct xe_sriov_packet *
> diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h b/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h
> index 363d673ee1dd5..7d9a8a278d915 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h
> +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h
> @@ -14,8 +14,8 @@
>   * struct xe_sriov_pf_migration - Xe device level VF migration data
>   */
>  struct xe_sriov_pf_migration {
> -	/** @supported: indicates whether VF migration feature is supported */
> -	bool supported;
> +	/** @disabled: indicates whether VF migration feature is disabled */
> +	bool disabled;
>  };
>  
>  /**


  parent reply	other threads:[~2025-11-22 18:10 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-11  1:04 [PATCH v5 00/28] vfio/xe: Add driver variant for Xe VF migration Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 01/28] drm/xe/pf: Remove GuC version check for migration support Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 02/28] drm/xe: Move migration support to device-level struct Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 03/28] drm/xe/pf: Convert control state to bitmap Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 04/28] drm/xe/pf: Add save/restore control state stubs and connect to debugfs Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 05/28] drm/xe/pf: Add data structures and handlers for migration rings Michał Winiarski
2025-11-11 18:35   ` Michal Wajdeczko
2025-11-12 12:12     ` Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 06/28] drm/xe/pf: Add helpers for migration data packet allocation / free Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 07/28] drm/xe/pf: Add support for encap/decap of bitstream to/from packet Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 08/28] drm/xe/pf: Add minimalistic migration descriptor Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 09/28] drm/xe/pf: Expose VF migration data size over debugfs Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 10/28] drm/xe: Add sa/guc_buf_cache sync interface Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 11/28] drm/xe: Allow the caller to pass guc_buf_cache size Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 12/28] drm/xe/pf: Increase PF GuC Buffer Cache size and use it for VF migration Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 13/28] drm/xe/pf: Remove GuC migration data save/restore from GT debugfs Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 14/28] drm/xe/pf: Don't save GuC VF migration data on pause Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 15/28] drm/xe/pf: Switch VF migration GuC save/restore to struct migration data Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 16/28] drm/xe/pf: Handle GuC migration data as part of PF control Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 17/28] drm/xe/pf: Add helpers for VF GGTT migration data handling Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 18/28] drm/xe/pf: Handle GGTT migration data as part of PF control Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 19/28] drm/xe/pf: Handle MMIO " Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 20/28] drm/xe/pf: Add helper to retrieve VF's LMEM object Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 21/28] drm/xe/migrate: Add function to copy of VRAM data in chunks Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 22/28] drm/xe/pf: Handle VRAM migration data as part of PF control Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 23/28] drm/xe/pf: Add wait helper for VF FLR Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 24/28] drm/xe/pf: Enable SR-IOV VF migration Michał Winiarski
2025-11-17 18:48   ` Alex Williamson
2025-11-20  9:48     ` Michał Winiarski
2025-11-22 18:10   ` Michal Wajdeczko [this message]
2025-11-24 21:19     ` Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 25/28] drm/xe/pci: Introduce a helper to allow VF access to PF xe_device Michał Winiarski
2025-11-22 18:38   ` Michal Wajdeczko
2025-11-24 21:17     ` Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 26/28] drm/xe/pf: Export helpers for VFIO Michał Winiarski
2025-11-22 17:45   ` Michal Wajdeczko
2025-11-24 21:25     ` Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 27/28] drm/intel/bmg: Allow device ID usage with single-argument macros Michał Winiarski
2025-11-11  1:04 ` [PATCH v5 28/28] vfio/xe: Add device specific vfio_pci driver variant for Intel graphics Michał Winiarski
2025-11-11  1:38   ` Tian, Kevin
2025-11-11  8:25     ` Winiarski, Michal
2025-11-11  9:53       ` Tian, Kevin
2025-11-12 13:46         ` Winiarski, Michal
2025-11-17 17:41           ` Jason Gunthorpe
2025-11-20 12:40             ` Winiarski, Michal
2025-11-21  7:19               ` Tian, Kevin
2025-11-11  1:13 ` ✗ CI.checkpatch: warning for vfio/xe: Add driver variant for Xe VF migration (rev5) Patchwork
2025-11-11  1:14 ` ✓ CI.KUnit: success " Patchwork
2025-11-11  1:52 ` ✓ Xe.CI.BAT: " Patchwork
2025-11-11 11:41 ` ✗ Xe.CI.Full: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ced3b341-cecc-45e6-bed1-04f5dfdc93d8@intel.com \
    --to=michal.wajdeczko@intel.com \
    --cc=airlied@gmail.com \
    --cc=alex@shazbot.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hch@infradead.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=jgg@ziepe.ca \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lucas.demarchi@intel.com \
    --cc=lukasz.laguna@intel.com \
    --cc=matthew.brost@intel.com \
    --cc=michal.winiarski@intel.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=simona@ffwll.ch \
    --cc=skolothumtho@nvidia.com \
    --cc=thomas.hellstrom@linux.intel.com \
    --cc=tursulin@ursulin.net \
    --cc=yishaih@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.