All of lore.kernel.org
 help / color / mirror / Atom feed
From: Raag Jadav <raag.jadav@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: matthew.brost@intel.com, rodrigo.vivi@intel.com,
	thomas.hellstrom@linux.intel.com, riana.tauro@intel.com,
	michal.wajdeczko@intel.com, matthew.d.roper@intel.com,
	michal.winiarski@intel.com, matthew.auld@intel.com,
	dev@lankhorst.se, jani.nikula@intel.com, lukasz.laguna@intel.com,
	zhanjun.dong@intel.com, lukas@wunner.de,
	daniele.ceraolospurio@intel.com, badal.nilawar@intel.com,
	Raag Jadav <raag.jadav@intel.com>
Subject: [PATCH v7 0/8] Introduce Xe PCIe FLR
Date: Sat, 16 May 2026 15:01:23 +0530	[thread overview]
Message-ID: <20260516093131.27442-1-raag.jadav@intel.com> (raw)

Here's my humble attempt at introducing PCIe Function Level Reset (FLR)
support in xe driver. This is ofcourse a half baked implementation and
only limited to re-initializing GT. This needs to be extended for a lot
of components which are expected to be added as a follow up.

Detailed description in commit message and documentation.

PS: All xe_exec_basic tests and clpeak run smoothly after FLR. Give it
a spin and let me know if any regressions.

Trigger it with:

$ echo 1 > /sys/bus/pci/devices/<BDF>/reset

v2: Re-initialize migrate context (Matthew Brost)
    Add kernel doc (Matthew Brost)
    Spell out Function Level Reset (Jani)

v3: Cancel in-flight jobs before FLR

v4: Teardown exec queues instead of mangling scheduler pending list (Matthew Brost)

v5: Re-initialize kernel queues through submission backend (Matthew Brost)
    Prevent PM ref leak for wedged device (Matthew Brost)

v6: Skip uC firmware selection during re-initialization (Daniele)
    Add IS_DGFX() and EXEC_QUEUE_FLAG_KERNEL asserts (Daniele)
    s/flr_done/reinit (Daniele)
    Repurpose system suspend/resume helpers for FLR (Daniele)
    Add PCIe FLR documentation (Daniele)

v7: Refine PCIe FLR documentation (Daniele)
    Introduce xe_pci_reset_skip() helper (Lukasz)

Raag Jadav (8):
  drm/xe/uc_fw: Allow re-initializing firmware
  drm/xe/guc_submit: Introduce guc_exec_queue_reinit()
  drm/xe/gt: Introduce FLR helpers
  drm/xe/bo_evict: Introduce xe_bo_restore_map()
  drm/xe/exec_queue: Introduce xe_exec_queue_reinit()
  drm/xe/migrate: Introduce xe_migrate_reinit()
  drm/xe/pm: Introduce xe_device_suspend/resume()
  drm/xe/pci: Introduce PCIe FLR

 drivers/gpu/drm/xe/Makefile              |   1 +
 drivers/gpu/drm/xe/xe_bo_evict.c         |  51 ++++++--
 drivers/gpu/drm/xe/xe_bo_evict.h         |   2 +
 drivers/gpu/drm/xe/xe_device.c           | 150 +++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_device.h           |   2 +
 drivers/gpu/drm/xe/xe_device_types.h     |   3 +
 drivers/gpu/drm/xe/xe_exec_queue.c       |  42 ++++++-
 drivers/gpu/drm/xe/xe_exec_queue.h       |   1 +
 drivers/gpu/drm/xe/xe_exec_queue_types.h |   2 +
 drivers/gpu/drm/xe/xe_execlist.c         |   6 +
 drivers/gpu/drm/xe/xe_gpu_scheduler.h    |   5 +
 drivers/gpu/drm/xe/xe_gsc.c              |  14 +++
 drivers/gpu/drm/xe/xe_gsc.h              |   1 +
 drivers/gpu/drm/xe/xe_gt.c               |  33 +++++
 drivers/gpu/drm/xe/xe_gt.h               |   2 +
 drivers/gpu/drm/xe/xe_guc.c              |  29 +++++
 drivers/gpu/drm/xe/xe_guc.h              |   2 +
 drivers/gpu/drm/xe/xe_guc_submit.c       |  13 ++
 drivers/gpu/drm/xe/xe_huc.c              |  14 +++
 drivers/gpu/drm/xe/xe_huc.h              |   1 +
 drivers/gpu/drm/xe/xe_lrc.c              |  17 +++
 drivers/gpu/drm/xe/xe_lrc.h              |   2 +
 drivers/gpu/drm/xe/xe_migrate.c          |  12 ++
 drivers/gpu/drm/xe/xe_migrate.h          |   1 +
 drivers/gpu/drm/xe/xe_pci.c              |   1 +
 drivers/gpu/drm/xe/xe_pci.h              |   2 +
 drivers/gpu/drm/xe/xe_pci_error.c        | 121 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_pm.c               | 103 ++--------------
 drivers/gpu/drm/xe/xe_uc.c               |  72 +++++++++++
 drivers/gpu/drm/xe/xe_uc.h               |   2 +
 drivers/gpu/drm/xe/xe_uc_fw.c            |  56 +++++++++
 drivers/gpu/drm/xe/xe_uc_fw.h            |   1 +
 drivers/gpu/drm/xe/xe_uc_types.h         |  14 +++
 33 files changed, 671 insertions(+), 107 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_pci_error.c

-- 
2.43.0


             reply	other threads:[~2026-05-16  9:35 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-16  9:31 Raag Jadav [this message]
2026-05-16  9:31 ` [PATCH v7 1/8] drm/xe/uc_fw: Allow re-initializing firmware Raag Jadav
2026-05-16  9:31 ` [PATCH v7 2/8] drm/xe/guc_submit: Introduce guc_exec_queue_reinit() Raag Jadav
2026-05-16  9:31 ` [PATCH v7 3/8] drm/xe/gt: Introduce FLR helpers Raag Jadav
2026-05-16  9:31 ` [PATCH v7 4/8] drm/xe/bo_evict: Introduce xe_bo_restore_map() Raag Jadav
2026-05-16  9:31 ` [PATCH v7 5/8] drm/xe/exec_queue: Introduce xe_exec_queue_reinit() Raag Jadav
2026-05-16  9:31 ` [PATCH v7 6/8] drm/xe/migrate: Introduce xe_migrate_reinit() Raag Jadav
2026-05-16  9:31 ` [PATCH v7 7/8] drm/xe/pm: Introduce xe_device_suspend/resume() Raag Jadav
2026-05-16  9:31 ` [PATCH v7 8/8] drm/xe/pci: Introduce PCIe FLR Raag Jadav
2026-05-16  9:41 ` ✗ CI.checkpatch: warning for Introduce Xe PCIe FLR (rev7) Patchwork
2026-05-16  9:42 ` ✓ CI.KUnit: success " Patchwork
2026-05-16 10:35 ` ✓ Xe.CI.BAT: " 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=20260516093131.27442-1-raag.jadav@intel.com \
    --to=raag.jadav@intel.com \
    --cc=badal.nilawar@intel.com \
    --cc=daniele.ceraolospurio@intel.com \
    --cc=dev@lankhorst.se \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=lukas@wunner.de \
    --cc=lukasz.laguna@intel.com \
    --cc=matthew.auld@intel.com \
    --cc=matthew.brost@intel.com \
    --cc=matthew.d.roper@intel.com \
    --cc=michal.wajdeczko@intel.com \
    --cc=michal.winiarski@intel.com \
    --cc=riana.tauro@intel.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=thomas.hellstrom@linux.intel.com \
    --cc=zhanjun.dong@intel.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.