Unverified Commit bf3e571c authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!8060 soc: fsl: qbman: Always disable interrupts when taking cgr_lock

parents b423bf8d 8db02e49
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1456,11 +1456,11 @@ static void qm_congestion_task(struct work_struct *work)
	union qm_mc_result *mcr;
	struct qman_cgr *cgr;

	spin_lock(&p->cgr_lock);
	spin_lock_irq(&p->cgr_lock);
	qm_mc_start(&p->p);
	qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCONGESTION);
	if (!qm_mc_result_timeout(&p->p, &mcr)) {
		spin_unlock(&p->cgr_lock);
		spin_unlock_irq(&p->cgr_lock);
		dev_crit(p->config->dev, "QUERYCONGESTION timeout\n");
		qman_p_irqsource_add(p, QM_PIRQ_CSCI);
		return;
@@ -1476,7 +1476,7 @@ static void qm_congestion_task(struct work_struct *work)
	list_for_each_entry(cgr, &p->cgr_cbs, node)
		if (cgr->cb && qman_cgrs_get(&c, cgr->cgrid))
			cgr->cb(p, cgr, qman_cgrs_get(&rr, cgr->cgrid));
	spin_unlock(&p->cgr_lock);
	spin_unlock_irq(&p->cgr_lock);
	qman_p_irqsource_add(p, QM_PIRQ_CSCI);
}

@@ -2440,7 +2440,7 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags,
	preempt_enable();

	cgr->chan = p->config->channel;
	spin_lock(&p->cgr_lock);
	spin_lock_irq(&p->cgr_lock);

	if (opts) {
		struct qm_mcc_initcgr local_opts = *opts;
@@ -2477,7 +2477,7 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags,
	    qman_cgrs_get(&p->cgrs[1], cgr->cgrid))
		cgr->cb(p, cgr, 1);
out:
	spin_unlock(&p->cgr_lock);
	spin_unlock_irq(&p->cgr_lock);
	put_affine_portal();
	return ret;
}