From patchwork Mon Apr 3 13:15:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jayachandran C X-Patchwork-Id: 746440 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vxXf65BGMz9s7s for ; Mon, 3 Apr 2017 23:15:26 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="c+8Ufqwc"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752692AbdDCNPZ (ORCPT ); Mon, 3 Apr 2017 09:15:25 -0400 Received: from mail-sn1nam02on0087.outbound.protection.outlook.com ([104.47.36.87]:11520 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752328AbdDCNPY (ORCPT ); Mon, 3 Apr 2017 09:15:24 -0400 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=DDjS7Q5dGdnIQku8vHh71D/BVDLyaVOOvdOu8WV9+Fk=; b=c+8UfqwcLYlDrJ3VdcL1UVFA/uH1OM02xhO17EDbWQcxjP3eTN2ZsOOo2B03DIxawG2e9Agi21zmFWcBVwBHneyUuIA+ilFqBZ7wTnezDpV7cCLCTysVU5G15nyjzEIMhwYF+GDk8v1qCfV3IeWQLFgol6z+DiZ6sztM2Zz2aFA= 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 DM5PR07MB3001.namprd07.prod.outlook.com (10.172.87.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Mon, 3 Apr 2017 13:15:20 +0000 From: Jayachandran C To: Bjorn Helgaas , linux-pci@vger.kernel.org, Alex Williamson , iommu@lists.linux-foundation.org Cc: Jayachandran C , linux-arm-kernel@lists.infradead.org, Jon Masters , Robin Murphy Subject: [PATCH v4 2/2] PCI: quirks: Fix ThunderX2 dma alias handling Date: Mon, 3 Apr 2017 13:15:04 +0000 Message-Id: <1491225304-3559-3-git-send-email-jnair@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491225304-3559-1-git-send-email-jnair@caviumnetworks.com> References: <1491225304-3559-1-git-send-email-jnair@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CY4PR1201CA0007.namprd12.prod.outlook.com (10.172.75.17) To DM5PR07MB3001.namprd07.prod.outlook.com (10.172.87.139) X-MS-Office365-Filtering-Correlation-Id: 2c377187-2750-4bb0-1e45-08d47a937b35 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:DM5PR07MB3001; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3001; 3:UAzPzitCMlzgeWXc1S0MkMF+sZQT2noF8YLUuJgDxUq3sEDCg764OzcO36ozYWTGo5q+gG9NrzyrPs5kglTA9eN0jetPWuRibjdpjAS05Gv6OUP7W6asGczP+4AvrazE9Pizlfj8kXjZW570IYQ9y0W7AjeYbcFtpRP//FqaCUXG+TeDNvnTpeY03OAtm1gzIYw9XlxpKI6xgl+TQ22peqLD3wBYa7UCAT6QMqrJEBAgAVzfimjuBdvQszmNwq7FN+g/rT0U9Q0jxVGbOCcKlLXv38fjzKFjYdz5ZIduRphXWG5L7B84PoJWrpeK4BT/sSXYi68ZJdiNDUntOC7pJw==; 25:yd12aewOGafhDq42HocDwa61h0L2SqQyItZpU6+DKeKYOTasnuORoAwm53cyCqPYxCBfAmX89N0lfNBEWdPGsnHs18MLJlQhl4JxUBYU6gUxLIqhXSbiVgcU7RRWlzfwqb8krzxHEdC1HAP5/cvIP6DTcKbroqZ0SKUrJox6tudFZUwa+zyD21ROk/pLKTBbuwLuf+FxXb2L26sjGEFqrIOH+CcNlvO/l1g+u4dsd50lCjYs+a2/r1KVvXrzweUt3r90QOEjchB6LqBxdYHEltrl5DYWHFQyl38FjqxaVa46FQozyIUvRJMFgaHdyxyH0umebXt8u9+dgd+xwhNxdhFeZCP51SnSUtme9cGR2Lgdml91tOoLGyPMjx8mC1yx8wlA/6C7Qs8sVPNdB3JuuLPIYSIK2IbFGvsD3vbNxsm6zvKkQn9bvrjFBfa1Eo5dZihrMVYgQ6HHJ2Y+gu7HJQ== X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3001; 31:WuzLsPwFd7JmYQIRfFPRfmjpJ6lI5e2qb9rKWAKFveWJgO5cp8Pj6gsGXFWTOkfLvh7eA7HWrK5G2BHA3Xt/5qyoptowSNST+7KbLImYJXEDIEH1q6jUS3PinX4OgSYfn+GYOzXpz7wh10QuKv9j/nNI1Z0gHtkvLQ1EP+K1ouxV+Ovm6dFaRwhBBlWcx2ySwzUi8s9zIYHvBd3nr8uEAeLQSKtGdHqrkvBXbFWVceA=; 20:Yv1IgAGMFzklzHeDDgWV5NrxEUt5Ct0MGBNL3uOHRej3Usfin/9KXsIIM7zd9G/fWNQZdwPDloHIjJUMBIRvIzq6uQikTNLdsqBUCD79U+lg3kf848TUB12ITS9K3TnHumPFqLpS/VNyh2axeDQLhh6bZ3LCpm2flARoHXMDKlAUtq7W2XtpnpEn1idiDetogbHA5caoyqSPvpF2kRfSkV49nQZAO24QpqJPdOvwHLTmU0UQbQmfhViRFKm5IIYKRPJOSmZ1IZMAtc/3hI5k62ArAGT4BDSbWNmz/dun27QKdvwKaxfQzieCYJ2chVmdge30nefJaJ+vAf3JnonHGTaOfxWJBOc5XBxyLTh4QjWsNOBd4tH1GGmPjtvTwZeLLTcFPfSev2R1qDY5V9zno/llr3/8llt4Ix762IClTTu6fRiCCXZ/4p3t26uqy+X4KjDeYsf0+ShCCpuhHObrJuYiKgZ7ABwz5YcNpxLBcqQiVChBC+f+hCE2Ojnrbw07acVYivY2W8wJMOLwXzC8XUJc2KUMdBXcwdjS/jOYG8+TrukDUBRGPYOO+IIdqq5tJ1Mcm0c2tDtzAJLSkuHjlOJy2icEvm43zVC8pXuy6mA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(3002001)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(20161123555025)(20161123564025)(20161123562025)(6072148); SRVR:DM5PR07MB3001; BCL:0; PCL:0; RULEID:; SRVR:DM5PR07MB3001; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3001; 4:42ubsnuH+NjUlO+0I2AejipquFi8O+hI2HLQJ/1pVVr1L3uwzLLhRSyEW51lTszkZrylMuSxqw/GC1CP2D+CeCnbwwUNuDsEoq/XRC2HdGevqKKVhmfh4/PJf1tS0y7JyZapwyyB/2NhTx/7w5WJIztq84bKbvjdmEpWhJO9HfblSSysefwJ8MtTl/kLvSDbVi58oi5ha2CiFG3fAiTcYfLmocEfALwhL4yu2FnXoUV/Yym46PN14Jc6GmiW14sEnPzGS/CuYwQnVo97vgteR+aJCM6BQ9cwGCAUEXMn/9f0phyg5H+W66ehPKyMq+4elCLp/v32e3Dv2twn2aZppggJZdQnktqE7ngLGV0ZAxJZYq5TK+jGkItb4PcGl64P2jnEDmOm6CDnODW5tfm3JXWj19E8zuTQqHLHMpsSydWk3HETMsvXxz2upFHRl+gaUjUJOHmrFrHvnGcw/epPKxV4QXAPxJ/eOzokNEeYUrFhGZ1o8RQ1URgdwjUMHt8SyCZIZqHUviTxJhuEAy/ZV8VmU3aj86QBdf/w7tYhW1NgYwU7DGmxzoDPsRXJsmVHxokYzae1Jrhl3Btdj3CQe/0hOMKR8iIEoDTE88kax+BIoNgoATktSxCQwSztQKsduHd3RbgtkCmwghp9waRLNTpszejQXAyiWlCM9rpu2dggCcBC7hl/3q+4h/ihjxiU X-Forefront-PRVS: 0266491E90 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39410400002)(39850400002)(39840400002)(39400400002)(39450400003)(54906002)(7736002)(8676002)(6506006)(81166006)(50226002)(38730400002)(3846002)(305945005)(6116002)(33646002)(76176999)(50986999)(36756003)(25786009)(42882006)(2950100002)(5003940100001)(189998001)(2906002)(5660300001)(42186005)(53416004)(6512007)(4326008)(53936002)(6666003)(6486002)(66066001)(48376002)(47776003)(50466002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3001; H:vulcan.caveonetworks.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3001; 23:rPAWt92mTweD/DexDRHAN1VxupTv5rSQ3iDGAwDMh?= =?us-ascii?Q?9wVL4Gzty7WtYuVIjAUkZ6vqvdZGbXVc45+Nler7LIj3R8Fhuf8bGeLpl09/?= =?us-ascii?Q?3aOf0BkS2PWm+XSa2wlBgu/b0PrNWNRE9WmuXfNknqM0VA7e0y9p0Hp/op1q?= =?us-ascii?Q?vY4MqQjRk30dj6LaRox9ylOrldjlINB4FBaZXVjpL21b7DrVv3ugJL9aFuOr?= =?us-ascii?Q?mXZwlXKV9ZFOp2tVFc6OWljd0UrrtLFtTACu4XiWg84hmVPVdfKam5dXVna6?= =?us-ascii?Q?Nq8mmrRlf0j1oYIsBqFuEGMr614TDNEFEB0jUa4XN5lfA9Kw41bvhPtxnfJR?= =?us-ascii?Q?7Ko4QueGj4OoJFaTrrCBzF1hqp946K2t5cofuu/N7hgW6/6mgpjS7m1OJ8Z/?= =?us-ascii?Q?s+u+0LnbtxEcxhDwFWvjXpyxtWS2Zcf6NgsrRfFGINP87/kM38Q7N/2wUOHK?= =?us-ascii?Q?JZurx3A7iJA9ZBy00ZQP182w2dlpBhfwxnX1F5gadr2Hh73zg72+VyunE6Zj?= =?us-ascii?Q?BdxEs2IfReQlRUSnDZd5i2ZTHScMH+GsZtRaxhDwHeKx60Z3Gpaahz/RlE1H?= =?us-ascii?Q?mRQZ+UKvzmNNI/sOpy8wR1iwKL9nBs1rt3qlua0HuX3RTviP0oJH6zsDf+2y?= =?us-ascii?Q?Hcbb0UXqadSI65iGV/NyWY5UnC2Bubsfpf6WsaxM87okDhG0da6UKUsn3AlO?= =?us-ascii?Q?VL6Ff7OK6q09gcKpDBGkQz/nN0cs3QieziMohSNDusqjcDgB/RAWn9iC2Zlw?= =?us-ascii?Q?F5fVdtzgszOJilV2wfLzjF5y/T5P2zczph1tt9AyeorM0CLVkap9XPNV2YkP?= =?us-ascii?Q?13JzTe4060WRJ8dP+60R/PSg94E/i39iDL+y+GfVg1oDMqqhhCGck1g3eVJC?= =?us-ascii?Q?HtzgTnncnvkCaJM2rdzKS3f0c2+mRxK6CtGKu+OFTSZWjmpPRIgvomQuJQJJ?= =?us-ascii?Q?sucKJqUf0T24T0nIvgMLKuWtgedMZgxxSK4/tbvzXza9lLLbxP70ScDKAxcT?= =?us-ascii?Q?W+Gok90VnziQSj5F8qroGjA?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3001; 6:KO/oa4w7VO2umXt5pZD3wWSU3pk28HdEiYtSa38Oj0bvNHIKgkabdf3o26KGnFyufmGZ1LaNlL/Hp8OiIpMXEuvJlxxAwzYkrFl7pqaJjMnaExXPn3esmmow/9/hm6R24vNAm69ihfNwmk6tWvFugjohnNDO7fqVhOfXga+npHcEaSt3I+fBC94eKSbnN+5b7XnDwwhR0SKmPFFhA8oT3IXB7MO0OSuMMCSkPXFBVo424117SLr1zcTYo2xaLNh3qtMr1+rfdB9WnFWVBUwK/dZGLgd6kPJju7xF+vRDcvLOgOMK1f3sEU3ixElc4Siwfo9zIQN3MNLVMrE4mg/3kXPDRe5ZOe1TEAPPEvEK/EzP9qwJdGgJ6LfoK3H55jJT6ivsOj2yUXfdCPUkFiDoaw==; 5:PKyr0KJswieHGEgz3x9pJx+1fzCz/At6azNjThz+7yxXQpTNNKNX4QyouyQ7kS57pqK9wooH9lA14lZ6EnRL2QH6OfdXYVZrIHWH6pSOYK9I8sNjE5Jk1uKZ80/9WBpaw3Y6VBIZwKFhnNXCcgrLuA==; 24:Odp+ff6DEeSNBUplGNLHV7TtnbbU2pmqmQY3+DNhZ/I9i3vD10uZhXR+xLncISqkcsTlFedxKQC372JQvZ8WQRjv3Ob6jiiycBbJzrW3hNQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3001; 7:oDMEYxulnR22/bdpj2Cq0PK58m3pzuhtHjg15K+S1B5EsFPE2rgvhFMNb9W4fN53h9kwnu5ldU3H7dEKwObHYs+/5Ci8Pm/H3JKUg3/0XgIhWme5ROK9h6qJj5NARbWCdD12XtWRnoy8EafR+F1/uQ+ipF3QIN9Y0j/HxbtsAcrI0tZoUqp+93UUh8sQR+LPcnC4lz/O6Il7T2zhj+QCIYoeNgcc5mTIySMHnIVIcdg+LHMn5GdllzUAWiVgOVnJaOJaQFIFwTBLDnCXNb2AHUR8VLoT92+mJJoUbXi9IR2AkkJMMqWKkSzvGH2JbdRowxYXlDg1WNd3+78LRTnbBQ== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2017 13:15:20.7328 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3001 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org 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 port 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 PCI-PCIe bridge does not introduce an alias. The SoC PCI devices are directly connected to the GIC ITS, so the node level bridges do not introduce an alias either. To handle this quirk, we mark the real PCIe root ports and node level PCI 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 Reviewed-by: Robin Murphy --- 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. */