From patchwork Sat Feb 7 23:34:15 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yinghai Lu X-Patchwork-Id: 437661 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 19C46140111 for ; Sun, 8 Feb 2015 10:34:18 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756179AbbBGXeQ (ORCPT ); Sat, 7 Feb 2015 18:34:16 -0500 Received: from mail-ig0-f179.google.com ([209.85.213.179]:54361 "EHLO mail-ig0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756104AbbBGXeQ (ORCPT ); Sat, 7 Feb 2015 18:34:16 -0500 Received: by mail-ig0-f179.google.com with SMTP id l13so9871370iga.0 for ; Sat, 07 Feb 2015 15:34:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=aVbEpZID+oQj/n0HPIlDRb4Ois1RQ20SeXe1BD+3ddo=; b=UjXh9/AYVg4GFp3waT1ZOq1vi+xbxCBjZ1jlS7mXX5pHBNzILPs9/Xg91IwJ+vbDYo zWkhBoWfj2ayy0464bR8JsBLauw8tM5Ivh9DdkhQg/O2kz+t7lG/eqs7wkXNrdfA8IHi EjRZPBEACSWkHTzai1MLbueGzZTmF1+TDGnE+eD7Y7GzJ5jE4obbFWGNnOPNjzXAxvsP kP+MCiCIAxS9NOxIsb/gwXyAJrJ6lI8MUGmQpBrBG4LtRfWpFPr/Mfd08Un3CwFhKLD9 ty6HRKjzeKYS7/qFPUUV2nBSKA51MHxj0BIVcPgwbQa8tYlXlCZ6tD4y9tCelhLMWNEL yrHg== MIME-Version: 1.0 X-Received: by 10.50.29.68 with SMTP id i4mr9672573igh.4.1423352055318; Sat, 07 Feb 2015 15:34:15 -0800 (PST) Received: by 10.64.208.42 with HTTP; Sat, 7 Feb 2015 15:34:15 -0800 (PST) In-Reply-To: <54D160B5.70006@nwtrail.com> References: <54C81B4E.7060900@nwtrail.com> <54CBB062.4040801@nwtrail.com> <54CFBC0E.4080102@nwtrail.com> <54D160B5.70006@nwtrail.com> Date: Sat, 7 Feb 2015 15:34:15 -0800 X-Google-Sender-Auth: mEwDS81lRrJ4aidK8N75KHaPfuA Message-ID: Subject: Re: [problem] mpt2sas load fails with LSISAS2008 From: Yinghai Lu To: pjay@nwtrail.com Cc: Bjorn Helgaas , linux-pci Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On Tue, Feb 3, 2015 at 3:58 PM, Paul Johnson wrote: > On 02/02/2015 02:30 PM, Yinghai Lu wrote: >> > This patch worked. In case you have a need, the dmesg is attached. Please check two patches instead. You need to apply those two at the same time on current linus tree. Thanks Yinghai Subject: [PATCH] PCI: set resource to fixed for lsi devices LSI cards do not work if pci core change pci bar vaules. Set their resource to fixed, so will allow realloc to skip them. Reported-by: Paul Johnson Suggested-by: Bjorn Helgaas Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=92351 Signed-off-by: Yinghai Lu Cc: stable@vger.kernel.org --- drivers/pci/pci.h | 1 + drivers/pci/quirks.c | 20 ++++++++++++++++++++ drivers/pci/setup-bus.c | 4 ++++ 3 files changed, 25 insertions(+) Index: linux-2.6/drivers/pci/pci.h =================================================================== --- linux-2.6.orig/drivers/pci/pci.h +++ linux-2.6/drivers/pci/pci.h @@ -147,6 +147,7 @@ static inline void pci_msi_init_pci_dev( #endif void pci_realloc_get_opt(char *); +bool pci_realloc_user_enabled(void); static inline int pci_no_d1d2(struct pci_dev *dev) { Index: linux-2.6/drivers/pci/quirks.c =================================================================== --- linux-2.6.orig/drivers/pci/quirks.c +++ linux-2.6/drivers/pci/quirks.c @@ -324,6 +324,26 @@ static void quirk_s3_64M(struct pci_dev DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M); +/* + * LSI devices firmware does not like BAR get changed + */ +static void quirk_bar_fixed(struct pci_dev *dev) +{ + int i; + + if (pci_realloc_user_enabled()) + return; + + for (i = 0; i < PCI_STD_RESOURCE_END; i++) { + struct resource *r = &dev->resource[i]; + + if (!r->flags || r->flags & IORESOURCE_UNSET) + continue; + r->flags |= IORESOURCE_PCI_FIXED; + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_LSI_LOGIC, PCI_ANY_ID, quirk_bar_fixed); + static void quirk_io(struct pci_dev *dev, int pos, unsigned size, const char *name) { 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 @@ -1521,6 +1521,10 @@ void __init pci_realloc_get_opt(char *st else if (!strncmp(str, "on", 2)) pci_realloc_enable = user_enabled; } +bool pci_realloc_user_enabled(void) +{ + return pci_realloc_enable == user_enabled; +} static bool pci_realloc_enabled(enum enable_type enable) { return enable >= user_enabled;