Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933129AbbLCJzN (ORCPT ); Thu, 3 Dec 2015 04:55:13 -0500 Received: from mail-by2on0099.outbound.protection.outlook.com ([207.46.100.99]:35009 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932645AbbLCJzH (ORCPT ); Thu, 3 Dec 2015 04:55:07 -0500 Authentication-Results: spf=softfail (sender IP is 66.35.236.227) smtp.mailfrom=altera.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=altera.com; From: Ley Foon Tan To: Bjorn Helgaas CC: , , Ley Foon Tan , Subject: [PATCH 2/3] PCI: altera: check TLP completion status Date: Thu, 3 Dec 2015 17:54:48 +0800 Message-ID: <1449136489-2559-3-git-send-email-lftan@altera.com> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1449136489-2559-1-git-send-email-lftan@altera.com> References: <1449136489-2559-1-git-send-email-lftan@altera.com> MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD050;1:50KtAsMOuian08h+XLa4WhIgH84EPDkKjL3Y269kVcItH8uK5D52+FSxR4C6yhvad7okebFDA9d0vD9u51CSdC4woE6f+ZtpURlpgL4cREQnkNJ2ldWsjNKEphzAblK7kyfCB3ktouglp0Cu60kdg4y2dCnW3cwaVrVJB9me2dGMnWigfE7kDfUxAZdDf9w3qNDSmjOuw+YUnagJionAVeyt/kxQk72RMJS3+jnDeR1Li/WQXzNK4Shw4Gq69czajiF7aTLsYrmd0zLA663mxyLf6sRXll6HtzBvbLNDSegTdBKRntPj5bqYAx14zS1iE84T9fn75cN2XlCpPCAvf3olPWtKOx1/ImnM5+7xBQRIqCmx9HApQ9R4mbdt+PoHUtk8a4hbLvvkGyq2Y5VUgg== X-Forefront-Antispam-Report: CIP:66.35.236.227;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(189002)(199003)(50986999)(5008740100001)(33646002)(76176999)(11100500001)(48376002)(106466001)(6806005)(2950100001)(5001960100002)(189998001)(105596002)(1096002)(42186005)(50466002)(110136002)(47776003)(1220700001)(19580405001)(19580395003)(87936001)(81156007)(229853001)(97736004)(5003940100001)(92566002)(36756003)(86362001)(50226001)(586003)(7099028);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR0301MB2070;H:sj-itexedge03.altera.priv.altera.com;FPR:;SPF:SoftFail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB2070;2:Z8dAE8nlcLFm+ZThojGI/ad36eK0RxISdflw9onzJmFOJHk0/YqzHCvooZONTN6qJTxFRBYUSaxN089+crOlkS3wdbwoZRvV2d6HohFbuLCNbirsboe34dUZjgMcVe+vRS4bYKnh5Q6llcsJAQFMjA==;3:68ri/Dy4s1xCXbbWfO02p6xLBtF2LLFSgPT0ZJbF96f9VwcZdWsGQRR9cz2P+0JAcK3P81L3MJFfF1qviW0k26Jx61qN4QsiVmbjDa8dnDtdMK5nonwwyPun1bgGSjCGZTAWilQUFu0eM6Alg8mPKdppryaG3uaM3s2Tw39zQgsN2kiOXLbzeR6M+i39pBLlEtdFawyJzfxiHXsyEWm/a7ezi1qKrxbOxF72/OlCNH8=;25:Tccf9+M0T5OQYtUqFDj1XlHEAgrRuS58P3j3ggiVPivsjbyNrhBfghhWsfGVzs+yGZ9lc9HhTTvBpJz9ipb359wCmONRrU3XxEbUg+G/B+la5NozWMhYOUZH1qYrXVbLGf8N0Bx3yDdIELvOnjUKwmVOMjuXc++0KXBdwMFmbbykUj1Ov70j2fBQRuAdjEo4xSnYlshAlKhAwpz05GiyZEHeMdbJL0BtsU0T9DaPV9/j5/fUZe2FhdoOs0gtjMFMcvkkeGTIwAbwg6UXmNniug==;20:DizYfZjIZdMOscZ7TUd5pYM5LVglXhP6/G3sKHd2BPLz7mmPGhl9Lxvq5FYyWyS924+lsymNbqU8FsI8VlRv9czBqxivTGClYbOxxW6+dZ5O2LfzFokbsaemGdsup1Z8SAElFz86puDWDyj1REsIEdWiYRjTdUlc8iHFKhBuKuo= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB2070; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(80048183373757); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(520078)(3002001)(10201501046);SRVR:BY2PR0301MB2070;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB2070; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB2070;4:LCDl6pCUq+/E8e8CUz6GqgE+moNsNQUjcdvj7/U7T2DYWnvGp7RIQNj5CW60flPWhvn06bZv4ILYaPSlzw0hYampTr2OFU3RPAkq3G1y3lG8Ax+Fh1meXd25vt4KHb8LGrsIbNn/UWyCG5GaI1RV8MiVSTpGD4ufxnekQYam46h3s0QPQxMxesJN1gjcTe2AFnUAm35M7LdUp8rnVH5Ohcp/DvGoXmYn7tjwZ4Fhg8UN1HTY5yrDn5cL/TYQqbRFCw/HT+v4NcjjTj4u9ol+a4dOsWykYYo2KBEFPzkBx5SKuJ0FBSgBlUXja8iUZaAXJg1HlhwYZwLJSXillDysRQi+lLpO0eupHNTON203rbqxLTeyg27lSQJuQblN9eu4BPBqqs+ztRT5rXcsG2rF6f2bt3NwuM4rzWGx0+LeOa6P22EiV75mjRVKB8TULNHY X-Forefront-PRVS: 077929D941 X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB2070;23:VzQpxVnOyaIjbA5Uqet3LHUSvJ2Uz1cxmcAESigr37jUiBxHwLnDY+1DDtS4VrB3EJ+qc4SE90aaItojFDnOnHH8DBROUu7vdJeHRvcTDASJfMdPCql2dDrbvel3B6H5Z+gm/J+YCx0540BHOVAd7ovmkqWF7ORVEXP30eSGQcsnAFTg+AoRNxonwrHKWjjYtVgZHlThIpOjcdFkYwsMbpJZFBNeDnbb+5T088LZWXUWsgctVFP1ZaSke8vLDp204EvavvbP93hwS4tKke8OQFuJz1+UcMqj3RgGQmXt/1UxdgnO3CsKfkulIJpAAL427Ha1EoJJePNRYHBAxkHrOPUh0HTdMQZF908dG6ScHLCqxHlnCmYSIbMYE/1innoeRjLPzZYPB8ummFu2eGXRI70BvhNF/bpNzknOVV8tWsKN5DukcZ0vIswLPuFgS/LYjpB9JAxZFjRICZjdNRjvDUg0aRHe7trj/j8eWsdlhXh/5fcq6yoQgVtfE+C0ylFV0bbejmBDcw9ouLLM1vJz6LVasvjtmbfkd+WoWT0/kLa/h/v6jZYwWLyXxvdmEuJE+o76lCM+NsNNJpnYUqDa2fhheJgCxVFq23pgpMjsvFxX39lVfMgLhp0fqx3fqBezBA2f6ho1OL2Xhu7ATnIFkCu6tPl8oBbtr+u4397Ryj5yk+Y//jqJ1W5uuU9HqmbZLdts5pXkvrLNKgZR8EnEkhuZ8orGFq/0UxFDHjXx9Gd2p5lDTY9vXHGDcwB9889CkZYMW7Hlxv0DLct1uO5cU8HfcqMyP0T4hUDxVfz5ucAkcWnYPysc4zTqa8gm5Qa3nkZyq9astAwn+nzEsoxPP/GPHmB4rfO/CcSUjouGCPTO00EqK2uXX9i6xBNlCO1jdqHVdRhLHFVDAO7XzK1gd+oJF6gPQnnaBO5u0oxxZHrrrA6S1ij8BpLNTB2KRVqM X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB2070;5:45lA9S7Lvbjq29DEG5nIWsLryWaZqZgVWwo7wvIPBuKN8I9B/U5FN7V7RJBPIPws8pP3VARMJ/4K1XMXwQZxijrSqQBFz5CE1rMkMXTzYxw1h02EeFclI4817OqV6um/oCHurFNQypQ11Dcc4z5WRw==;24:2H6gfFRcejNqtKxS+vD60a8A/unEfwQ4zZ2NvxYzDt28aT5dIIKAYcwPakdV6j9+v43WWnmPOhwrfbjxzQ502bq9ruNeQfFg8x0m8vlK0/4=;20:gYBQvb8HM1vXapt6HS9gunEAzPVsTbb8uNAmtMqU9mF/5lindOdP/srqNg2uIaLMFiGwg+inFPipMLejbOVdxBcqek/6FIp9jC5uIHcV7ePUySJIyyCeRIgPevGSgjkNzJMaTMpZDOxyJsPZFOl1HmYt2GudntAwsYaZDuEFwrk= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Dec 2015 09:55:05.0372 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a;Ip=[66.35.236.227];Helo=[sj-itexedge03.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB2070 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2126 Lines: 71 Check TLP packet successful completion status. This fix the issue when accessing multi-function devices in enumeration process, TLP will return error when accessing non-exist function number. Returns PCI error code instead of generic errno. Tested on Ethernet adapter card with multi-functions. Signed-off-by: Ley Foon Tan --- drivers/pci/host/pcie-altera.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/pci/host/pcie-altera.c b/drivers/pci/host/pcie-altera.c index f05180f..e4176b3 100644 --- a/drivers/pci/host/pcie-altera.c +++ b/drivers/pci/host/pcie-altera.c @@ -55,6 +55,7 @@ #define TLP_CFG_DW2(bus, devfn, offset) \ (((bus) << 24) | ((devfn) << 16) | (offset)) #define TLP_REQ_ID(bus, devfn) (((bus) << 8) | (devfn)) +#define TLP_COMP_STATUS(s) (((s) >> 12) & 7) #define TLP_HDR_SIZE 3 #define TLP_LOOP 500 #define RP_DEVFN 0 @@ -171,6 +172,7 @@ static int tlp_read_packet(struct altera_pcie *pcie, u32 *value) bool sop = 0; u32 ctrl; u32 reg0, reg1; + u32 comp_status = 1; /* * Minimum 2 loops to read TLP headers and 1 loop to read data @@ -182,19 +184,25 @@ static int tlp_read_packet(struct altera_pcie *pcie, u32 *value) reg0 = cra_readl(pcie, RP_RXCPL_REG0); reg1 = cra_readl(pcie, RP_RXCPL_REG1); - if (ctrl & RP_RXCPL_SOP) + if (ctrl & RP_RXCPL_SOP) { sop = true; + comp_status = TLP_COMP_STATUS(reg1); + } if (ctrl & RP_RXCPL_EOP) { - if (value) - *value = reg0; - return PCIBIOS_SUCCESSFUL; + if (!comp_status) { + if (value) + *value = reg0; + return PCIBIOS_SUCCESSFUL; + } else { + return PCIBIOS_DEVICE_NOT_FOUND; + } } } udelay(5); } - return -ENOENT; + return PCIBIOS_DEVICE_NOT_FOUND; } static void tlp_write_packet(struct altera_pcie *pcie, u32 *headers, -- 1.8.2.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/