linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luo Jiaxing <luojiaxing@huawei.com>
To: <maz@kernel.org>
Cc: <linux-kernel@vger.kernel.org>, <linux-pci@vger.kernel.org>,
	<linuxarm@openeuler.org>
Subject: [PATCH v1 1/2] irqchip/gic-v3-its: don't set bitmap for LPI which user didn't allocate
Date: Mon, 8 Feb 2021 18:58:45 +0800	[thread overview]
Message-ID: <1612781926-56206-2-git-send-email-luojiaxing@huawei.com> (raw)
In-Reply-To: <1612781926-56206-1-git-send-email-luojiaxing@huawei.com>

The driver sets the LPI bitmap of device based on get_count_order(nvecs).
This means that when the number of LPI interrupts does not meet the power
of two, redundant bits are set in the LPI bitmap. However, when free
interrupt, these redundant bits is not cleared. As a result, device will
fails to allocate the same numbers of interrupts next time.

Therefore, clear the redundant bits set in LPI bitmap.

Fixes: 4615fbc3788d ("genirq/irqdomain: Don't try to free an interrupt that has no mapping")

Signed-off-by: Luo Jiaxing <luojiaxing@huawei.com>
---
 drivers/irqchip/irq-gic-v3-its.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index ed46e60..027f7ef 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -3435,6 +3435,10 @@ static int its_alloc_device_irq(struct its_device *dev, int nvecs, irq_hw_number
 
 	*hwirq = dev->event_map.lpi_base + idx;
 
+	bitmap_clear(dev->event_map.lpi_map,
+		     idx + nvecs,
+		     roundup_pow_of_two(nvecs) - nvecs);
+
 	return 0;
 }
 
-- 
2.7.4


  reply	other threads:[~2021-02-08 11:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-08 10:58 [PATCH v1 0/2] irqchip/gic-v3-its: don't set bitmap for LPI which user didn't allocate Luo Jiaxing
2021-02-08 10:58 ` Luo Jiaxing [this message]
2021-02-08 11:59   ` [PATCH v1 1/2] " Marc Zyngier
2021-02-09  7:25     ` luojiaxing
2021-02-08 10:58 ` [PATCH v1 2/2] genirq/msi: add an error print when __irq_domain_alloc_irqs() failed Luo Jiaxing
2021-02-08 11:14 ` [Linuxarm] [PATCH v1 0/2] irqchip/gic-v3-its: don't set bitmap for LPI which user didn't allocate John Garry

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1612781926-56206-2-git-send-email-luojiaxing@huawei.com \
    --to=luojiaxing@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxarm@openeuler.org \
    --cc=maz@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).