diff options
author | 2023-12-18 17:53:43 +0100 | |
---|---|---|
committer | 2023-12-21 16:31:29 -0500 | |
commit | aef4eb7c7dec62f8b289651540fcc851257b1a16 (patch) | |
tree | 12e28990483964fea44368efd9c6ef7292bb911e | |
parent | drm/xe/vf: Update LRC with memory based interrupts data (diff) | |
download | linux-aef4eb7c7dec62f8b289651540fcc851257b1a16.tar.gz linux-aef4eb7c7dec62f8b289651540fcc851257b1a16.tar.bz2 linux-aef4eb7c7dec62f8b289651540fcc851257b1a16.zip |
drm/xe/vf: Setup memory based interrupts in GuC
When Memory Based Interrupts are used, the VF driver must provide
to the GuC references to the Source and Status Report Pages.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20231214185955.1791-10-michal.wajdeczko@intel.com
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
-rw-r--r-- | drivers/gpu/drm/xe/xe_guc.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c index 76b31d542e1a..811e8b201270 100644 --- a/drivers/gpu/drm/xe/xe_guc.c +++ b/drivers/gpu/drm/xe/xe_guc.c @@ -22,8 +22,10 @@ #include "xe_guc_log.h" #include "xe_guc_pc.h" #include "xe_guc_submit.h" +#include "xe_memirq.h" #include "xe_mmio.h" #include "xe_platform_types.h" +#include "xe_sriov.h" #include "xe_uc.h" #include "xe_uc_fw.h" #include "xe_wa.h" @@ -568,10 +570,20 @@ static void guc_enable_irq(struct xe_guc *guc) int xe_guc_enable_communication(struct xe_guc *guc) { + struct xe_device *xe = guc_to_xe(guc); int err; guc_enable_irq(guc); + if (IS_SRIOV_VF(xe) && xe_device_has_memirq(xe)) { + struct xe_gt *gt = guc_to_gt(guc); + struct xe_tile *tile = gt_to_tile(gt); + + err = xe_memirq_init_guc(&tile->sriov.vf.memirq, guc); + if (err) + return err; + } + xe_mmio_rmw32(guc_to_gt(guc), PMINTRMSK, ARAT_EXPIRED_INTRMSK, 0); |