lkml.org 
[lkml]   [2014]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] PCI: Only enable realloc auto when root bus has 64bit mmio
    On Wed, Sep 17, 2014 at 12:46:24AM -0700, Yinghai Lu wrote:
    > On Tue, Sep 16, 2014 at 3:27 PM, Yinghai Lu <yinghai@kernel.org> 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
    > >
    > > So the resource realloc do work as expected. but LSI firmware has some
    > > problem again?
    > >
    > > We may need to add command after the reset the bridge resource.
    >
    > Can you try attached patch?

    This sitting in patchwork, but I'm dropping it because there's no changelog
    or signed-off-by. I don't think the underlying bug has been resolved,
    though.

    Bjorn

    > ---
    > 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;



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