diff options
author | Bogdan Hamciuc <bogdan.hamciuc@freescale.com> | 2013-06-21 14:45:27 (GMT) |
---|---|---|
committer | J. German Rivera <German.Rivera@freescale.com> | 2013-09-10 19:48:46 (GMT) |
commit | 8d148633d8dccd7b5730e15f66d928c4dc1eafd5 (patch) | |
tree | 3bf96e84788e17e0209ef0ef95673a0c5b9fd483 /drivers/staging | |
parent | db651a6e8e0df939cb977a8799816c04b07506c3 (diff) | |
download | linux-fsl-qoriq-8d148633d8dccd7b5730e15f66d928c4dc1eafd5.tar.xz |
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 <bogdan.hamciuc@freescale.com>
Change-Id: I18ffa06a694911567a7a690c7a7aa1e7b4cd85b9
Reviewed-on: http://git.am.freescale.net:8181/3031
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Wang Haiying-R54964 <Haiying.Wang@freescale.com>
Reviewed-by: Ladouceur Jeffrey-R11498 <Jeffrey.Ladouceur@freescale.com>
Reviewed-by: Thorpe Geoff-R01361 <Geoff.Thorpe@freescale.com>
Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/fsl_qbman/qman_high.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/staging/fsl_qbman/qman_high.c b/drivers/staging/fsl_qbman/qman_high.c index c8451f1..dbd4c8b 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) |