From patchwork Mon Jan 10 01:50:07 2022 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: 1577678 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=rjVn1l3R; 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 4JXGxz5yW7z9sRR for ; Mon, 10 Jan 2022 12:51:03 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238001AbiAJBvB (ORCPT ); Sun, 9 Jan 2022 20:51:01 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]:59410 "EHLO dfw.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238005AbiAJBuu (ORCPT ); Sun, 9 Jan 2022 20:50:50 -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 dfw.source.kernel.org (Postfix) with ESMTPS id 5D9A660EC8 for ; Mon, 10 Jan 2022 01:50:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11354C36AEF; Mon, 10 Jan 2022 01:50:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1641779448; bh=kenahD9QHhI1ZQq8ramyEU8rD91TP+pCdQ2TzwL2+08=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rjVn1l3RG6FujezCoqPcY6xIbm2QfHQOlsxanIaMWlkGvg5FNTiRdNb6b3N9foyH1 sIfGQoWNOrXqmS4Ppoj1WRPXGiFLapIcqD+kfKEGjD84TNtX5CSbdNU/oHyLx4DYg1 JUm3pBafCtWLdR6+QZq8PNOifwao2Gi+BE2gRlKcMnte2CNYvv9CxnY1Crh97WWfWf Axu9Qw4qavXzadNtJt2yXTnZ5fDIqlJjUOPuaUqVRwOoHrAmUaM1UbAe0GQJmQ0/JN rE1fM/kaniTOULXhfQPfYOOc3xH7ts9REdwNKSMyMyH3jl8and5V291sRtPHqeHyzc 5Rjf2nUeNQl4Q== From: =?utf-8?q?Marek_Beh=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_Beh=C3=BAn?= Subject: [PATCH v2 12/23] PCI: aardvark: Enable MSI-X support Date: Mon, 10 Jan 2022 02:50:07 +0100 Message-Id: <20220110015018.26359-13-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 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 79102704d82f..a892f22510da 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -1344,7 +1344,7 @@ static struct irq_chip advk_msi_irq_chip = { static struct msi_domain_info advk_msi_domain_info = { .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, .chip = &advk_msi_irq_chip, };