From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10F1EC433F5 for ; Mon, 10 Jan 2022 01:50:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237981AbiAJBue (ORCPT ); Sun, 9 Jan 2022 20:50:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237987AbiAJBud (ORCPT ); Sun, 9 Jan 2022 20:50:33 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96FA4C06173F for ; Sun, 9 Jan 2022 17:50:32 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 62616B8107B for ; Mon, 10 Jan 2022 01:50:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A1933C36AE3; Mon, 10 Jan 2022 01:50:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1641779430; bh=MKqNKxvNTCA8XCEb+Ovg5zwNUI0UU8J1M2c+3ktk92I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aoJU1OLDCSWKx/h7PhfJIDlmd02R/PyqXNztYQtj+SyEHfiP6EnzuITl1YrRivFPi Ucuh5+ZEQkyQeJlVTTENkZwFX8Gzni8bNJKEvocwXsdjdM1gn8mhHeeSO1cn9PS+wr qws+9vEgJR+SYrmNc79606ykrSRnLfxvkuw7jRZ51ebwv+9ChSY+2vJ/DtjMilVjVB 8woJZ3KtZDZHgpaR/BxAhfMGfyHB2ZvtlTi8fIZVTB+dwztmLPy4j7dDhX8Oil95xA BzChKgceSUxEj8xLeJPmCn9RKEbAOhMhg+zdwuIpU3uQ+iF77VyW+YCkbK/VEXdVtq NGmKgiV838aGg== From: =?UTF-8?q?Marek=20Beh=C3=BAn?= To: Marc Zyngier , Lorenzo Pieralisi , Bjorn Helgaas Cc: pali@kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, =?UTF-8?q?Marek=20Beh=C3=BAn?= Subject: [PATCH v2 03/23] PCI: aardvark: Fix support for MSI interrupts Date: Mon, 10 Jan 2022 02:49:58 +0100 Message-Id: <20220110015018.26359-4-kabel@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220110015018.26359-1-kabel@kernel.org> References: <20220110015018.26359-1-kabel@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Pali Rohár Aardvark hardware supports Multi-MSI and MSI_FLAG_MULTI_PCI_MSI is already set for the MSI chip. But when allocating MSI interrupt numbers for Multi-MSI, the numbers need to be properly aligned, otherwise endpoint devices send MSI interrupt with incorrect numbers. Fix this issue by using function bitmap_find_free_region() instead of bitmap_find_next_zero_area(). To ensure that aligned MSI interrupt numbers are used by endpoint devices, we cannot use Linux virtual irq numbers (as they are random and not properly aligned). Instead we need to use the aligned hwirq numbers. This change fixes receiving MSI interrupts on Armada 3720 boards and allows using NVMe disks which use Multi-MSI feature with 3 interrupts. Without this NVMe disks freeze booting as linux nvme-core.c is waiting 60s for an interrupt. Signed-off-by: Pali Rohár Signed-off-by: Marek Behún --- drivers/pci/controller/pci-aardvark.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index fd95ad64c887..346d38835539 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -1189,7 +1189,7 @@ static void advk_msi_irq_compose_msi_msg(struct irq_data *data, msg->address_lo = lower_32_bits(msi_msg); msg->address_hi = upper_32_bits(msi_msg); - msg->data = data->irq; + msg->data = data->hwirq; } static int advk_msi_set_affinity(struct irq_data *irq_data, @@ -1206,15 +1206,11 @@ static int advk_msi_irq_domain_alloc(struct irq_domain *domain, int hwirq, i; mutex_lock(&pcie->msi_used_lock); - hwirq = bitmap_find_next_zero_area(pcie->msi_used, MSI_IRQ_NUM, - 0, nr_irqs, 0); - if (hwirq >= MSI_IRQ_NUM) { - mutex_unlock(&pcie->msi_used_lock); - return -ENOSPC; - } - - bitmap_set(pcie->msi_used, hwirq, nr_irqs); + hwirq = bitmap_find_free_region(pcie->msi_used, MSI_IRQ_NUM, + order_base_2(nr_irqs)); mutex_unlock(&pcie->msi_used_lock); + if (hwirq < 0) + return -ENOSPC; for (i = 0; i < nr_irqs; i++) irq_domain_set_info(domain, virq + i, hwirq + i, @@ -1232,7 +1228,7 @@ static void advk_msi_irq_domain_free(struct irq_domain *domain, struct advk_pcie *pcie = domain->host_data; mutex_lock(&pcie->msi_used_lock); - bitmap_clear(pcie->msi_used, d->hwirq, nr_irqs); + bitmap_release_region(pcie->msi_used, d->hwirq, order_base_2(nr_irqs)); mutex_unlock(&pcie->msi_used_lock); } -- 2.34.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 20911C4332F for ; Mon, 10 Jan 2022 01:52:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=uJx+gLWXG0b/snyKDY+/B87DN527mDU4t8c9eIoS8Sw=; b=AUdwYgI1mG3BPM NDtVyvQhIOokbSfuwOAzWQvFK4c/1OKnrdege2sb5efiTH0ZWdFtTNuP1l1Nb56EwJN6J5UwBKNxx JdtmU56LSVOlTf0PPFlYOultI1PzKPwvJMj7V/Hg7cOLdmt/uyDabFOkVtwOp6ztqpgd7/nTt6nwx WEHlgmYqKNnBqzGcPg1vWDmq8fIxIlVUwhuvFJhF/FFPZwGje2r9LMOyB7skKkebrJNViMtOhVIp3 YCu4LtvzugsAdrMoAWkNF0iRpZFnKaMWDMMHthNRO1K1YM8EBHqoATDHgGrZA7Q0OKMZ7t2rsPrEV qDrdMTV25uRKgJZYbLow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n6jph-008liI-Tu; Mon, 10 Jan 2022 01:50:50 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n6jpO-008laO-VI for linux-arm-kernel@lists.infradead.org; Mon, 10 Jan 2022 01:50:32 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 7106A60F79; Mon, 10 Jan 2022 01:50:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A1933C36AE3; Mon, 10 Jan 2022 01:50:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1641779430; bh=MKqNKxvNTCA8XCEb+Ovg5zwNUI0UU8J1M2c+3ktk92I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aoJU1OLDCSWKx/h7PhfJIDlmd02R/PyqXNztYQtj+SyEHfiP6EnzuITl1YrRivFPi Ucuh5+ZEQkyQeJlVTTENkZwFX8Gzni8bNJKEvocwXsdjdM1gn8mhHeeSO1cn9PS+wr qws+9vEgJR+SYrmNc79606ykrSRnLfxvkuw7jRZ51ebwv+9ChSY+2vJ/DtjMilVjVB 8woJZ3KtZDZHgpaR/BxAhfMGfyHB2ZvtlTi8fIZVTB+dwztmLPy4j7dDhX8Oil95xA BzChKgceSUxEj8xLeJPmCn9RKEbAOhMhg+zdwuIpU3uQ+iF77VyW+YCkbK/VEXdVtq NGmKgiV838aGg== From: =?UTF-8?q?Marek=20Beh=C3=BAn?= To: Marc Zyngier , Lorenzo Pieralisi , Bjorn Helgaas Cc: pali@kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, =?UTF-8?q?Marek=20Beh=C3=BAn?= Subject: [PATCH v2 03/23] PCI: aardvark: Fix support for MSI interrupts Date: Mon, 10 Jan 2022 02:49:58 +0100 Message-Id: <20220110015018.26359-4-kabel@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220110015018.26359-1-kabel@kernel.org> References: <20220110015018.26359-1-kabel@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220109_175031_117251_A70199FB X-CRM114-Status: GOOD ( 17.00 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KCkFhcmR2YXJrIGhhcmR3YXJlIHN1 cHBvcnRzIE11bHRpLU1TSSBhbmQgTVNJX0ZMQUdfTVVMVElfUENJX01TSSBpcyBhbHJlYWR5CnNl dCBmb3IgdGhlIE1TSSBjaGlwLiBCdXQgd2hlbiBhbGxvY2F0aW5nIE1TSSBpbnRlcnJ1cHQgbnVt YmVycyBmb3IKTXVsdGktTVNJLCB0aGUgbnVtYmVycyBuZWVkIHRvIGJlIHByb3Blcmx5IGFsaWdu ZWQsIG90aGVyd2lzZSBlbmRwb2ludApkZXZpY2VzIHNlbmQgTVNJIGludGVycnVwdCB3aXRoIGlu Y29ycmVjdCBudW1iZXJzLgoKRml4IHRoaXMgaXNzdWUgYnkgdXNpbmcgZnVuY3Rpb24gYml0bWFw X2ZpbmRfZnJlZV9yZWdpb24oKSBpbnN0ZWFkIG9mCmJpdG1hcF9maW5kX25leHRfemVyb19hcmVh KCkuCgpUbyBlbnN1cmUgdGhhdCBhbGlnbmVkIE1TSSBpbnRlcnJ1cHQgbnVtYmVycyBhcmUgdXNl ZCBieSBlbmRwb2ludCBkZXZpY2VzLAp3ZSBjYW5ub3QgdXNlIExpbnV4IHZpcnR1YWwgaXJxIG51 bWJlcnMgKGFzIHRoZXkgYXJlIHJhbmRvbSBhbmQgbm90CnByb3Blcmx5IGFsaWduZWQpLiBJbnN0 ZWFkIHdlIG5lZWQgdG8gdXNlIHRoZSBhbGlnbmVkIGh3aXJxIG51bWJlcnMuCgpUaGlzIGNoYW5n ZSBmaXhlcyByZWNlaXZpbmcgTVNJIGludGVycnVwdHMgb24gQXJtYWRhIDM3MjAgYm9hcmRzIGFu ZAphbGxvd3MgdXNpbmcgTlZNZSBkaXNrcyB3aGljaCB1c2UgTXVsdGktTVNJIGZlYXR1cmUgd2l0 aCAzIGludGVycnVwdHMuCgpXaXRob3V0IHRoaXMgTlZNZSBkaXNrcyBmcmVlemUgYm9vdGluZyBh cyBsaW51eCBudm1lLWNvcmUuYyBpcyB3YWl0aW5nCjYwcyBmb3IgYW4gaW50ZXJydXB0LgoKU2ln bmVkLW9mZi1ieTogUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTog TWFyZWsgQmVow7puIDxrYWJlbEBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvcGNpLWFhcmR2YXJrLmMgfCAxNiArKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL3BjaS1hYXJkdmFyay5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kt YWFyZHZhcmsuYwppbmRleCBmZDk1YWQ2NGM4ODcuLjM0NmQzODgzNTUzOSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktYWFyZHZhcmsuYworKysgYi9kcml2ZXJzL3BjaS9j b250cm9sbGVyL3BjaS1hYXJkdmFyay5jCkBAIC0xMTg5LDcgKzExODksNyBAQCBzdGF0aWMgdm9p ZCBhZHZrX21zaV9pcnFfY29tcG9zZV9tc2lfbXNnKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSwKIAog CW1zZy0+YWRkcmVzc19sbyA9IGxvd2VyXzMyX2JpdHMobXNpX21zZyk7CiAJbXNnLT5hZGRyZXNz X2hpID0gdXBwZXJfMzJfYml0cyhtc2lfbXNnKTsKLQltc2ctPmRhdGEgPSBkYXRhLT5pcnE7CisJ bXNnLT5kYXRhID0gZGF0YS0+aHdpcnE7CiB9CiAKIHN0YXRpYyBpbnQgYWR2a19tc2lfc2V0X2Fm ZmluaXR5KHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEsCkBAIC0xMjA2LDE1ICsxMjA2LDExIEBA IHN0YXRpYyBpbnQgYWR2a19tc2lfaXJxX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAq ZG9tYWluLAogCWludCBod2lycSwgaTsKIAogCW11dGV4X2xvY2soJnBjaWUtPm1zaV91c2VkX2xv Y2spOwotCWh3aXJxID0gYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWEocGNpZS0+bXNpX3VzZWQs IE1TSV9JUlFfTlVNLAotCQkJCQkgICAwLCBucl9pcnFzLCAwKTsKLQlpZiAoaHdpcnEgPj0gTVNJ X0lSUV9OVU0pIHsKLQkJbXV0ZXhfdW5sb2NrKCZwY2llLT5tc2lfdXNlZF9sb2NrKTsKLQkJcmV0 dXJuIC1FTk9TUEM7Ci0JfQotCi0JYml0bWFwX3NldChwY2llLT5tc2lfdXNlZCwgaHdpcnEsIG5y X2lycXMpOworCWh3aXJxID0gYml0bWFwX2ZpbmRfZnJlZV9yZWdpb24ocGNpZS0+bXNpX3VzZWQs IE1TSV9JUlFfTlVNLAorCQkJCQlvcmRlcl9iYXNlXzIobnJfaXJxcykpOwogCW11dGV4X3VubG9j aygmcGNpZS0+bXNpX3VzZWRfbG9jayk7CisJaWYgKGh3aXJxIDwgMCkKKwkJcmV0dXJuIC1FTk9T UEM7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnJfaXJxczsgaSsrKQogCQlpcnFfZG9tYWluX3NldF9p bmZvKGRvbWFpbiwgdmlycSArIGksIGh3aXJxICsgaSwKQEAgLTEyMzIsNyArMTIyOCw3IEBAIHN0 YXRpYyB2b2lkIGFkdmtfbXNpX2lycV9kb21haW5fZnJlZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9t YWluLAogCXN0cnVjdCBhZHZrX3BjaWUgKnBjaWUgPSBkb21haW4tPmhvc3RfZGF0YTsKIAogCW11 dGV4X2xvY2soJnBjaWUtPm1zaV91c2VkX2xvY2spOwotCWJpdG1hcF9jbGVhcihwY2llLT5tc2lf dXNlZCwgZC0+aHdpcnEsIG5yX2lycXMpOworCWJpdG1hcF9yZWxlYXNlX3JlZ2lvbihwY2llLT5t c2lfdXNlZCwgZC0+aHdpcnEsIG9yZGVyX2Jhc2VfMihucl9pcnFzKSk7CiAJbXV0ZXhfdW5sb2Nr KCZwY2llLT5tc2lfdXNlZF9sb2NrKTsKIH0KIAotLSAKMi4zNC4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=