From patchwork Wed Mar 22 08:51:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jayachandran C X-Patchwork-Id: 9638319 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A617960327 for ; Wed, 22 Mar 2017 09:01:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8C94428249 for ; Wed, 22 Mar 2017 09:01:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8155A28306; Wed, 22 Mar 2017 09:01:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 10B7628249 for ; Wed, 22 Mar 2017 09:01:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=f4ojbjT9vwJtKo6hRfvxJ1h8dBqdMZ0wYy8Vg53VYCk=; b=j7W7DNN33LReeC K6LxyV0JjAQo3dsSoTf57j62P5nWaWhUf1DK+VFuNe98KapR7vHP9/bbdGO5wviAIxVGYwY0NTeDU Gb4kG1diWs6vln8Dd/Z5JWmi3nclTosuoG3srTVgsDRykWIKN9zJlgFpQG0fSVA8Fsx6bQlvk6r+Z j2vCBDDkYIUfshATKrAZHMGi82EezohD6rI9uEhPEo/3So9C7u82xxhWM+a3zr8bOIOmWqlIC/vDx Y7Ag8mIq5RFN73tE8fcfqSHwTtq2GgimK2f0IhNQdNAiKsKtrws5yJUurjFbR5zQiuqSz6iJV1Jjf inLWONCwUFcS9bhmLUEA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cqc8v-0003g7-5h; Wed, 22 Mar 2017 09:01:21 +0000 Received: from mail-bn3nam01on0068.outbound.protection.outlook.com ([104.47.33.68] helo=NAM01-BN3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cqbzo-0007d3-ME for linux-arm-kernel@lists.infradead.org; Wed, 22 Mar 2017 08:52:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=r5gb7Q9Xq/LQRr3o231v0Q2wb6xn+JO6rWMIjriJ/Fo=; b=Q6A4kFTxr0/XwJOfJDquML73BhCX9Mlav22xhZTR8dcs6eRicKpK+B4zBq4/HTgXHsuILGSlKjtFCzXtrAFBBVwGlIyzcEiTB4TUBTbMGrSNAZiVe+CzmhvS0t517Kf7OKco/woe0zvUluuRrcm9AiyyklBOpE7xPMxUwVh0/ks= Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from vulcan.caveonetworks.com (50.233.148.156) by CY4PR07MB2999.namprd07.prod.outlook.com (10.172.116.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 22 Mar 2017 08:51:31 +0000 From: Jayachandran C To: Bjorn Helgaas , linux-pci@vger.kernel.org, Alex Williamson , iommu@lists.linux-foundation.org Subject: [PATCH v3 2/2] PCI: quirks: Fix ThunderX2 dma alias handling Date: Wed, 22 Mar 2017 08:51:11 +0000 Message-Id: <1490172671-2648-3-git-send-email-jnair@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490172671-2648-1-git-send-email-jnair@caviumnetworks.com> References: <1490172671-2648-1-git-send-email-jnair@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BN6PR11CA0001.namprd11.prod.outlook.com (10.172.17.11) To CY4PR07MB2999.namprd07.prod.outlook.com (10.172.116.13) X-MS-Office365-Filtering-Correlation-Id: 298927a2-9427-4053-314f-08d47100a3a2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY4PR07MB2999; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2999; 3:3HCp0hZTYeeeNqerKbXYuNEh6pVSjj1/FboWN5+8gNEQR1K55ofGOxt274a1TjO8vDCAQE5KxAVVVECfg/d2ejR4zh2NAASbRDXyjsx1+eUr899KX2RydJJ8q3l6mlwVqpVCG2YGGBi8SINKbKw731zBKWFlq/OxI4YY49QvPMpHJjljbZ7OzpAcGZ5JoPqhYm4LX0b+hVRBSaRDz5+p3rdtDrzGQhy39eNeqO4wzal9m2+ISHYIv3GHOi2rqEmHs5u3QC3YdcsocAaUyy1dRA==; 25:rrSND3WBnGoyqjfJgh1CVGVr0yoTnj0m3qL5pv2Fjj885p4XeUm/Mzqsud+F9rv0hoz5DWhzNOCmPezUlkUC/Nbpvcw33Mm++JokuEUW4SNf8d/MlMz5JaMyfjKhD+7qOtvrUmCYOfkooFznO/8EP1HECcZlVX6ImYTva6Ltwll6r3P+NSy2eScl7qPG2U6+Zy1vC0q5F0WImSbRZq6Sv5AkPt2CilQSq0dl/xZACt8cY27sevVAR9ga821gLBGKUCoeddeVSqxQleA4gKmaJOKP95N06CqTdF5yCc+geiQePbFtqHFCsIuXwqcW/MO9fRh0yQOjhjiFWw7EVkSa/BsvI0h9V7PqGgPoIx2HP6AwGDNpRiXsKf2I5fLhu5PuJW2U68PBip3w2hYuFDq1D6oJ/kt9+rLYaZbkC2mGuVxwLpfUZ5vpk4EWauGtMB2LpT+DPmbwtfq++EbiR6mH4w== X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2999; 31:5/sjBm09nkJfD/TkhyfR5r2Fn7N0O/TtVUZl5B7oq1tE0IoehqsJHELxZHVgRKIVTFUDLmZjJV111R0QCyd9lBIeVExRXyekGZuIrcGUGGF5faRW7qHhQNoQAEjWkFZY18wkRmKqqVrJDMD2mGTRJ3f/b4B80Gmhv0cTee7lpKmRGW5Pl4M9NK08+6qkTe8juwXJfUzTiQKQ8xZfy78De2nIVAhj1FA5YED0vSo3ut0=; 20:PBhSuT3oEKAHrJ89NSoSWDq3CjPhlmapMNmdGkTsEUFuUYOqpCCfTDEvl46twZ9bZe6SMGSWapIcZWvOFg01D6GdsS+RBcGq3KWihq4qO6TTvpyzz/YfZIn6BCD5uPjS4B4wW2sLgT4pCN4HVgbeG/3iglpVWY8ecHRxV2imEwkJAbKVczEpvChleDB1OZ4WhElKg/Soh4YN0HlVOLxTZtuEUzuF7Et4qGu0At/YG0WHyzoNV5BpWikQ2i0VIK/jdHVeFg0bkwIq655wqh03lt1cTOSWdUWonRqF6vDNzJ8A4nO9MLJaBoVGf5FzaawjiPpLZQ/xm8hus/5eKeur5IH8vWx1DopKGR8HM6GnEJDpsQHZs2iYZPhVLQNHe3Uyyhf4l3D2NL6F3RaD0KodYflqXbTYkbZuNOJX3Xp5SOose+sVQ4Z1e5e1mDLGyLk0/Pi6R1Es1mp5IccQRVmDeNC9q4qF9wJxZnlU/stGTqsr3e86P/smjx8S3Hx/6s5nWRNxwaR7I8rwrWzE3DU3uLG2zYUAV07LIMmJx9Lf3E+H0rfAD3YwgmuuhYgIsg9HWGcS3rdIk7h5DPuCDJR+0Wp21/sbgBOvmdQ5HDt1bVE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123555025)(20161123562025)(20161123558025)(20161123560025)(6072148); SRVR:CY4PR07MB2999; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2999; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2999; 4:/E6wePuZQO13iCxHTw41/yA9LUj7yeYlWVtV6UFxy2IUCS/PaC7Y5ySTPRxMUP2XAkx33evUk1Ji8z1shBKLyFIubpcNjK8eJCa0zX9JUMcr5g/cpBo+tJTqDlA+VnZcRsZ/WT37M4+fhXUR4zmUxA4NemquGgnoI+ahPXtEIJQJRnT0ppGhPGHr/RGRWOY+JbXlYhHM0ITiVTvniVCW+YZCye7TCMdvo+7gSY4ezco0/MnX+1K2mfaSsNXS7ZbAzf+DWYIoLRXM/TjOxStg3HQ8nmbhD3VmV8e/QZQ4Wz3SLS/RBlwDEzjPxa+WHVlCGoiPR1r89x8B9R2rCAsqzfbVW3drvW2Y9RzB6piWboHtx67bMOypdVRLP1hfkEyWxYU/wy21P4Z7a4q0UMFay674AjCaZPVu8bLPqwUXFfJOcGCUZeoFUL4rx9P15PHdNXuzyXOgNP4z8Pv/iBYUCya0vmMDPo2sfat2bDgELhl1vm2Now2QPZbIBPGNX9fKAYKEmfIhq6nh/sMw9KKPxEmCl9cCifA/CXw6FPjowD35zshqFsML7RiGqRep6or4o0jHPzpoM1AaAnE5qeH/4h5BxqqoeOCHaA8SfewP8ZY= X-Forefront-PRVS: 02543CD7CD X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39450400003)(39410400002)(39830400002)(5003940100001)(8676002)(3846002)(2950100002)(6666003)(42186005)(6506006)(7736002)(47776003)(36756003)(33646002)(53416004)(4326008)(76176999)(189998001)(50226002)(5660300001)(6486002)(50986999)(81166006)(50466002)(107886003)(54906002)(305945005)(6512007)(38730400002)(2906002)(66066001)(53936002)(6116002)(42882006)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2999; H:vulcan.caveonetworks.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2999; 23:Utu4Uq54jpXW8eOomM1GOP/D8bDXbtYJUKOViHTDIV2QObvcifu3JvVMxmxh1vEmF9RO2/qUeT9+oXDSJ9jk383w1Yyqdj0JohrFJmCg/JNt719b6N458DRIwOw8QBkynu/gST3SkMzjM3Iy49PhomgLfU5oUewtAoSYBB3cvAdrim8ba1/WwBrYcvpfGXcW/rvOup5/5kTKRFkBiNERNKstAvGOrNlHeLtTh0/Ip8+sb8bWxkVb6PGmozScdYkzRpOPK9XW1e9wkKW2GUz4JKMibuPW37EVizTZy3U6czT2jmu6SiKl8kTiYXBvK7WQ/Eb0xmtmpq46Oy8lPNSnjNtzAete6sr/ujoS+CQRPUHAgQUxcx0WXSCznnMSjCuvAeCVCcvVDZx5SCGFzLu6vBqOpUuciP0N9hXW6WEg4qVzK6PCRubm/GG0k0uQyee6f20oNh4olX2sPS8Jr+FZtFZADcrp9HWy1mTAJsNj8xw2DPrU7LaHppeii0x/1Kzo6saJUKqKWGgQoPUeG9UcZN10czyWaSztugv6paqbDAiXk09ZC9nJupqPzomf0rcOjCdiG+RtcXJ/lUF/vI4tUkc9naFoqZ43B7mpgcplkCOdrOg32pDTJ2SoxQ0GJfJ5aFIW2AufdZzmK/IYBajr9HGRppw2V1Ww+VR3zwx7VAzfBExxXhSR4zrvYHdM2wGys2pBF5yzWZxpSr647VtPujvpmSUDgAKQ2tt4anyY/75NGgTG64qV0odOpcKFC7tY5ve+aAKWtSDG/8keIiu+DU1RyJm1ggXWuLdtW7W4DC0bGWs91pQi9YrqtkHWa1hIv+rSZvxy8PHb8wg8T3mvz7SXJPfVsw9Sa0j2QGj2RgiHGEXHx6KGZgMkgnbcdf2EQc50WIRHuY5Ld26U37uNu/mIgoR+rj4sUF7x/Di/r8FuJ0YhbyANZwktbqFpr8yk X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2999; 6:kPOUm9vTbmEqICb4wFmpMmN3nHx+oteC8zLrs2kX6epP8+V7TJOjgiKTosHCryo8Ft8wkqYBdycvKiXUOFtKAvZnzvfJU/00jxsKrWYuBVQy25lS6fhyBcj3C20ZtOBNwccLT40tjW9lyKyR2wfjzPrNX6juawc+Q8Xpx5CxZTgDH2uDJlsuiUXViAny1gtJ4W2dr3hibUEH8lr+qiT+G38q/sxxwDzkcJgXIvs1TxKtvex3HcPJQqFfk3QlOuilqoO5yIFjr8zqhE3toSVtFNI8FlLnM0tEUJV81KZejRp9gsMi8efdDooJ40Mhx0ULJ+d2nK+D5XzHldmxPauSO2oLaFIeMKEtVt02q0FxwHaxeUWJ1WNnejVEBVR6alXpOLvrb5x42RK/O3C1aEY6cg==; 5:e7a3UpSK1liTDonvv5YEhtq3cCSbYB/Wbkutsoqu9KBC+Z2Cqs2+DfsyHPAil4OsrCJHIQjEYnzc05rjlb9n+q54os0E1O2JSWCbgz0E2jlsjh5tcZOtmvq5yaG8pyJsoss1mP6dDOMdreYndeuOMg==; 24:Hj8lkMK+p2zbBXTiqYY4O0gk9Irf/oNaEezTvC9jickRM3nrzdse5fwdKFY0b38oRCo/5soOT8aaGicHC1sECJ9AVLBdIqIJvr7MIyoQxfU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2999; 7:qfU5hwLxNKSRgrYGahbhGpsWf9N5edE44RsfRd/u+fbcaGHU89q74hgUhaMPC6odtrElpXZC9aEsYd2bT1LRn7xfWBMYzq3BNSyPpuA5QEFzPXR0/61rGcQqgfrxF7nvCqx6+kbvZ65eV6jNWCIzmvB+XW31RVz7BuaSR7tQCZFNvlWVmQLuy1rfaiwA5ufglJQlHYX2Jb6bo80ISc3JhKy0QQJBKzn78a2X5ZZa9jeRHUsBir4awr1kGAHnyoClIJww4Lzy2BRJ9Mg5xB7PqosBbOuDDBIGgZCIlzN3XLku73xaC/KGgWXhRjXCyrMPApe5cG3BlFDpD0paA5jSFw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2017 08:51:31.1625 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2999 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170322_015157_142698_E19E0E67 X-CRM114-Status: UNSURE ( 7.50 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jon Masters , Jayachandran C , Robin Murphy , linux-arm-kernel@lists.infradead.org, Jayachandran C Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Jayachandran C The Cavium ThunderX2 arm64 SoCs (called Broadcom Vulcan earlier), the PCI topology is slightly unusual. For a multi-node system, it looks like: [node level PCI bridges - one per node] [SoC PCI devices with MSI-X but no IOMMU] [PCI-PCIe "glue" bridges - upto 14, one per real bridge below] [PCIe real root ports associated with IOMMU and GICv3 ITS] [External PCI devices connected to PCIe links] The top two levels of bridges should have introduced aliases since they are PCI and PCI/PCIe bridges, but in the case of ThunderX2 they do not. In the case of external PCIe devices, the "real" root ports are connected to the SMMU and the GIC ITS, so there is no aliases. The SoC PCI devices are directly connected to the GIC ITS and the bridges do not introduce an alias either. To handle this quirk, we mark the real PCIe root ports and node level PCIe bridges with the flag PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT. With this, pci_for_each_dma_alias() works correctly for external PCIe devices and SoC PCI devices. For the current revision of Cavium ThunderX2, the VendorID and Device ID are from Broadcom Vulcan (14e4:90XX). Signed-off-by: Jayachandran C --- drivers/pci/quirks.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 6736836..564a84a 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3958,6 +3958,20 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2260, quirk_mic_x200_dma_alias); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2264, quirk_mic_x200_dma_alias); /* + * The IOMMU and interrupt controller on Broadcom Vulcan/Cavium ThunderX2 are + * associated not at the root bus, but at a bridge below. This quirk flag + * will ensure that the aliases are identified correctly. + */ +static void quirk_bridge_cavm_thrx2_pcie_root(struct pci_dev *pdev) +{ + pdev->dev_flags |= PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000, + quirk_bridge_cavm_thrx2_pcie_root); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9084, + quirk_bridge_cavm_thrx2_pcie_root); + +/* * Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero) * class code. Fix it. */