msm: kgsl: Fix message handling in hwsched hfi interrupt handler

Do not process HFI messages on the message queue in the interrupt
handler before interrupts are enabled on that queue. Otherwise, the
interrupt handler will read it off the queue, and then the inline
handler will not find any messages on the queue.

Change-Id: I569f29250c27a1a74e206489ad8234b2be39d448
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
This commit is contained in:
Sushmita Susheelendra 2020-09-15 22:38:14 -06:00
commit 4381c3443b

View file

@ -234,6 +234,14 @@ static irqreturn_t a6xx_hwsched_hfi_handler(int irq, void *data)
gmu_core_regread(device, A6XX_GMU_GMU2HOST_INTR_INFO, &status);
gmu_core_regwrite(device, A6XX_GMU_GMU2HOST_INTR_CLR, hfi->irq_mask);
/*
* If interrupts are not enabled on the HFI message queue,
* the inline message processing loop will process it,
* else, process it here.
*/
if (!(hfi->irq_mask & HFI_IRQ_MSGQ_MASK))
status &= ~HFI_IRQ_MSGQ_MASK;
if (status & HFI_IRQ_MSGQ_MASK)
process_msgq_irq(adreno_dev);
if (status & HFI_IRQ_DBGQ_MASK)