[{"id":1771764,"web_url":"http://patchwork.ozlabs.org/comment/1771764/","msgid":"<20170920113321.GA32496@localhost.localdomain>","list_archive_url":null,"date":"2017-09-20T11:33:21","subject":"Re: [PATCH v4] PCI: quirks: update Cavium ThunderX ACS quirk\n\timplementation","submitter":{"id":70764,"url":"http://patchwork.ozlabs.org/api/people/70764/","name":"Vadim Lomovtsev","email":"Vadim.Lomovtsev@caviumnetworks.com"},"content":"Hi guys,\n\nSorry for annoying topic ..\nCould you please provide your comments/objections on this if any ?\n\nWBR,\nVadim\n\nOn Mon, Sep 18, 2017 at 01:48:01AM -0700, Vadim Lomovtsev wrote:\n> This commit makes Cavium PCI ACS quirk applicable only to Cavium\n> ThunderX (CN81/83/88XX) PCIE Root Ports which has limited PCI capabilities\n> in terms of no ACS support advertisement. However, the RTL internally\n> implements similar protection as if ACS had completion/request redirection,\n> upstream forwarding and validation features enabled.\n> \n> Current quirk implementation doesn't take into account PCIERCs which\n> also needs to be quirked. So the pci device id check mask is updated\n> and check of device ID moved into separate function.\n> \n> Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>\n> ---\n> \tv1\t: put device check into separate function and extend it to all\n> \t\t  Cavium PCIERC/PCCBR devices;\n> \tv1 -> v2: update match function in order to filter only ThunderX devices by device\n> \t      \t  ids to properly filter CN8XXX devices, update subject & description with\n> \t\t  ACS register info (rejected by maillist due to triple X in subject);\n> \tv2 -> v3: update subject: remove CN8XXX from subject line, replace it with ThunderX;\n> \tv3 -> v4: update ACS mask (remove TB and TD bits), update commit message (remove\n> \t      \t  ACS register printout);\n> \n>  drivers/pci/quirks.c | 26 ++++++++++++++++----------\n>  1 file changed, 16 insertions(+), 10 deletions(-)\n> \n> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c\n> index a4d3361..e6b904a 100644\n> --- a/drivers/pci/quirks.c\n> +++ b/drivers/pci/quirks.c\n> @@ -4211,20 +4211,26 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)\n>  #endif\n>  }\n>  \n> -static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)\n> +/*\n> + * Cavium devices matching this quirk do not perform peer-to-peer\n> + * with other functions, allowing masking out these bits as if they\n> + * were unimplemented in the ACS capability.\n> + */\n> +#define CAVIUM_CN8XXX_ACS_FLAGS (PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF)\n> +\n> +static __inline__  bool pci_quirk_cavium_acs_match(struct pci_dev *dev)\n>  {\n> -\t/*\n> -\t * Cavium devices matching this quirk do not perform peer-to-peer\n> -\t * with other functions, allowing masking out these bits as if they\n> -\t * were unimplemented in the ACS capability.\n> -\t */\n> -\tacs_flags &= ~(PCI_ACS_SV | PCI_ACS_TB | PCI_ACS_RR |\n> -\t\t       PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_DT);\n> +\treturn (pci_is_pcie(dev) &&\n> +\t\t(pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) &&\n> +\t\t((dev->device & 0xf800) == 0xa000));\n> +}\n>  \n> -\tif (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff)))\n> +static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)\n> +{\n> +\tif (!pci_quirk_cavium_acs_match(dev))\n>  \t\treturn -ENOTTY;\n>  \n> -\treturn acs_flags ? 0 : 1;\n> +\treturn acs_flags & ~(CAVIUM_CN8XXX_ACS_FLAGS) ? 0 : 1;\n>  }\n>  \n>  static int pci_quirk_xgene_acs(struct pci_dev *dev, u16 acs_flags)\n> -- \n> 2.9.5\n>","headers":{"Return-Path":"<linux-pci-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-pci-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"LPLAyVut\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Vadim.Lomovtsev@cavium.com; "],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xxyL43n5rz9sP1\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 20 Sep 2017 21:33:32 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751568AbdITLda (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 20 Sep 2017 07:33:30 -0400","from mail-cys01nam02on0059.outbound.protection.outlook.com\n\t([104.47.37.59]:7831\n\t\"EHLO NAM02-CY1-obe.outbound.protection.outlook.com\"\n\trhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP\n\tid S1751537AbdITLd3 (ORCPT <rfc822;linux-pci@vger.kernel.org>);\n\tWed, 20 Sep 2017 07:33:29 -0400","from localhost.localdomain (50.233.148.156) by\n\tMWHPR07MB3008.namprd07.prod.outlook.com (10.172.96.14) with Microsoft\n\tSMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.56.11; Wed, 20 Sep 2017 11:33:25 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=oKP/OExHpkGjW47jy3af268XgpWE+acvn2zMCT7/sG8=;\n\tb=LPLAyVutiFVQZc4WouAOBcYM/fY4FuDMd67ggtZTDfeW50tQf+l1IB6ZktgHWF23oK3MjAL3l55jpwppj6toV+4Cg8VpjIqxuaRuEopXAAH1/AvTueZ8wsyu3JxOLSHmP32n3Q+AuP+2BWojzQeRZYcQoZ/o7xH8MEMglXWvZH8=","Date":"Wed, 20 Sep 2017 04:33:21 -0700","From":"Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>","To":"bhelgaas@google.com, linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org, alex.williamson@redhat.com","Cc":"Wilson.Snyder@cavium.com, Vadim.Lomovtsev@cavium.com","Subject":"Re: [PATCH v4] PCI: quirks: update Cavium ThunderX ACS quirk\n\timplementation","Message-ID":"<20170920113321.GA32496@localhost.localdomain>","References":"<1505480233-22694-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>\n\t<1505724481-28413-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<1505724481-28413-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>","User-Agent":"Mutt/1.6.1 (2016-04-27)","X-Originating-IP":"[50.233.148.156]","X-ClientProxiedBy":"SN4PR0501CA0012.namprd05.prod.outlook.com (10.167.112.25)\n\tTo MWHPR07MB3008.namprd07.prod.outlook.com (10.172.96.14)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"dc279e78-c75b-456c-0490-08d5001b68eb","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:MWHPR07MB3008; ","X-Microsoft-Exchange-Diagnostics":["1; MWHPR07MB3008;\n\t3:JzJkStFZo/nCAcce3gKrI2eQmxWn8b2TBcjABQzyFmMscT+41JLA3WoLGSMNLUMIuzZISzJWr3psQqUBdGdbtouVXrgKwj3B9SwIGuoLEppRDYOIUrnh9KerhWOeG8+EoRKEm69X3MPZTdFp5D7pRLVAukDSd8zYxKbuaMJN6PHxwYqR0q+Nlrn/2aO40JmYnQuID9tW65VjjBI8w5JiAEtrOwmftjzCyRqDSB/CzLy46V0Pk7uRLHcT/58s6epL;\n\t25:3+9iQM89idskQgbErMXaAjkPDCvjilvaE4tMG2icbkgGD8EJ4j9/3ahm5LQWIF5q6iAe6focivEX4sJXujClo/Hw4FICgBcoNr9vwGFgHpKl0sV8cCXCDeMv6CoZITUuM4p3KJoHLtBW1wYKKX9ZfGi1p87u1SE8t9u0lW7AOvksnqnKxYeckekN1EMP8hKEjH1L3rgwfT/gLtA1kDzLCH1Y5VV/VD9a+9qFWyVgYy7H7+C4l0C3/3JxAHgY7H4abNXkyIHiww1+IuXFeNHI9brhPlJEljph4MCaDKvkkpIt9SwC88bk+4JCkx8wIAhHO1l3Y2Wu9wGOLrgKUHWn/Q==;\n\t31:Lk0OzbGe2UijYuV/CkXOtDH/yN7tvhN9MWqr0Bgqga9PZRpxNAX52J3NPDbqt6Q+Sddw8xTZEbyfTzZBF3tTvgp0Lm9vP4Jjdo5/Tch2/LmPXiYkRy9xpI+8GMEJmij13xE480RhB9pblUWVkoeVgF7kpwuAvDVDep1EqL7/bqS83+gQEh5wADxNqNakUFCK9n/eCyVdCH7zKYJd8u93yIx8iC2N1ymKSNGaaXEr5PA=","1; MWHPR07MB3008;\n\t20:WV9qOGkeDb4/0fAooqS5nELgBFXjsR5CzETVb1AI3zO2GWjvSXoB4gy+WZqby4ICIpWoqkzfn1GRSlRdpDgm3Envbccrc4pptA4WzPojfNYbFg1929qirqxUvRvBbSsCLnlM0r/i5sA7964FnMCHCvejwO8SrcmOh/jjSt5W2RQ6vNdObkm+VAnizgJ5no4OLvv+Ducn3DVp29NZfMkZjT525zY44YGMKNzpdxHB9tMGc6s4kV7hZrZqUpZSNxSvqrh5rRp+oUnyux5HCQq5NZhLvFCss/zzkS5dcRAmy6aECqlunDELBzFaRLd1LsmaOaJPcafRRcFbGBfFWK5qZe33QfC0vTtGBImg+mdKhd9W6ZTa3/gCFTCfA09i/YYuPnlsUFnceacVYG1+JvX0Wiy+iWADr/htzRfNm7NSbRz8F7Oukr7dv+h5dKt5emFyTGoUp0jQBQ8IjyWRVG1XSehDSHvaSCTFJANxgPavmhoQqST3EvrHsDrNIzwQNkC9oFztc1SdsE+D5MlYAMhIMs+qm9vZLHzxMRxOenYpViUD6la0xFLA7JhibdINSPa43+wCV3Y3hFVkIzEk7n4Pd8HXg4ivJ5xY2D2u8qf+p6M=;\n\t4:oX8+2DEQBFdFFxJQNbAGkzm8fVQL0DOqNKTLoEOnG1bltc0Lz806O3oeeakMpJUM+ca0/sJVMqPLkM966Sot5TOAw0xHSJDXfh8w+5pj6REA2vEGWEu0YzXgWrPw5Ei72hKj91N2sAXhU7awb5KHRYZvDQAykLKngv69OHPDkOF0/Q7eKVRa1Ij0XWXrvO1iItxbtogiR0FtUWCtq5/FBiZ4iXtkYAfbO2756VgLu6etOOjm0AknNbml3jMyd1+g/zy+thds1X6mzkK37igLwOthTrNHNUR5nLvcq3J8990=","1; MWHPR07MB3008;\n\t23:++5jTxjJsMeElMFaGJoFV9bFT+TsXQl4sG2kdJiHlAxneb/MKbHnsr2fNTk+yAuuTR5TLO9VFkAz+rrJPw3kbvqgQgV9kTB+op+4vobLIWcgvuIUXcEQTGqjfQHnYT5g6Ivs8Tkg9KGgBj2621T071s8imCb/rkwJ3OYa9qJReMDl538Yy9wkvEqqwOCnfPVj7bcs8fPtPbz1y09xikqAhX83ia3a5odBG56WXu8csPvVy0uhxWk4V8AS/v6KaevkBdZQzDLItim3Tnwk+w9X0f7xQvJtxseEOy82hsO29vNWgvdMXNttGPRsHs9r6YEbXMPe9Szsah0RSXlKjuFbmXf6vs1lHqpXbybAFJHW3ePX4Tk/UktxkbNfgPChnFilFBja4xDq2VTOIbIpgou0KNG+Zclf9C+SuwNokBGcG/GYUhsbwDM7y6+XZocoQ/hBcYYLD4+yt/cn0wBJGNbr+IgtfXxifck3hv0lmKn27wFar0hrzbX8ngcV7mgPR9UESerzV7wOKOX3FRctCPKHL6ymdrQUxZGKXgQ9iaiC42yAnyemh7S4gD1qWDSMqetKtZFQE1+kBtOulzP9RuRW5YqzXWpVf29S6OHiFSrA8SSj2AyOGo/ugy2xxgl9xgm7562L/oPTK4jfqRr6cKKTtvgtEpTQbhfn2C6YktutoTvKmjO1KCxVCl9+lQdpM8YlmBH/XULUZzb9rzSmZmsafM4szKaAnDCkWg6xk53qJoZbH+hc47sY3qButO5VebjG6gpR/zkv1hBJ/b2g5ogH5cyY0+55QGoy7GB9oFxQajHk6kNs7jKAn/Ml0dL4aNecI0n50NQQcnIsh8F8HajJCak1JHzXLApz/QngjzR8Wrbd40g6uGS3KiOaEgbxReJVL3lZzX9RufPjQdnY0iEoaShLGPMYh9TbD5AdwKZIOb6DfA0JGR0NxZmEbol9E83T16/5al06rqFjZjmNbBWo6jvsPAx6jwKmP8GrYaaSGFRe8LVB8SD1TWpZfSYPZfL9s8yD8jrLILs97WT98+L2PrVL3myzMASGFQqBby4zMyK786T43DflbjSE4zo+FQYGzvkYYW7kol8JVJpfVYXjkoTXoerU4cwvOtVuXjSkDe6h542Oqr/UEym8voEwUEHji5pYql1b3eVUIqR7h2CWI01qbzMKLFxKWK2wLsMyJU5loq+9lL2s64faI17yRWUfePT1PqFbLEYfrAFLF87vv8rWgQX/2b/DFuo1ovNm7oFu7FBoAn5AQMHase/lhQw","1; MWHPR07MB3008;\n\t6:06L3laE6xBWNi5ymUCvAEQSq98v2nNGCwH3Hk28o5haCTxfwgTBvRPxALXlbl7zl2A/kdrFcsszMOSpoqrKgIXaLKEJRiwgfIWYO+hjCnZqskGujjKc+rvkBJ0XhFvVkMB7JGKT09SaWUbYiLR6f0qqmv72dkRcYa5mZyH3N26kAoQGp9bqOpbpGxNKZbdFPu80xa38zQaJ5osTXXRTirMFlu19cXS1bZXgKcFbjm7roOf0vC/7RVG/pOoGvQ7scBZGMditfhJSEG0HJF6cD+M3zuFIfrEonC36I6hfcNpzyxsN/3CGOglozUJDnOkNj98aE554JiVFID0ZfagLVCA==;\n\t5:L0B+7cH/ZxUsjeJl6PJIwzYU7/4vg5EdRoX1lUFJRvcMtSdzp1023m7zYE2Co6J1QGP2eeHvQYb8DQ38iVwIgnDwBA8FEnSSaRtcSBk/n/P349TOIrFMzEpSGsF9ESJJmQKROA0pvYUT8PxF7IJK3A==;\n\t24:Lsf/2GFmEZQeCXncjphASMdR5NWtkeSUMOVjZg2aI5yAsTgF/MOBkaE49sNVhILaXjsPUw+vHlNJDidtZ/+CBw2zCVC+dKXqwf6PZDmyf5o=;\n\t7:h3i6SFfk1LImHzr03R21/w6Z6zsaZkrCLO8cgLmZcYWf6Ncvf6v73lgVcP+PnPIhPVrmJCsJ58uZqZcM61lQMHVn0THh9i7nl0pePm/LVCBCi7kYhs8GjdVZrWLzrCNBjVTXuVkl2s0y8azkt9J4n1/nTVbtXhZWLRQFOHWqPwPNWC9LIKe+rMGh8iW+H+N9jvsGZeyViMjAhwpZ0hbnnLSOpl14btSAKXWuqGY/uPU="],"X-MS-TrafficTypeDiagnostic":"MWHPR07MB3008:","X-Exchange-Antispam-Report-Test":"UriScan:(788757137089);","X-Microsoft-Antispam-PRVS":"<MWHPR07MB3008EB5182DEDB47A5DDE2C68A610@MWHPR07MB3008.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(6041248)(20161123558100)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:MWHPR07MB3008; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:MWHPR07MB3008; ","X-Forefront-PRVS":"04362AC73B","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6069001)(6009001)(376002)(346002)(199003)(24454002)(189002)(6666003)(61506002)(72206003)(6246003)(5660300001)(42882006)(189998001)(575784001)(6506006)(83506001)(16586007)(53936002)(25786009)(16526017)(316002)(4326008)(229853002)(50466002)(58126008)(478600001)(107886003)(106356001)(105586002)(33656002)(101416001)(55016002)(50986999)(54356999)(76176999)(9686003)(15650500001)(97736004)(2906002)(66066001)(47776003)(23726003)(1076002)(2950100002)(3846002)(6116002)(8676002)(81166006)(81156014)(7736002)(8936002)(305945005)(68736007)(18370500001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3008;\n\tH:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords;\n\tA:1; MX:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"20 Sep 2017 11:33:25.9798\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"MWHPR07MB3008","Sender":"linux-pci-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-pci.vger.kernel.org>","X-Mailing-List":"linux-pci@vger.kernel.org"}},{"id":1772045,"web_url":"http://patchwork.ozlabs.org/comment/1772045/","msgid":"<20170920103151.7e3fdb77@w520.home>","list_archive_url":null,"date":"2017-09-20T16:31:51","subject":"Re: [PATCH v4] PCI: quirks: update Cavium ThunderX ACS quirk\n\timplementation","submitter":{"id":4123,"url":"http://patchwork.ozlabs.org/api/people/4123/","name":"Alex Williamson","email":"alex.williamson@redhat.com"},"content":"On Mon, 18 Sep 2017 01:48:01 -0700\nVadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com> wrote:\n\n> This commit makes Cavium PCI ACS quirk applicable only to Cavium\n> ThunderX (CN81/83/88XX) PCIE Root Ports which has limited PCI capabilities\n> in terms of no ACS support advertisement. However, the RTL internally\n> implements similar protection as if ACS had completion/request redirection,\n> upstream forwarding and validation features enabled.\n> \n> Current quirk implementation doesn't take into account PCIERCs which\n> also needs to be quirked. So the pci device id check mask is updated\n> and check of device ID moved into separate function.\n> \n> Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>\n> ---\n> \tv1\t: put device check into separate function and extend it to all\n> \t\t  Cavium PCIERC/PCCBR devices;\n> \tv1 -> v2: update match function in order to filter only ThunderX devices by device\n> \t      \t  ids to properly filter CN8XXX devices, update subject & description with\n> \t\t  ACS register info (rejected by maillist due to triple X in subject);\n> \tv2 -> v3: update subject: remove CN8XXX from subject line, replace it with ThunderX;\n> \tv3 -> v4: update ACS mask (remove TB and TD bits), update commit message (remove\n> \t      \t  ACS register printout);\n> \n>  drivers/pci/quirks.c | 26 ++++++++++++++++----------\n>  1 file changed, 16 insertions(+), 10 deletions(-)\n> \n> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c\n> index a4d3361..e6b904a 100644\n> --- a/drivers/pci/quirks.c\n> +++ b/drivers/pci/quirks.c\n> @@ -4211,20 +4211,26 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)\n>  #endif\n>  }\n>  \n> -static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)\n> +/*\n> + * Cavium devices matching this quirk do not perform peer-to-peer\n> + * with other functions, allowing masking out these bits as if they\n> + * were unimplemented in the ACS capability.\n\nnit, the description here still steals too much from the multifunction\nquirk.  Multifunction devices can often support ACS with unimplemented\ncapabilities, which indicate that the device does not support the\nbehavior described by that capability bit.  However, downstream ports\nare required to implement certain ACS capabilities if they implement\nACS at all.  So the code is actually asserting that the hardware\nimplements *and* enables equivalent ACS functionality for these flags.\n\n> + */\n> +#define CAVIUM_CN8XXX_ACS_FLAGS (PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF)\n> +\n> +static __inline__  bool pci_quirk_cavium_acs_match(struct pci_dev *dev)\n>  {\n> -\t/*\n> -\t * Cavium devices matching this quirk do not perform peer-to-peer\n> -\t * with other functions, allowing masking out these bits as if they\n> -\t * were unimplemented in the ACS capability.\n> -\t */\n> -\tacs_flags &= ~(PCI_ACS_SV | PCI_ACS_TB | PCI_ACS_RR |\n> -\t\t       PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_DT);\n> +\treturn (pci_is_pcie(dev) &&\n> +\t\t(pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) &&\n> +\t\t((dev->device & 0xf800) == 0xa000));\n\nThat's effectively 2k device IDs, 0xa000-0xa7ff that you and Cavium are\nvouching for ACS equivalent isolation.  How many of these actually\nexist?  The PCI IDs database gets really sparse after the first 64\nentries.  Internally are these device IDs allocated to programs based on\nthe same ASICs or is this just a slightly more restricted crystal ball\n(ie. wishful thinking)?  Thanks,\n\nAlex\n\n> +}\n>  \n> -\tif (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff)))\n> +static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)\n> +{\n> +\tif (!pci_quirk_cavium_acs_match(dev))\n>  \t\treturn -ENOTTY;\n>  \n> -\treturn acs_flags ? 0 : 1;\n> +\treturn acs_flags & ~(CAVIUM_CN8XXX_ACS_FLAGS) ? 0 : 1;\n>  }\n>  \n>  static int pci_quirk_xgene_acs(struct pci_dev *dev, u16 acs_flags)","headers":{"Return-Path":"<linux-pci-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-pci-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ext-mx07.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx07.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=alex.williamson@redhat.com"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xy4yc0KCcz9t2Q\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 21 Sep 2017 02:32:08 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751998AbdITQby (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 20 Sep 2017 12:31:54 -0400","from mx1.redhat.com ([209.132.183.28]:44156 \"EHLO mx1.redhat.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1751378AbdITQbw (ORCPT <rfc822;linux-pci@vger.kernel.org>);\n\tWed, 20 Sep 2017 12:31:52 -0400","from smtp.corp.redhat.com\n\t(int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 01767C047B79;\n\tWed, 20 Sep 2017 16:31:52 +0000 (UTC)","from w520.home (ovpn-116-96.phx2.redhat.com [10.3.116.96])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 8ED346060A;\n\tWed, 20 Sep 2017 16:31:51 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 01767C047B79","Date":"Wed, 20 Sep 2017 10:31:51 -0600","From":"Alex Williamson <alex.williamson@redhat.com>","To":"Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>","Cc":"bhelgaas@google.com, linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org, Wilson.Snyder@cavium.com","Subject":"Re: [PATCH v4] PCI: quirks: update Cavium ThunderX ACS quirk\n\timplementation","Message-ID":"<20170920103151.7e3fdb77@w520.home>","In-Reply-To":"<1505724481-28413-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>","References":"<1505480233-22694-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>\n\t<1505724481-28413-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=US-ASCII","Content-Transfer-Encoding":"7bit","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.13","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.31]);\n\tWed, 20 Sep 2017 16:31:52 +0000 (UTC)","Sender":"linux-pci-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-pci.vger.kernel.org>","X-Mailing-List":"linux-pci@vger.kernel.org"}},{"id":1772550,"web_url":"http://patchwork.ozlabs.org/comment/1772550/","msgid":"<20170921083921.GA2135@localhost.localdomain>","list_archive_url":null,"date":"2017-09-21T08:39:21","subject":"Re: [PATCH v4] PCI: quirks: update Cavium ThunderX ACS quirk\n\timplementation","submitter":{"id":70764,"url":"http://patchwork.ozlabs.org/api/people/70764/","name":"Vadim Lomovtsev","email":"Vadim.Lomovtsev@caviumnetworks.com"},"content":"On Wed, Sep 20, 2017 at 10:31:51AM -0600, Alex Williamson wrote:\n> On Mon, 18 Sep 2017 01:48:01 -0700\n> Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com> wrote:\n> \n> > This commit makes Cavium PCI ACS quirk applicable only to Cavium\n> > ThunderX (CN81/83/88XX) PCIE Root Ports which has limited PCI capabilities\n> > in terms of no ACS support advertisement. However, the RTL internally\n> > implements similar protection as if ACS had completion/request redirection,\n> > upstream forwarding and validation features enabled.\n> > \n> > Current quirk implementation doesn't take into account PCIERCs which\n> > also needs to be quirked. So the pci device id check mask is updated\n> > and check of device ID moved into separate function.\n> > \n> > Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>\n> > ---\n> > \tv1\t: put device check into separate function and extend it to all\n> > \t\t  Cavium PCIERC/PCCBR devices;\n> > \tv1 -> v2: update match function in order to filter only ThunderX devices by device\n> > \t      \t  ids to properly filter CN8XXX devices, update subject & description with\n> > \t\t  ACS register info (rejected by maillist due to triple X in subject);\n> > \tv2 -> v3: update subject: remove CN8XXX from subject line, replace it with ThunderX;\n> > \tv3 -> v4: update ACS mask (remove TB and TD bits), update commit message (remove\n> > \t      \t  ACS register printout);\n> > \n> >  drivers/pci/quirks.c | 26 ++++++++++++++++----------\n> >  1 file changed, 16 insertions(+), 10 deletions(-)\n> > \n> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c\n> > index a4d3361..e6b904a 100644\n> > --- a/drivers/pci/quirks.c\n> > +++ b/drivers/pci/quirks.c\n> > @@ -4211,20 +4211,26 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)\n> >  #endif\n> >  }\n> >  \n> > -static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)\n> > +/*\n> > + * Cavium devices matching this quirk do not perform peer-to-peer\n> > + * with other functions, allowing masking out these bits as if they\n> > + * were unimplemented in the ACS capability.\n> \n> nit,\n\nput this down for later use..\n\n> the description here still steals too much from the multifunction\n> quirk.\n\ndescription was just moved (and  needs to be rewrited) since the orignal idea was\njust to extend quirk for all ThunderX family which has that limitation.\n\nWould the following be more suitable here:\n\n\"The Cavium downstream ports doesn't advertise their ACS capability registers.\nHowever, the RTL internally implements similar protection as if ACS had completion redirection,\nforwarding and validation features enabled.\" ?\n\n> Multifunction devices can often support ACS with unimplemented\n> capabilities, which indicate that the device does not support the\n> behavior described by that capability bit. However, downstream ports\n> are required to implement certain ACS capabilities if they implement\n> ACS at all.  So the code is actually asserting that the hardware\n> implements *and* enables equivalent ACS functionality for these flags.\n\nYes it is. The hardware doesn't advertise ACS caps which is desing limitation,\nhowever it implements similar functionality to ACS provided flags which allows code to assert this.\n\n> \n> > + */\n> > +#define CAVIUM_CN8XXX_ACS_FLAGS (PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF)\n> > +\n> > +static __inline__  bool pci_quirk_cavium_acs_match(struct pci_dev *dev)\n> >  {\n> > -\t/*\n> > -\t * Cavium devices matching this quirk do not perform peer-to-peer\n> > -\t * with other functions, allowing masking out these bits as if they\n> > -\t * were unimplemented in the ACS capability.\n> > -\t */\n> > -\tacs_flags &= ~(PCI_ACS_SV | PCI_ACS_TB | PCI_ACS_RR |\n> > -\t\t       PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_DT);\n> > +\treturn (pci_is_pcie(dev) &&\n> > +\t\t(pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) &&\n> > +\t\t((dev->device & 0xf800) == 0xa000));\n> \n> That's effectively 2k device IDs, 0xa000-0xa7ff that you and Cavium are\n> vouching for ACS equivalent isolation.  How many of these actually\n> exist?  The PCI IDs database gets really sparse after the first 64\n> entries.  Internally are these device IDs allocated to programs based on\n> the same ASICs or is this just a slightly more restricted crystal ball\n> (ie. wishful thinking)?  Thanks,\n\nThe latter; this represents 8 SoCs, the lower 8 bits of the DEVID are used\nto indicate which subdevice is used within the SoC.\n\nVadim\n\n> \n> Alex\n> \n> > +}\n> >  \n> > -\tif (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff)))\n> > +static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)\n> > +{\n> > +\tif (!pci_quirk_cavium_acs_match(dev))\n> >  \t\treturn -ENOTTY;\n> >  \n> > -\treturn acs_flags ? 0 : 1;\n> > +\treturn acs_flags & ~(CAVIUM_CN8XXX_ACS_FLAGS) ? 0 : 1;\n> >  }\n> >  \n> >  static int pci_quirk_xgene_acs(struct pci_dev *dev, u16 acs_flags)\n>","headers":{"Return-Path":"<linux-pci-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-pci-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"kltJ+u4h\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Vadim.Lomovtsev@cavium.com; "],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xyVQs4JYFz9t3v\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 21 Sep 2017 18:39:33 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751798AbdIUIjb (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tThu, 21 Sep 2017 04:39:31 -0400","from mail-sn1nam02on0069.outbound.protection.outlook.com\n\t([104.47.36.69]:45280\n\t\"EHLO NAM02-SN1-obe.outbound.protection.outlook.com\"\n\trhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP\n\tid S1751635AbdIUIja (ORCPT <rfc822;linux-pci@vger.kernel.org>);\n\tThu, 21 Sep 2017 04:39:30 -0400","from localhost.localdomain (50.233.148.156) by\n\tBN6PR07MB2996.namprd07.prod.outlook.com (10.172.106.14) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.77.7; Thu, 21 Sep 2017 08:39:25 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=65BuPev2c2xGiak80QiF8ckNNcmIiXUonGfPSGXs7ds=;\n\tb=kltJ+u4hXC2ZyppfyKqM2ldCW+ZMxCT6JgX2HqwptrZ/2BC00L9cKGmXQCsMI+Bu54k2PAWv+D1eVRpHmeD2OM30Q6eCchuvnWkaLzqSjHn8iby9f5kKW71GGMELphE47056CCQXvtdlKoZtXOiqQLaSyI0LKODnt80gRBEOt/I=","Date":"Thu, 21 Sep 2017 01:39:21 -0700","From":"Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>","To":"Alex Williamson <alex.williamson@redhat.com>","Cc":"bhelgaas@google.com, linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org, Wilson.Snyder@cavium.com, jcm@redhat.com","Subject":"Re: [PATCH v4] PCI: quirks: update Cavium ThunderX ACS quirk\n\timplementation","Message-ID":"<20170921083921.GA2135@localhost.localdomain>","References":"<1505480233-22694-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>\n\t<1505724481-28413-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com>\n\t<20170920103151.7e3fdb77@w520.home>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20170920103151.7e3fdb77@w520.home>","User-Agent":"Mutt/1.6.1 (2016-04-27)","X-Originating-IP":"[50.233.148.156]","X-ClientProxiedBy":"BN6PR1301CA0006.namprd13.prod.outlook.com (10.174.84.147)\n\tTo BN6PR07MB2996.namprd07.prod.outlook.com (10.172.106.14)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"60e4e1da-28e8-40b6-89eb-08d500cc4433","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BN6PR07MB2996; ","X-Microsoft-Exchange-Diagnostics":["1; BN6PR07MB2996;\n\t3:t2i4cbP5PP8lXlXBU0TTgSDrdnt1ldjbt/+mcN5ZuK1m6wnwibVzZAbVoZJ8ogkUoAujhZVUuJi88pcBizcm6twZmzrhAq6fTkPzpzkdBPrFollf1ZULL7KC4nF52nZ5zH7MFoLbj7PVvkI+0WCZBQ1QxWrc0DaP5TwZjA0x5wSFHKO1hqccGTIlMoOKaZxlcyl4CabmmtpqyIqBtBemmP+1MdPr5JnKZPbjGd2O/aw2fcnHiqMl7To0ASmE3BSM;\n\t25:+U3vzQvSEAVOPFJNO+7UZOh7MowVuiuW32kdSPcQWXP2PCvLCrX/LwPwfN4JByR45bIvw5ffzARhfqbkO7tCnkKBPMFYvd16VMHvCi8cDUZJCPBWD4mXi92Xy9yRxm9ws2DuGzLU8QGhSaieXqQ+4LsdFLoylHi65oqZc5uQzpTNcLHqETjwytQ2WMTOATYsHpKxrsdxqGsUFXQQ/+5cLs9ShxN5i7G0a7+lD92Pisg930W5W8DqSSvIlXahNjCtgLw9D7OiUKZR27Hq5g99OuwQ9bPYAOFAhz6Jo4qVXJsihN0kMIBz48U2cRVSyTlhAn3mCn9xHVkWG/VhpTAUFg==;\n\t31:nvLJgr0k412Mqh1DgktCLoYXsf3aD345p/ehlo2jZTOpUcQUaT/I0nzHYEjYs/+cf+foeaizCberjej2JCyEe1DK5ffvXoIG857bLdnmfIPluQRVSgCiwEBoCsk6WBpghsGGYhSRJcHZzdrIhKiJJBp30aZxUEoVvoaGwh8Dkhzo4/kh/VcLjkteOfcv8RD5e4mJwF6/RTX1cYsLAj6bOoBMMxrsmLxtWcRTDJpuFCo=","1; BN6PR07MB2996;\n\t20:60a67WxsO32MM97ns3v0/v6X7G1VYzgtZArzh6BcVp2sJtq0+LK3UcAu3+e9PuAzGxq5mhwZRbnAbPK6S5pziwG7Kq9+quKcSQnRgo9pv4fl/55cmB2c5kDcuTipDH2LaCcc+g6Cl29wwfWvwTIxdgZpJTmkgvn2AD4HiMXUKb2Twh0hBDPgX5aLP8ejETAm6MP1TCLvd7WB7yHiblX2fPXUPF+j1NDvk6VDQKeNqaXpQ2Cj7SMf+4EkGRscb5/cukAvGNS+/mTqY8FSA2Z+VTfMCspXWENq0/heaxDJ/NkRyACLTNsTtByLUV1T3nzRYIOwy4TD/qyyJTGgW39oXz2lrHG/KLM3a6LwbOzQNUdzpaD+hZq5byvQ869v6UgF6y2y8gvX3Sq0O0SoY5KCL8CtVpLiPcmrIlFo8CQH64E7jCfi1wsN1O6lNym7erNGxQ2FPypODgvpcL7XcYWuxrJwq7UTuLOGdw0nHWMbaIqBJ96J+Jq5V4+KTwxGrdXJoWJyEN1As9KqSwvZzHdpdt99opszdmVQMU4MDOzjb2EoZHhfCLUGfJdAWJB0s1h+EI7jSzxQMkGrMYOztfdoXPzk8CulelizLxptwYN1E0s=;\n\t4:NoN6Px06cV4RZz1MHMHbWPit2zP90S1RxYrL+ApE64vxEh7GNImADAmO+lgXXPxK8e44I72r9dgXCEKld/tBvHYajtbc1og+prMzbYOGzJedcizconyI3B2EV0oXwlmQFwqFovh1zeG4nubLOrnv91cuLMQXr2RzZLakVwUHsXZpWaESpiSA+v9JI+INNBdnbVqch8uwnrbB6a1rfiQv/7+LHCdnT9aff6uUp8BPwabY1ZKMPeMNzAqSSJnGhpQLmEWlqCfGG3p5AOY1oTEvsp4ORVjOEW7SNMlRZXc4Mlo=","1; BN6PR07MB2996;\n\t23:aD6EQPeXGU+kdMTO0zX4IVGRWDtMJTgYmtiqvcNhmVj8MHLdC9hYMbp/u6I1alC15o9SuyKqtdkfdr8GS3KgEgWUC9Ym0rFyJm+MmVUBf/YnG3bYXwkVULlNi3/dTZewAE9NCtKH7s0HT0yokjKlUVlRFYmg1t3gk63WQtPIBCNWyzPfoh/BUwEzv+8XaiEcBrNWO5myC6IkYEfLjMoe/BrhBU+NsbHkxq0Xi34PQQHk+nXIRNOOEvM3gRZabOiJKYxZY4ftL4PfD7r3Hq2pDyLyTk2pahwtfwxRxhLeBsnHKTIKGDvAjIddVjq69pNYFQA88Ejy9Wp439cSxe3V4sRH9XXhFp7/nci9PHIbThhYjfHcW1j6rIyhlxsXt5P3ZQpwlnYbXWBYMo1HpKtLPuso5lSne6wiSql9EKoN1PMhH4/anMbrAo+WbhnXTdo9KF/yIOVv0pIumoVTEJfRVPsynYHBCzQB3o4PQvsbK/AK3+5b2rQJ+Y/KdVVBImsTNbr7yTaGfwzqbk4vr1PgM8vLcFaLud/122H5zys+Z78lKlyegAYMWaWWhGgN0ugDmIpIW+4Lr72JYWLaEBSkobqWn6tBo79clw6ks4EhH067WJcsBCL4GQnEGBsjRqWKI5to+jtdV6iZjquyCXzVzoAgBSZfTpag8qBxDb0argbdxDU/vQ6Uv2B6XRFXUKdkn2j4XNrQrgqgBunLULlKDcGYMtVRxyiqSVXPkuEUKVu1ylSU63J83cNLfZQsiu4ziPFG028HjvGVBbub5tijP+XIMIyKdQ/MWzPwHKG/X/pkeFxyUCg0P9Rtqz+3yCW4yrVem3jOfP7wandNshZ/A82gONQNcy/0bvZ0ggC4QTR5waCX0551k8j3+ANqHfI7DfysmAd5YGSkulzWCAGL2RpGopJGgIxegMD3L5UXLAzP8NldB+HTv1i7G/LgYud24pU3fBW7bdOt2e7iewZIQHx3Lv5hGKILlfojSE1E7qzcL4UffZ5QTmjBvLSYY+tXf+8kHqkdPQuZq16T6Wyh7TBljxRKHpTxvHnlpso/0Ib0qHSpnxOFRput65YfA/wNNYf/eEcd371aOzM+y1V2ghZoKERTAbYd3+A27QUjrCL6fXXbNEwO0OHVY6SxTVpKXQXTKz5gor6RlfEbmntejklovd1hH3ahAb6dZeH+qC+0EZd/rpLw5uWKH9GZ8FTNRhfu8FvsS/OEWt/c3FWvouvxB9AWht70E4Ahp3pDHm8cirod10ZCFD5gacw7wlSr","1; BN6PR07MB2996;\n\t6:uXyhv3iUEVKD/R/C4dsfAgBok52X7EgZt3QiGsOI14MESH+sz0HtoWKNWDl5RSeJkeq3RwDqKFlmAQkLg838mbTVtS7uFm4PfngGOfUfeHY42kipTVSFyhraIQDHBVr9TbE52S99PrWI4Eng9ws4Lartvb/5559fMhfNDYA0yYCyRoBdrkUiskhJwD9uSC0uOsYXt2j2lmhBTx+AbjWXEG5/8F1weHWYW7WNlzELxFKYOatBC8TGw+wj/onU0R0CozyxWreiaUoKvIw/sXrK2cJy7CSthFcX3behsN7rSx+Rs9iPvWIkBYQNrPSv0W4jmMy3v8hAiC0XAoIhHB1A/A==;\n\t5:/2/Gzht8u/ze9fR/D6rzW5HKbdhlhhcy5XLLoiTDErbZS0VgmjgUs/Pw0/c+I+pd0XoKDhms+pSqhV0QOy6Yf75w3VKPCasfE3cfJHPrhGVwUDP7M6OMLC+EA5jeZGv930g12BTyIniZgAdHlTpCoA==;\n\t24:szda/mZBdCmKjnUKLQjS9D292ix7mshzfZFujUzfYhpjX9j9HCwcHcSO2h/hXQS3DGItqsq+TuayUhUmety1+uGy1u2NMLPtNTRUAb4ep+k=;\n\t7:mM7Y17w/uB02Gr0B4fktusHnJWAvuLO4qagyD7fHuO8HHBYagY1i585Qk5jfLYCRXFY63WRzV8M126dn4PYSmcNCKTYuiTAElJCEUI3PT4WRh+x4JkS4enlMnE6UpNOJWIoZZrZZuyh/BQktdhVI1CN5jBAdhrzXR7T8rFI7Qd+uaUOmElQ/NktDsxHNdVhaLzDMG1rQRBq6JMoWMpk+FIndLC7kDw9Tz8CeSLMEjOo="],"X-MS-TrafficTypeDiagnostic":"BN6PR07MB2996:","X-Exchange-Antispam-Report-Test":"UriScan:(788757137089);","X-Microsoft-Antispam-PRVS":"<BN6PR07MB2996F7886BD05863A443B1AF8A660@BN6PR07MB2996.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(100000703101)(100105400095)(6041248)(20161123560025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BN6PR07MB2996; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BN6PR07MB2996; ","X-Forefront-PRVS":"04371797A5","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(6069001)(376002)(346002)(199003)(24454002)(189002)(2906002)(6246003)(6506006)(23726003)(81156014)(97736004)(3846002)(8936002)(105586002)(6116002)(106356001)(316002)(1076002)(55016002)(9686003)(7736002)(305945005)(58126008)(16586007)(16526017)(575784001)(61506002)(6666003)(83506001)(53936002)(81166006)(33656002)(66066001)(15650500001)(47776003)(478600001)(101416001)(54356999)(8676002)(25786009)(50986999)(76176999)(5660300001)(189998001)(229853002)(6916009)(50466002)(2950100002)(68736007)(42882006)(4326008)(72206003)(18370500001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB2996;\n\tH:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords;\n\tA:1; MX:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"21 Sep 2017 08:39:25.3943\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"BN6PR07MB2996","Sender":"linux-pci-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-pci.vger.kernel.org>","X-Mailing-List":"linux-pci@vger.kernel.org"}}]