From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755256AbdJIQPD (ORCPT ); Mon, 9 Oct 2017 12:15:03 -0400 Received: from mail-by2nam01on0060.outbound.protection.outlook.com ([104.47.34.60]:31451 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754942AbdJIQPA (ORCPT ); Mon, 9 Oct 2017 12:15:00 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Date: Mon, 9 Oct 2017 09:14:54 -0700 From: Vadim Lomovtsev To: bhelgaas@google.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Wilson.Snyder@cavium.com, vadim.lomovtsev@cavium.com, jcm@redhat.com, alex.williamson@redhat.com Subject: Re: [PATCH v6] PCI: quirks: update Cavium ThunderX ACS quirk implementation Message-ID: <20171009161454.GA20316@localhost.localdomain> References: <1506344920-24016-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com> <1506536439-29318-1-git-send-email-Vadim.Lomovtsev@caviumnetworks.com> <20170927141854.2ff65c73@w520.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170927141854.2ff65c73@w520.home> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CY4PR1201CA0008.namprd12.prod.outlook.com (10.172.75.18) To BN6PR07MB2994.namprd07.prod.outlook.com (10.172.106.12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ecad3cc9-7b92-46b4-dd34-08d50f30e2fa X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:BN6PR07MB2994; X-Microsoft-Exchange-Diagnostics: 1;BN6PR07MB2994;3:9mSdZjMGtgBGBLZtEGU4kPZ35LJbM2JaSx8BeA/CBmWuTKFtoVhsAL6su3Nn/3QxkHgfMrSzGJ02s9uhYcGNbnIS76+aI5Q8+6sd9xoKmlv8f0M8PGGS9GJkfY9j/1WuYPNpxF6ndYN5F3SYbfMfY9pOv1QdyCTUxn8vNroNQDLDQZuqcAG7JzXhW4pJdNg4OqTkdB/IqPiTCiJYP7OvnqGLwihSKZhQYRBRUpvPfulp83zZhJXwfM4uI4et0eHr;25:l58uO2taZ7jt7sdQBmGcI7rIi+yssiagbo4tnTKm+j22PWbA0EK4A5+14muvg2VX10RzGlVeqtGoL2l4jrtEFUxgrRz0fWWypT5WnzhB76L3cF3gVnY8OQtr5l6LQiAAFbFDK/pT1inowroVuLiCQDhIqKzvzhyxGBQu1jItnSamBvtfc8SyU8l9xz30peeWjC1IqVAYgYH9VcnVCi0nPucxhAsSXlxiLf5m2MIuLdz3oSftypwyY9H/daDEBF0phLPXmkGJTtEnC317Kpbxildd/ZDfDa/tTKIcrh0TqvOPjTaEh/G0rEYoJhMOzgouBwPAFJJ/Z/AFPnStN7ISZw==;31:pkcDtG0/fTSDeFONW23lEehDQ3mpRI4IcCvJKmIjSwfKrUAG2j9fOEmZVx8+XPe9hofnH43ZvzpEuhsHVQKYUuVKeZ/+fcIviq9uqbSwC01pWAZn3moNSfjw/r5ZDVVa/epShWFy9H6DpEbuZmWnFKyqRkJkmuT30ABFK1FQu5re5e8NMgVtELB0ds0nygpgb/HA5v9l8VCxAFEcwCWWLFqiXDpu12kapbucCpwEcrU= X-MS-TrafficTypeDiagnostic: BN6PR07MB2994: X-Microsoft-Exchange-Diagnostics: 1;BN6PR07MB2994;20:HPR4qOO/gjJVQ4qStjjXEWFtRScRXXvxtqg7LoVX1GY6RKwz2zV7cWz2EJxm8l0HUWmehMTtvpSy0GtFPPGFXhN5GmIQNmiSnqDCoIBKLzJBkx65TBZmDT/WqOPWibol7szQiPeQXRaQScD6c22WXJ9kZc1tWs1NR4I4iTg/0KrXKN2CauJMmbwKp5yalSULsxKERV9veuyKj0npoPArth+1OL2l0DSsxxKJBnhSZfcWoFlR1G7HpwVTltPE05lzL0ihMAsTSzA00RaA7qgD/r9eF+bRO74IUevjs1/+tw09dzzDt7cx2ZNU23zrzaXWcMaGTQiiHWpgQGyV/X9vBudwNZCVsEkfH0m5N5ix/zPQd9S2+WefHccf7olQ1aqF1X+xK+tRaP4hOJGEg0MZBTZdQzIckhdQ5dwrZSOS1yCAg3B/XcU3Jwzyj+hQTXOPTmb/Pge8dpkbEga6hM+8Yc3vuuJi7EliL31XU8J4WiMA1SizNbQACbgcbmhMIMYUUwKoCRAke4Wjl5FwAjtdmRTiKWAA8dZQo5nr/bOD1pMiqp/uCTgMACA/RygixawhZkuOE96oeuYEuzO8rEBDzwJVbizw7sW3bFfpy/vi4dc=;4:8Stxc7L49kJDA1ZcziZ6FFaYZFS0UbGqKjyR/sSJ0TGjnJ03pXm14XLAv7CQLFrNHQ41C3C+4wUcER5lfTGngYElcmT9hKlGT+OFTaC5QnqKQWc4td0co6ZhL2XbPHLvedGP0vvDC0eDNzoJ2U6PF/1jn8siuc1JQtr6fNJ/2N+WpJmyxtTwYt186cVsiJokVPUyEhbbnwxCPGv9HhtRSIDePf11WC3DnJ48TbFS09fKQPZKegcdUQ1O43Fpplgz X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123558100)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BN6PR07MB2994;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BN6PR07MB2994; X-Forefront-PRVS: 045584D28C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6069001)(376002)(346002)(199003)(189002)(24454002)(2361001)(478600001)(105586002)(316002)(16586007)(6246003)(6116002)(3846002)(6916009)(2950100002)(42882006)(23726003)(16526018)(1076002)(2351001)(15650500001)(53936002)(68736007)(81166006)(229853002)(575784001)(81156014)(55016002)(58126008)(9686003)(97736004)(2906002)(54356999)(76176999)(305945005)(50986999)(5660300001)(8676002)(8936002)(50466002)(47776003)(61506002)(101416001)(72206003)(6666003)(83506001)(25786009)(4326008)(6506006)(33656002)(7736002)(189998001)(66066001)(106356001)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR07MB2994;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR07MB2994;23:4Sg+jUUhQst3cmkYTY1d/x98yai23z+lTpGEdHwp1?= =?us-ascii?Q?uXWatkVL9IUPJCXFJG//93uvAoQteC1LX+RTGO3NafUoAXugz/ip/mDe9biH?= =?us-ascii?Q?ZzBXDixH4T40V086oZKBvR1uL2MhX0I18zy+CWnuDbCVsPKCeKHVvLRVokLq?= =?us-ascii?Q?eKxVx1z8g6Qyy4oqEAZW/js4NobOtFK9KUMw7IAsqqqBE6x6plDys2QD51fd?= =?us-ascii?Q?yF/FEqEOWKiUSDP5DXWPoTGdcVIhMTsieYnL7Se8iQVjoDrlYAQcMxIiM10d?= =?us-ascii?Q?ePi8gR/CJGTFsV4PaidoYfldfevirqdupI4v1lxbW15WY32m7fkGY8iLdYDP?= =?us-ascii?Q?fA0FvodP9zqN0d1+TcSlL1TFAsoz5kd4qGX41ZfE6xl1wO5O4JX0bmxWcAOa?= =?us-ascii?Q?A/3MQy1+Sqq8jgObXaxM1kCss+8fjrRX13peKIjw/VTniqmT6hWjMSJsqK5c?= =?us-ascii?Q?IOPNkPrUxZgPH/eEzBnnlmIVspG3UyZVe93hK8lFBj/ihOYTNRTcvQMKEMk6?= =?us-ascii?Q?hvgU3cake5muQOcYTD7cyWULdmyj44gQjp0U3DymmBN1aHzP5QqU6iEEBA7S?= =?us-ascii?Q?fCpJw9mZZ1ScFJkgSP0i45Mts+RLcnptrEM/eC1FWkSMK7nZsy8gAiJaoc9q?= =?us-ascii?Q?8WMM805/k0oNf2rphMMBWVFW/zCtPUyFVb2x5xFY5LylaOyTqffWusNVpXxl?= =?us-ascii?Q?VBkqwF8DlIJ9B0V7TBd8RpDGyS4rUOzB7Fdx/DHwGsgGUwuUgQ7YRoO4+cp6?= =?us-ascii?Q?ylWpoq8aPux4HA9bqTlcKJc6VQiYLtHxZbETqgBprt4zZ4nvGU9+Obv25lKE?= =?us-ascii?Q?YGvwDkOI611J15bdZ6zQb01GCVX5cukWEJ+Wzw14XS3gT1HzWqR9ecYsbrrV?= =?us-ascii?Q?Cf8TAvc3RRWYVyJqY3K3Q4z1gpxpOQcp6PZuZ7ukKAa8jNwGHJly8jVP90RR?= =?us-ascii?Q?AIg77mEcTkCfZLFZlZeUwFCwPDrmLaO+RGTZ2zNEAOqmBYLfcOej33gD+xyX?= =?us-ascii?Q?ys0xPnrCXUn27ooQN7s/LkrpD9be8TapPImt5RJ/vP8XnSffNWgjfhAsuGZn?= =?us-ascii?Q?OyTuAMj7Kdw6fKHBq8K2NzlhbAlmHc85mqbE+6olt4yIy7nrVO3ys5SOM0rN?= =?us-ascii?Q?XiCfIOVSkHALmHDKDhnYG/b2bqHVSLmxTh/g4v1FGxASPZJy1wA7VQIvXag5?= =?us-ascii?Q?GbRtxG//5b0chJoLYe2cTzXH4JCtvftObqc/ceNAyDFXnPOenMuDvIa2/cQq?= =?us-ascii?Q?zysLS7GGbczmKme61vq3GTiwZikXny7dh/rzv9TiCUhlj/NCmv+Uf/ivuIrW?= =?us-ascii?Q?ddEujHnkqnYMdZxDTHkyKY=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR07MB2994;6:x641dUBVvOfu4xOPRLw5lHh71hxIurKs3h7brnKzo3yHpPVxpu42AxvTk/DER6YS08N9XbywFAhdDBN1wSMTWT5gr7x+ObM3MOuNII6W743hSbBCWowI8mfVC3bAh4g40PVkB3wm0x9TCnhl2d3kVTJO+bmdG0hjtk3OAuxL8Fb4gjx1nyM4zhq9aG7ACFGSa0O0zuEpUuF7A0qJVhkE2PAFEBq0J/cMwaRK5KmO0UcsmbCLcLY0Qegs7ERtAvae397a1Dw5CjMmW31eNMJ/ftsDXmZ+y0Je3iUZkzxYTwt7k4cCLkpPKgpVCuIfzAle0aCLOMQqnfNjvqh1pP649w==;5:Ow4EBSPVPNMKDnOrRf11jj4lhik0jY7mNs/eXAuhot4PwHBlM9CifX0Xh+BTbePwX/Mm59Zw/7lbf05TReBj4mTM34QrVse53VYI9QeObrQCYz0hrCsdwQs+UURAs7ngIr1pZPgM3HogPKYBQr4lfQ==;24:qXYinzaHztxILPTGxPrU9gf5KiO/m865nLyVdoQXQWlQRjxUSVPAlQzXp9ZSVPrMKCcb9h3FDru1i1yg565WkIDGgeogaeoNgAnw+/F6EYY=;7:z0QNvnio+/wl6YRtqXzrdwFAHrbpvEnGqAwgREIrwlZDVBukNAaWKHFy0Dzwh36EdsnQeBU6GBwRhouhyDqQSVH24UOqouvA6XfjkQAjK71+wbGMdwFWEc+x12csHrxxpeBvk5Cp40nEqJhP9k3mHOxUvUtbBRclRM0591/3nRX6s2rVgl/zT8OvcaiZhuXyw8QnWRCZ/OnmaSpG3d/+w63n8PS/2k7cLdUm/DOE9sA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2017 16:14:57.6135 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB2994 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Bjorn, Would you please consider to take this patch ? It is required to provide correct ACS mask for CN8xxx PCI root ports. WBR, Vadim On Wed, Sep 27, 2017 at 02:18:54PM -0600, Alex Williamson wrote: > On Wed, 27 Sep 2017 11:20:39 -0700 > Vadim Lomovtsev wrote: > > > This commit makes Cavium PCI ACS quirk applicable only to Cavium > > ThunderX (CN8XXX) family PCIE Root Ports which has limited PCI capabilities > > in terms of no ACS support advertisement. However, the RTL internally > > implements similar protection as if ACS had completion/request redirection, > > upstream forwarding and validation features enabled. > > > > Current quirk implementation doesn't take into account PCIERCs which > > also needs to be quirked. So the pci device id check mask is updated > > and check of device ID moved into separate function. > > > > Signed-off-by: Vadim Lomovtsev > > --- > > v5 -> v6: comment typo fix: change 0xa00 to 0xa000 > > Reviewed-by: Alex Williamson > > > > drivers/pci/quirks.c | 29 +++++++++++++++++++++-------- > > 1 file changed, 21 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > > index a4d3361..ed6c76d 100644 > > --- a/drivers/pci/quirks.c > > +++ b/drivers/pci/quirks.c > > @@ -4211,20 +4211,33 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags) > > #endif > > } > > > > -static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags) > > +/* > > + * The Cavium downstream ports doesn't advertise their ACS capability registers. > > + * However, the RTL internally implements similar protection as if > > + * ACS had completion redirection, forwarding and validation features enabled. > > + * So by this flags we're asserting that the hardware implements and > > + * enables equivalent ACS functionality for these flags. > > + */ > > +#define CAVIUM_CN8XXX_ACS_FLAGS (PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF) > > + > > +static __inline__ bool pci_quirk_cavium_acs_match(struct pci_dev *dev) > > { > > /* > > - * Cavium devices matching this quirk do not perform peer-to-peer > > - * with other functions, allowing masking out these bits as if they > > - * were unimplemented in the ACS capability. > > + * Effectively selects all downstream ports for whole ThunderX 1 family > > + * by 0xa000 mask (which represents 8 SoCs), while the lower bits of device ID > > + * are used to indicate which subdevice is used within the SoC. > > */ > > - acs_flags &= ~(PCI_ACS_SV | PCI_ACS_TB | PCI_ACS_RR | > > - PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_DT); > > + return (pci_is_pcie(dev) && > > + (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) && > > + ((dev->device & 0xf800) == 0xa000)); > > +} > > > > - if (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff))) > > +static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags) > > +{ > > + if (!pci_quirk_cavium_acs_match(dev)) > > return -ENOTTY; > > > > - return acs_flags ? 0 : 1; > > + return acs_flags & ~(CAVIUM_CN8XXX_ACS_FLAGS) ? 0 : 1; > > } > > > > static int pci_quirk_xgene_acs(struct pci_dev *dev, u16 acs_flags) >