From patchwork Fri Jul 28 18:50:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Feng Kan X-Patchwork-Id: 9869243 X-Patchwork-Delegate: bhelgaas@google.com 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 5014E60382 for ; Fri, 28 Jul 2017 18:50:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 23AF3288F1 for ; Fri, 28 Jul 2017 18:50:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 186CE288F7; Fri, 28 Jul 2017 18:50:54 +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=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 964EA288F1 for ; Fri, 28 Jul 2017 18:50:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752566AbdG1Suw (ORCPT ); Fri, 28 Jul 2017 14:50:52 -0400 Received: from mail-pg0-f54.google.com ([74.125.83.54]:36929 "EHLO mail-pg0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752229AbdG1Suv (ORCPT ); Fri, 28 Jul 2017 14:50:51 -0400 Received: by mail-pg0-f54.google.com with SMTP id y129so114307701pgy.4 for ; Fri, 28 Jul 2017 11:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apm.com; s=apm; h=from:to:cc:subject:date:message-id; bh=gS+xFHnZ59oVnAY4lUe9VpePY3H0QXpt7oA2VYhI9g8=; b=hTBrYh233z32vCYj2G3NhdtRaAh+8XAMdY/S3UzsH9Ve9pzIemlYc4Z47S0CAkQFnx j8Ui8jWuy21oUwPStV7CS+fNDuJMofDGA7T/jDK2Wswv0qcmjvaoGFwfbRvMuZkqNZcW 3DTX7nDASaFG/s6CCjDX3U4quHphdRezRZaZ4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=gS+xFHnZ59oVnAY4lUe9VpePY3H0QXpt7oA2VYhI9g8=; b=EeITSru2PkmByg3CaqstBW3MYSOpxgHWhb9kO18CcvjmReAdBKHlBXpGNP+I1DjtqX XvAlH8hg12fD8KRw+DJXU33/y9UXXNAiiTJd7AmSHVjlWeuId2dzFBXeZK3i2HhvrtVt 78OgKr/5QShR7ZhkIQ3sooecmzlcqfFaQWXPqR8LhJX8KhR7ERuLEq3UsbgMVpQ3JjJI bUP+7Nv1rOKrfvimzXgP869gpoQK9RcY3DGevJ20JnW2zmBLvNwHF2nHHPcZgxxJlM2c PjvvRphDWv3fs32GWqYRCNfEtGB3pqPgEc0P/uC1MPdoYJaT+DGHSdTBx5O/+7Y+VfDv +RxA== X-Gm-Message-State: AIVw112udSkX1VjpMr/3Cg6gXPcFYt+IgXPkrHqY9zS0EGEWgkzZzy7l Bd8je6E+20h+geOLFAo= X-Received: by 10.84.237.2 with SMTP id s2mr8622515plk.70.1501267851347; Fri, 28 Jul 2017 11:50:51 -0700 (PDT) Received: from lanzi.amcc.com ([206.80.4.98]) by smtp.gmail.com with ESMTPSA id u26sm23339418pfi.140.2017.07.28.11.50.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 28 Jul 2017 11:50:50 -0700 (PDT) From: Feng Kan To: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, bhelgaas@google.com, alex.williamson@redhat.com Cc: Feng Kan Subject: [PATCH V3] pci: quirk: Apply APM ACS quirk to XGene devices Date: Fri, 28 Jul 2017 11:50:43 -0700 Message-Id: <1501267843-8095-1-git-send-email-fkan@apm.com> X-Mailer: git-send-email 2.7.4 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The APM X-Gene PCIe root port does not support ACS at this point. However, the hw provides isolation and source validation through the SMMU. The stream ID generated by the PCIe ports contain both the BDF as well as the port ID in its 3 most significant bits. Turn on ACS but disable all the peer to peer features. Signed-off-by: Feng Kan --- V3 Change: Add comment regarding unique port id in stream ID V2 Change: Move XGene ACS quirk to unique XGene function drivers/pci/quirks.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 085fb78..0f8f1cd 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4120,6 +4120,19 @@ static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags) return acs_flags ? 0 : 1; } +static int pci_quirk_xgene_acs(struct pci_dev *dev, u16 acs_flags) +{ + /* + * XGene root matching this quirk do not allow peer-to-peer + * transactions with others, allowing masking out these bits as if they + * were unimplemented in the ACS capability. + */ + acs_flags &= ~(PCI_ACS_SV | PCI_ACS_TB | PCI_ACS_RR | + PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_DT); + + return acs_flags ? 0 : 1; +} + /* * Many Intel PCH root ports do provide ACS-like features to disable peer * transactions and validate bus numbers in requests, but do not provide an @@ -4368,6 +4381,8 @@ static int pci_quirk_mf_endpoint_acs(struct pci_dev *dev, u16 acs_flags) { 0x10df, 0x720, pci_quirk_mf_endpoint_acs }, /* Emulex Skyhawk-R */ /* Cavium ThunderX */ { PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs }, + /* APM XGene */ + { PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs }, { 0 } };