From: Sinan Kaya <okaya@codeaurora.org>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, Timur Tabi <timur@codeaurora.org>,
linux-kernel@vger.kernel.org,
Alex Williamson <alex.williamson@redhat.com>,
linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v11 2/4] PCI: Factor out pci_bus_wait_crs()
Date: Mon, 21 Aug 2017 09:53:56 -0400 [thread overview]
Message-ID: <9cb3006d-31d0-e57a-fd3e-c32914e8ba42@codeaurora.org> (raw)
In-Reply-To: <20170818213210.15145.15340.stgit@bhelgaas-glaptop.roam.corp.google.com>
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.
WARNING: multiple messages have this Message-ID (diff)
From: Sinan Kaya <okaya@codeaurora.org>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, Timur Tabi <timur@codeaurora.org>,
linux-kernel@vger.kernel.org,
Alex Williamson <alex.williamson@redhat.com>,
linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v11 2/4] PCI: Factor out pci_bus_wait_crs()
Date: Mon, 21 Aug 2017 09:53:56 -0400 [thread overview]
Message-ID: <9cb3006d-31d0-e57a-fd3e-c32914e8ba42@codeaurora.org> (raw)
In-Reply-To: <20170818213210.15145.15340.stgit@bhelgaas-glaptop.roam.corp.google.com>
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.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: okaya@codeaurora.org (Sinan Kaya)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v11 2/4] PCI: Factor out pci_bus_wait_crs()
Date: Mon, 21 Aug 2017 09:53:56 -0400 [thread overview]
Message-ID: <9cb3006d-31d0-e57a-fd3e-c32914e8ba42@codeaurora.org> (raw)
In-Reply-To: <20170818213210.15145.15340.stgit@bhelgaas-glaptop.roam.corp.google.com>
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.
next prev parent reply other threads:[~2017-08-21 13:53 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-18 21:31 [PATCH v11 0/4] PCI: Use CRS Software Visibility to wait for device to become ready Bjorn Helgaas
2017-08-18 21:31 ` Bjorn Helgaas
2017-08-18 21:31 ` Bjorn Helgaas
2017-08-18 21:32 ` [PATCH v11 1/4] PCI: Don't ignore valid response before CRS timeout Bjorn Helgaas
2017-08-18 21:32 ` Bjorn Helgaas
2017-08-18 21:32 ` Bjorn Helgaas
2017-08-21 14:02 ` Sinan Kaya
2017-08-21 14:02 ` Sinan Kaya
2017-08-21 14:02 ` Sinan Kaya
2017-08-21 17:44 ` Bjorn Helgaas
2017-08-21 17:44 ` Bjorn Helgaas
2017-08-21 17:44 ` Bjorn Helgaas
2017-08-18 21:32 ` [PATCH v11 2/4] PCI: Factor out pci_bus_wait_crs() Bjorn Helgaas
2017-08-18 21:32 ` Bjorn Helgaas
2017-08-18 21:32 ` Bjorn Helgaas
2017-08-21 13:53 ` Sinan Kaya [this message]
2017-08-21 13:53 ` Sinan Kaya
2017-08-21 13:53 ` Sinan Kaya
2017-08-21 19:18 ` Bjorn Helgaas
2017-08-21 19:18 ` Bjorn Helgaas
2017-08-21 19:18 ` Bjorn Helgaas
2017-08-21 19:37 ` Sinan Kaya
2017-08-21 19:37 ` Sinan Kaya
2017-08-21 20:23 ` Bjorn Helgaas
2017-08-21 20:23 ` Bjorn Helgaas
2017-08-21 20:23 ` Bjorn Helgaas
2017-08-21 20:32 ` Sinan Kaya
2017-08-21 20:32 ` Sinan Kaya
2017-08-21 21:09 ` Bjorn Helgaas
2017-08-21 21:09 ` Bjorn Helgaas
2017-08-21 21:09 ` Bjorn Helgaas
2017-08-23 4:40 ` Sinan Kaya
2017-08-23 4:40 ` Sinan Kaya
2017-08-18 21:32 ` [PATCH v11 3/4] PCI: Handle CRS ("device not ready") returned by device after FLR Bjorn Helgaas
2017-08-18 21:32 ` Bjorn Helgaas
2017-08-18 21:32 ` Bjorn Helgaas
2017-08-18 21:32 ` [PATCH v11 4/4] PCI: Warn periodically while waiting for device to become ready Bjorn Helgaas
2017-08-18 21:32 ` Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9cb3006d-31d0-e57a-fd3e-c32914e8ba42@codeaurora.org \
--to=okaya@codeaurora.org \
--cc=alex.williamson@redhat.com \
--cc=bhelgaas@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=timur@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.