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:22:39 (GMT) |
commit | 601519a03aa9cbfacedea41d595e1ecb239430e4 (patch) | |
tree | 0a620ddfc5d4f6698f8f825697be12ff0f1eaace /drivers/staging/fsl_qbman | |
parent | f52fab168c81e21a1cf50e3bc5e601685e70d12b (diff) | |
download | linux-fsl-qoriq-601519a03aa9cbfacedea41d595e1ecb239430e4.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/fsl_qbman')
-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 eaa2e39..0b35180 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) |