Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753913AbdHUNyB (ORCPT ); Mon, 21 Aug 2017 09:54:01 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:39622 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753206AbdHUNx7 (ORCPT ); Mon, 21 Aug 2017 09:53:59 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 448DA60262 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=okaya@codeaurora.org Subject: Re: [PATCH v11 2/4] PCI: Factor out pci_bus_wait_crs() To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, Timur Tabi , linux-kernel@vger.kernel.org, Alex Williamson , linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20170818212310.15145.21732.stgit@bhelgaas-glaptop.roam.corp.google.com> <20170818213210.15145.15340.stgit@bhelgaas-glaptop.roam.corp.google.com> From: Sinan Kaya Message-ID: <9cb3006d-31d0-e57a-fd3e-c32914e8ba42@codeaurora.org> Date: Mon, 21 Aug 2017 09:53:56 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20170818213210.15145.15340.stgit@bhelgaas-glaptop.roam.corp.google.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1183 Lines: 44 On 8/18/2017 5:32 PM, Bjorn Helgaas wrote: > + if ((*l & 0xffff) != 0x0001) > + return true; /* not a CRS completion */ > This version certainly looks cleaner. However, it breaks pci_flr_wait(). If some root port doesn't support CRS and returns 0xFFFFFFFF, pci_bus_wait_crs() function returns true. pci_flr_wait() prematurely bails out from here. pci_flr_wait() { + ret = pci_bus_wait_crs(dev->bus, dev->devfn, &id, 60000); + if (ret) + return; } We can change the return code to false above but then we break pci_bus_read_dev_vendor_id() function. That's why, I was interested in creating a pci_bus_crs_visibility_supported() helper function that would check for the magic 0x0001 value and return true. Otherwise, false. pci_bus_read_dev_vendor_id() would do this pci_bus_read_dev_vendor_id() { ... if (pci_bus_crs_visibility_supported()) return pci_bus_wait_crs(dev->bus, dev->devfn, &id, 60000); return true } Similar pattern for pci_flr_wait(). -- Sinan Kaya Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.