From df74252fe0d8eb9dc9be1c7e3ef8b1c27e111fe8 Mon Sep 17 00:00:00 2001 From: Bogdan Hamciuc Date: Fri, 21 Jun 2013 17:45:27 +0300 Subject: fsl_qman: Fix flipping of CSCI interrupt bit Commit 88d4c504 "fsl_qman: implement CEETM CCSCI and update some ccg APIs" inadvertently flips the QM_PIRQ_CSCI bit, reactivating a bug which allowed congestion state to become irreversible because of a missed interrupt. Clearing the CSCI bit puts the system back on track. Signed-off-by: Bogdan Hamciuc Change-Id: I18ffa06a694911567a7a690c7a7aa1e7b4cd85b9 Reviewed-on: http://git.am.freescale.net:8181/3031 Tested-by: Review Code-CDREVIEW Reviewed-by: Wang Haiying-R54964 Reviewed-by: Ladouceur Jeffrey-R11498 Reviewed-by: Thorpe Geoff-R01361 Reviewed-by: Fleming Andrew-AFLEMING diff --git a/drivers/staging/fsl_qbman/qman_high.c b/drivers/staging/fsl_qbman/qman_high.c index c2f734e..5fcd709 100644 --- a/drivers/staging/fsl_qbman/qman_high.c +++ b/drivers/staging/fsl_qbman/qman_high.c @@ -302,8 +302,8 @@ static irqreturn_t portal_isr(__always_unused int irq, void *ptr) * as part of the handling of this interrupt source. We mustn't * clear it a second time in this top-level function. */ - u32 clear = QM_DQAVAIL_MASK | (p->irq_sources & ~QM_PIRQ_CSCI) | - (p->irq_sources & ~QM_PIRQ_CCSCI); + u32 clear = QM_DQAVAIL_MASK | (p->irq_sources & + ~(QM_PIRQ_CSCI | QM_PIRQ_CCSCI)); u32 is = qm_isr_status_read(&p->p) & p->irq_sources; /* DQRR-handling if it's interrupt-driven */ if (is & QM_PIRQ_DQRI) -- cgit v0.10.2