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 B8253C4332F for ; Fri, 1 Apr 2022 14:54:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349093AbiDAO4m (ORCPT ); Fri, 1 Apr 2022 10:56:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348436AbiDAOnR (ORCPT ); Fri, 1 Apr 2022 10:43:17 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6FEC4295275; Fri, 1 Apr 2022 07:34:51 -0700 (PDT) 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 9AD95B824D5; Fri, 1 Apr 2022 14:34:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 17E45C340EE; Fri, 1 Apr 2022 14:34:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648823686; bh=DvDLWLpok6lt21vdRgj5cJUWQCTHAuI/pyMdviZ0r0o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pKQtufzYEbqn2J89vkCixl3wHFviY54sKu61JVIoPHg2BWUMzem+YvOLnhD92Dvr6 BpVZiECMF5yNS2MobP4MtCJPsiI3Pu+t5RdOLcKvXTmaECD2TJj9hMdXnO3MGy4mEU 8xyCE8DmRFGTdDq/dXZAmdwBpWQ2+CtS45lUx/pOBdo4VEHQJMwUewGgzVmTA/Nyas 7NuDuQSqu3uv/98ea/+1h4Ks4hWCUiQgQ2AqPpk7rh2eN8NF2GQBNdWQBgoc4G1Fxh DLDLUiSNgTSbop6YRZaLgXam6X344iDJwYwFVYBS9KYGbbSHVuHF5oOzelbLa39KYT hGfKdYmGHoU0w== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: =?UTF-8?q?Pali=20Roh=C3=A1r?= , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lorenzo Pieralisi , Sasha Levin , thomas.petazzoni@bootlin.com, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 5.16 039/109] PCI: aardvark: Fix support for MSI interrupts Date: Fri, 1 Apr 2022 10:31:46 -0400 Message-Id: <20220401143256.1950537-39-sashal@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220401143256.1950537-1-sashal@kernel.org> References: <20220401143256.1950537-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Pali Rohár [ Upstream commit b0b0b8b897f8e12b2368e868bd7cdc5742d5c5a9 ] 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. Link: https://lore.kernel.org/r/20220110015018.26359-4-kabel@kernel.org Signed-off-by: Pali Rohár Signed-off-by: Marek Behún Signed-off-by: Lorenzo Pieralisi Signed-off-by: Sasha Levin --- 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 b2217e2b3efd..e97fd1cb00fc 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -1177,7 +1177,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, @@ -1194,15 +1194,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, @@ -1220,7 +1216,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 8C241C433EF for ; Fri, 1 Apr 2022 14:39:11 +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=4uySEKRlie1PFe0KF0mB9aKSOZf8b7ybgbYAjXrIF4o=; b=PE+84sryCxhd5D XEx5F314jjUV4BXWCsODI1ImfYPM4FtZj0AjcRCHuJajXo39hT6/10tgvmBu8h4E8+pBxzc3Zr0Pc kCmSoYimWyDg9mOOQjk3kviYK4jM8KnUiVN8FvpIqpeZy3o4F6U9TXOP7hjc+PphYuWhKZuN4+WFj 3eL51TyWRqW1kXh1QALzukPy6RjsD4F74CJCaMA+nuqYDoKgC96Hz9yMYqa7XY9Sc2n7Q9xTYhwve rK/IGXrntjhLGSWHPxd8hxBgnq2SiVEIMtJyrNPF/w1W6VVmCh8s3IkMEjebeAx59XyIf5YlqV/2x r/Mv17umDSYADZTZCcBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1naIPM-0067L3-Ub; Fri, 01 Apr 2022 14:37:49 +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 1naIMR-0065TU-Ac for linux-arm-kernel@lists.infradead.org; Fri, 01 Apr 2022 14:34:49 +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 BEEED60A67; Fri, 1 Apr 2022 14:34:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 17E45C340EE; Fri, 1 Apr 2022 14:34:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648823686; bh=DvDLWLpok6lt21vdRgj5cJUWQCTHAuI/pyMdviZ0r0o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pKQtufzYEbqn2J89vkCixl3wHFviY54sKu61JVIoPHg2BWUMzem+YvOLnhD92Dvr6 BpVZiECMF5yNS2MobP4MtCJPsiI3Pu+t5RdOLcKvXTmaECD2TJj9hMdXnO3MGy4mEU 8xyCE8DmRFGTdDq/dXZAmdwBpWQ2+CtS45lUx/pOBdo4VEHQJMwUewGgzVmTA/Nyas 7NuDuQSqu3uv/98ea/+1h4Ks4hWCUiQgQ2AqPpk7rh2eN8NF2GQBNdWQBgoc4G1Fxh DLDLUiSNgTSbop6YRZaLgXam6X344iDJwYwFVYBS9KYGbbSHVuHF5oOzelbLa39KYT hGfKdYmGHoU0w== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: =?UTF-8?q?Pali=20Roh=C3=A1r?= , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lorenzo Pieralisi , Sasha Levin , thomas.petazzoni@bootlin.com, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 5.16 039/109] PCI: aardvark: Fix support for MSI interrupts Date: Fri, 1 Apr 2022 10:31:46 -0400 Message-Id: <20220401143256.1950537-39-sashal@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220401143256.1950537-1-sashal@kernel.org> References: <20220401143256.1950537-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220401_073447_476173_65F6B272 X-CRM114-Status: GOOD ( 16.28 ) 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 RnJvbTogUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KClsgVXBzdHJlYW0gY29tbWl0IGIw YjBiOGI4OTdmOGUxMmIyMzY4ZTg2OGJkN2NkYzU3NDJkNWM1YTkgXQoKQWFyZHZhcmsgaGFyZHdh cmUgc3VwcG9ydHMgTXVsdGktTVNJIGFuZCBNU0lfRkxBR19NVUxUSV9QQ0lfTVNJIGlzIGFscmVh ZHkKc2V0IGZvciB0aGUgTVNJIGNoaXAuIEJ1dCB3aGVuIGFsbG9jYXRpbmcgTVNJIGludGVycnVw dCBudW1iZXJzIGZvcgpNdWx0aS1NU0ksIHRoZSBudW1iZXJzIG5lZWQgdG8gYmUgcHJvcGVybHkg YWxpZ25lZCwgb3RoZXJ3aXNlIGVuZHBvaW50CmRldmljZXMgc2VuZCBNU0kgaW50ZXJydXB0IHdp dGggaW5jb3JyZWN0IG51bWJlcnMuCgpGaXggdGhpcyBpc3N1ZSBieSB1c2luZyBmdW5jdGlvbiBi aXRtYXBfZmluZF9mcmVlX3JlZ2lvbigpIGluc3RlYWQgb2YKYml0bWFwX2ZpbmRfbmV4dF96ZXJv X2FyZWEoKS4KClRvIGVuc3VyZSB0aGF0IGFsaWduZWQgTVNJIGludGVycnVwdCBudW1iZXJzIGFy ZSB1c2VkIGJ5IGVuZHBvaW50IGRldmljZXMsCndlIGNhbm5vdCB1c2UgTGludXggdmlydHVhbCBp cnEgbnVtYmVycyAoYXMgdGhleSBhcmUgcmFuZG9tIGFuZCBub3QKcHJvcGVybHkgYWxpZ25lZCku IEluc3RlYWQgd2UgbmVlZCB0byB1c2UgdGhlIGFsaWduZWQgaHdpcnEgbnVtYmVycy4KClRoaXMg Y2hhbmdlIGZpeGVzIHJlY2VpdmluZyBNU0kgaW50ZXJydXB0cyBvbiBBcm1hZGEgMzcyMCBib2Fy ZHMgYW5kCmFsbG93cyB1c2luZyBOVk1lIGRpc2tzIHdoaWNoIHVzZSBNdWx0aS1NU0kgZmVhdHVy ZSB3aXRoIDMgaW50ZXJydXB0cy4KCldpdGhvdXQgdGhpcyBOVk1lIGRpc2tzIGZyZWV6ZSBib290 aW5nIGFzIGxpbnV4IG52bWUtY29yZS5jIGlzIHdhaXRpbmcKNjBzIGZvciBhbiBpbnRlcnJ1cHQu CgpMaW5rOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9yLzIwMjIwMTEwMDE1MDE4LjI2MzU5LTQt a2FiZWxAa2VybmVsLm9yZwpTaWduZWQtb2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBrZXJuZWwu b3JnPgpTaWduZWQtb2ZmLWJ5OiBNYXJlayBCZWjDum4gPGthYmVsQGtlcm5lbC5vcmc+ClNpZ25l ZC1vZmYtYnk6IExvcmVuem8gUGllcmFsaXNpIDxsb3JlbnpvLnBpZXJhbGlzaUBhcm0uY29tPgpT aWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+Ci0tLQogZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2ktYWFyZHZhcmsuYyB8IDE2ICsrKysrKy0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWFhcmR2YXJrLmMgYi9kcml2ZXJzL3BjaS9j b250cm9sbGVyL3BjaS1hYXJkdmFyay5jCmluZGV4IGIyMjE3ZTJiM2VmZC4uZTk3ZmQxY2IwMGZj IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1hYXJkdmFyay5jCisrKyBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWFhcmR2YXJrLmMKQEAgLTExNzcsNyArMTE3Nyw3 IEBAIHN0YXRpYyB2b2lkIGFkdmtfbXNpX2lycV9jb21wb3NlX21zaV9tc2coc3RydWN0IGlycV9k YXRhICpkYXRhLAogCiAJbXNnLT5hZGRyZXNzX2xvID0gbG93ZXJfMzJfYml0cyhtc2lfbXNnKTsK IAltc2ctPmFkZHJlc3NfaGkgPSB1cHBlcl8zMl9iaXRzKG1zaV9tc2cpOwotCW1zZy0+ZGF0YSA9 IGRhdGEtPmlycTsKKwltc2ctPmRhdGEgPSBkYXRhLT5od2lycTsKIH0KIAogc3RhdGljIGludCBh ZHZrX21zaV9zZXRfYWZmaW5pdHkoc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSwKQEAgLTExOTQs MTUgKzExOTQsMTEgQEAgc3RhdGljIGludCBhZHZrX21zaV9pcnFfZG9tYWluX2FsbG9jKHN0cnVj dCBpcnFfZG9tYWluICpkb21haW4sCiAJaW50IGh3aXJxLCBpOwogCiAJbXV0ZXhfbG9jaygmcGNp ZS0+bXNpX3VzZWRfbG9jayk7Ci0JaHdpcnEgPSBiaXRtYXBfZmluZF9uZXh0X3plcm9fYXJlYShw Y2llLT5tc2lfdXNlZCwgTVNJX0lSUV9OVU0sCi0JCQkJCSAgIDAsIG5yX2lycXMsIDApOwotCWlm IChod2lycSA+PSBNU0lfSVJRX05VTSkgewotCQltdXRleF91bmxvY2soJnBjaWUtPm1zaV91c2Vk X2xvY2spOwotCQlyZXR1cm4gLUVOT1NQQzsKLQl9Ci0KLQliaXRtYXBfc2V0KHBjaWUtPm1zaV91 c2VkLCBod2lycSwgbnJfaXJxcyk7CisJaHdpcnEgPSBiaXRtYXBfZmluZF9mcmVlX3JlZ2lvbihw Y2llLT5tc2lfdXNlZCwgTVNJX0lSUV9OVU0sCisJCQkJCW9yZGVyX2Jhc2VfMihucl9pcnFzKSk7 CiAJbXV0ZXhfdW5sb2NrKCZwY2llLT5tc2lfdXNlZF9sb2NrKTsKKwlpZiAoaHdpcnEgPCAwKQor CQlyZXR1cm4gLUVOT1NQQzsKIAogCWZvciAoaSA9IDA7IGkgPCBucl9pcnFzOyBpKyspCiAJCWly cV9kb21haW5fc2V0X2luZm8oZG9tYWluLCB2aXJxICsgaSwgaHdpcnEgKyBpLApAQCAtMTIyMCw3 ICsxMjE2LDcgQEAgc3RhdGljIHZvaWQgYWR2a19tc2lfaXJxX2RvbWFpbl9mcmVlKHN0cnVjdCBp cnFfZG9tYWluICpkb21haW4sCiAJc3RydWN0IGFkdmtfcGNpZSAqcGNpZSA9IGRvbWFpbi0+aG9z dF9kYXRhOwogCiAJbXV0ZXhfbG9jaygmcGNpZS0+bXNpX3VzZWRfbG9jayk7Ci0JYml0bWFwX2Ns ZWFyKHBjaWUtPm1zaV91c2VkLCBkLT5od2lycSwgbnJfaXJxcyk7CisJYml0bWFwX3JlbGVhc2Vf cmVnaW9uKHBjaWUtPm1zaV91c2VkLCBkLT5od2lycSwgb3JkZXJfYmFzZV8yKG5yX2lycXMpKTsK IAltdXRleF91bmxvY2soJnBjaWUtPm1zaV91c2VkX2xvY2spOwogfQogCi0tIAoyLjM0LjEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==