Received: by 10.213.65.68 with SMTP id h4csp3204249imn; Mon, 9 Apr 2018 16:26:01 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+8XVB4KYvGGQc0ZkUrq5SAWO94gMB4cykb3m85FLPaP49Js/B1Wc80LKAf3OTTBAjIS0Gn X-Received: by 2002:a17:902:708a:: with SMTP id z10-v6mr1669146plk.315.1523316361928; Mon, 09 Apr 2018 16:26:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523316361; cv=none; d=google.com; s=arc-20160816; b=hc9pqkhphC0BipjD7BjjnBExkuSwRSpS/TLwpAjFnv7RPVSh4FzjT+iR3saITn6N/o OrVHzqzrnlXWqmk7AZ1HrHUgvP1eaW4QWU2UEPCMVzjWI6bep2rh69/jahWbKQzpl2T0 Ry+TCFAZ2y5ERnRGf0SLkv3lMJILk7/AHT0LqhpMHI2i1vvvxw94xZAQKtdojrmF2Sqz F3f6YfHsYaprTebY+dDTPfBcelSgRuNBe+WOfA25KH8vPwttkVgc3heGF5iav2C1R7z4 +TIo+E6iRS//KTN22D2fobVm2nNiHpNfbAmrfInZdXesf/6lKu3kBEIgh0hq5YhhAqXl WTTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=Eo+mlPlXjY7llQmGuN3kaKYMctoEi/BeYviAMmr1IbM=; b=sPCsxs1U2cdnVVn0FSOd1En8OvsdI5LjMGnoIPcCPGpkSfi8L0eHWkv5nfromP168P FWznkVL32waoMu54cVNP2wZB55Xx5pfk/c3tG2B89NOHKwIGRLW+P5e4Uaa7hrv1rRDU YEvsXu53Eqh069g17XsHXiM/0sonU40kq3fg0scO7OS6P/Buzgq4JB2O4phG8/g/PVYc A+480UO1YAlZ5LgPN8acdS8fiuEmxj8hEgxAy0G2lXf6xqojKwm6slfxCelIPhvTCa12 +fky4P0Lhx+O9zrp1fIo/2RQDZ0XazEdMIIY7tCDK9MZQQrV68AXGCHRaSNmb7Rj3s3t oe5w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s8si844884pgf.767.2018.04.09.16.25.24; Mon, 09 Apr 2018 16:26:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752128AbeDIXWj (ORCPT + 99 others); Mon, 9 Apr 2018 19:22:39 -0400 Received: from mga12.intel.com ([192.55.52.136]:19894 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751367AbeDIXWi (ORCPT ); Mon, 9 Apr 2018 19:22:38 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Apr 2018 16:22:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,429,1517904000"; d="scan'208";a="190133576" Received: from unknown (HELO localhost.localdomain) ([10.232.112.44]) by orsmga004.jf.intel.com with ESMTP; 09 Apr 2018 16:22:36 -0700 Date: Mon, 9 Apr 2018 17:25:28 -0600 From: Keith Busch To: Oza Pawandeep Cc: Bjorn Helgaas , Philippe Ombredanne , Thomas Gleixner , Greg Kroah-Hartman , Kate Stewart , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Dongdong Liu , Wei Zhang , Sinan Kaya , Timur Tabi Subject: Re: [PATCH v13 5/6] PCI: Unify wait for link active into generic PCI Message-ID: <20180409232528.GE6283@localhost.localdomain> References: <1523284914-2037-1-git-send-email-poza@codeaurora.org> <1523284914-2037-6-git-send-email-poza@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1523284914-2037-6-git-send-email-poza@codeaurora.org> User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Apr 09, 2018 at 10:41:53AM -0400, Oza Pawandeep wrote: > +/** > + * pcie_wait_for_link - Wait for link till it's active/inactive > + * @pdev: Bridge device > + * @active: waiting for active or inactive ? > + * > + * Use this to wait till link becomes active or inactive. > + */ > +bool pcie_wait_for_link(struct pci_dev *pdev, bool active) > +{ > + int timeout = 1000; > + bool ret; > + u16 lnk_status; > + > + for (;;) { > + pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &lnk_status); > + ret = !!(lnk_status & PCI_EXP_LNKSTA_DLLLA); > + if (ret == active) > + return true; > + if (timeout <= 0) > + break; > + timeout -= 10; > + } This is missing an msleep(10) at each iteration. > + > + pci_info(pdev, "Data Link Layer Link Active not %s in 1000 msec\n", > + active ? "set" : "cleared"); > + > + return false; > +}