Skip to content

Commit 5b38c22

Browse files
nayanavenkataramanaLucas De Marchi
authored andcommitted
drm/xe/irq: Handle msix vector0 interrupt
Current gu2host handler registered as MSI-X vector 0 and as per bspec for a msix vector 0 interrupt, the driver must check the legacy registers 190008(TILE_INT_REG), 190060h (GT INTR Identity Reg 0) and other registers mentioned in "Interrupt Service Routine Pseudocode" otherwise it will block the next interrupts. To overcome this issue replacing guc2host handler with legacy xe_irq_handler. Fixes: da88907 ("drm/xe/irq: Separate MSI and MSI-X flows") Bspec: 62357 Signed-off-by: Venkata Ramana Nayana <venkata.ramana.nayana@intel.com> Reviewed-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com> Link: https://patch.msgid.link/20251107083141.2080189-1-venkata.ramana.nayana@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com> (cherry picked from commit c34a14b) Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
1 parent 27c0a54 commit 5b38c22

1 file changed

Lines changed: 1 addition & 17 deletions

File tree

drivers/gpu/drm/xe/xe_irq.c

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -847,22 +847,6 @@ static int xe_irq_msix_init(struct xe_device *xe)
847847
return 0;
848848
}
849849

850-
static irqreturn_t guc2host_irq_handler(int irq, void *arg)
851-
{
852-
struct xe_device *xe = arg;
853-
struct xe_tile *tile;
854-
u8 id;
855-
856-
if (!atomic_read(&xe->irq.enabled))
857-
return IRQ_NONE;
858-
859-
for_each_tile(tile, xe, id)
860-
xe_guc_irq_handler(&tile->primary_gt->uc.guc,
861-
GUC_INTR_GUC2HOST);
862-
863-
return IRQ_HANDLED;
864-
}
865-
866850
static irqreturn_t xe_irq_msix_default_hwe_handler(int irq, void *arg)
867851
{
868852
unsigned int tile_id, gt_id;
@@ -979,7 +963,7 @@ int xe_irq_msix_request_irqs(struct xe_device *xe)
979963
u16 msix;
980964

981965
msix = GUC2HOST_MSIX;
982-
err = xe_irq_msix_request_irq(xe, guc2host_irq_handler, xe,
966+
err = xe_irq_msix_request_irq(xe, xe_irq_handler(xe), xe,
983967
DRIVER_NAME "-guc2host", false, &msix);
984968
if (err)
985969
return err;

0 commit comments

Comments
 (0)