lkml.org 
[lkml]   [2014]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH 2/2] PCI: Only enable realloc auto when root bus has 64bit mmio
From
On Thu, Sep 25, 2014 at 8:49 AM, Joseph Salisbury
<joseph.salisbury@canonical.com> wrote:
> On 09/16/2014 06:27 PM, Yinghai Lu wrote:
>> On Tue, Sep 16, 2014 at 1:21 PM, Joseph Salisbury
>> <joseph.salisbury@canonical.com> wrote:
>>> A new bug[0] was opened due to enabling PCI_REALLOC_ENABLE_AUTO, which
>>> is similar to the original bug[1] we discussed.
>>>
>>> Just wondering if there have been any additional ideas on realloc since
>>> this was last discussed?
>>>
>>> [0] http://pad.lv/1363313
>>> [1] http://pad.lv/1245938
>> This one looks different, that LSI card support SRIOV, but BIOS does not
>> allocate resource to SRIOV bar.
>> We release old resource and ...reallocate resource to them with two retries.
>
> The user collected earlydump data, which can be found here:
> https://launchpadlibrarian.net/185141163/dmesg-pci%3Dearlydump

Did you ask the user to test reset_lsi_pci_devices.patch?

> ---
> drivers/pci/setup-bus.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> Index: linux-2.6/drivers/pci/setup-
bus.c
> ===================================================================
> --- linux-2.6.orig/drivers/pci/setup-bus.c
> +++ linux-2.6/drivers/pci/setup-bus.c
> @@ -1615,6 +1615,22 @@ again:
> fail_res->flags & type_mask,
> rel_type);
>
> + /* reset LSI device */
> + list_for_each_entry(fail_res, &fail_head, list) {
> + struct pci_dev *pdev;
> + struct pci_bus *pbus = fail_res->dev->bus;
> +
> + if (pci_is_root_bus(pbus) || !pbus->self)
> + continue;
> +
> + /* LSI device firmware is not happy with changing BAR value */
> + list_for_each_entry(pdev, &pbus->devices, bus_list)
> + if (pdev->vendor == PCI_VENDOR_ID_LSI_LOGIC) {
> + pci_reset_secondary_bus(pbus->self);
> + break;
> + }
> + }
> +
> /* restore size and flags */
> list_for_each_entry(fail_res, &fail_head, list) {
> struct resource *res = fail_res->res;

Thanks

Yinghai


\
 
 \ /
  Last update: 2014-09-25 21:01    [W:0.090 / U:0.412 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site