From patchwork Wed Dec 8 06:18:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Beh=C3=BAn?= X-Patchwork-Id: 1565098 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=DC5wO+Ud; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by bilbo.ozlabs.org (Postfix) with ESMTP id 4J86Sd43yvz9t2p for ; Wed, 8 Dec 2021 17:19:13 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237779AbhLHGWn (ORCPT ); Wed, 8 Dec 2021 01:22:43 -0500 Received: from sin.source.kernel.org ([145.40.73.55]:48788 "EHLO sin.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237631AbhLHGWn (ORCPT ); Wed, 8 Dec 2021 01:22:43 -0500 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 sin.source.kernel.org (Postfix) with ESMTPS id 16F6ECE2032 for ; Wed, 8 Dec 2021 06:19:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A588C341CE; Wed, 8 Dec 2021 06:19:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1638944349; bh=y3kDeDXSVZ38mem9vmVt2Xo/FDuREdUaq6wfdwYa6o0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DC5wO+UdbR8qF77CRu0VbzKzPQgJlDwDJff2YAznkghHl+aw2ZyeMo1r0yRj3rCDC dBuuIYMbfQw1KBnEZ0T2b63OQnf6LJlz7F3iucdWu7G4Tuf0aTettQ7AtcICgIPMwV GkvTaiLX9cwmVc7BzIjlYNKNU7QgjyMiMdT6QCChlqB+aPWBt49VZsgply+1A48SIS K/ZXj3vLmUJqWDN93SJfKsROtxoKVclLWl+xHV1Z9N/CpBxvAkEbzjziDRxHyzvtmC ST849dXsFcEhur51UEa4NAfok+Ya5YzCoDocAaY9CpLNgP2QSajTVqjOKEh669y2Dx 3XALI5e9pxirw== From: =?utf-8?q?Marek_Beh=C3=BAn?= To: Lorenzo Pieralisi , Marc Zyngier Cc: linux-pci@vger.kernel.org, pali@kernel.org, =?utf-8?q?Marek_Beh=C3=BAn?= Subject: [PATCH 08/17] PCI: aardvark: Enable MSI-X support Date: Wed, 8 Dec 2021 07:18:42 +0100 Message-Id: <20211208061851.31867-9-kabel@kernel.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211208061851.31867-1-kabel@kernel.org> References: <20211208061851.31867-1-kabel@kernel.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Pali Rohár According to PCI 3.0 specification, sending both MSI and MSI-X interrupts is done by DWORD memory write operation to doorbell message address. The write operation for MSI has zero upper 16 bits and the MSI interrupt number in the lower 16 bits, while the write operation for MSI-X contains a 32-bit value from MSI-X table. Since the driver only uses interrupt numbers from range 0..31, the upper 16 bits of the DWORD memory write operation to doorbell message address are zero even for MSI-X interrupts. Thus we can enable MSI-X interrupts. Testing proves that kernel can correctly receive MSI-X interrupts from PCIe cards which supports both MSI and MSI-X interrupts. Signed-off-by: Pali Rohár Signed-off-by: Marek Behún --- drivers/pci/controller/pci-aardvark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index d518cface0a7..24c67dc983e5 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -1360,7 +1360,7 @@ static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie) msi_di = &pcie->msi_domain_info; msi_di->flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | - MSI_FLAG_MULTI_PCI_MSI; + MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX; msi_di->chip = msi_ic; pcie->msi_inner_domain =