From patchwork Sun Sep 14 10:42:01 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Noever X-Patchwork-Id: 389035 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 B6822140168 for ; Sun, 14 Sep 2014 20:43:00 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752492AbaINKm6 (ORCPT ); Sun, 14 Sep 2014 06:42:58 -0400 Received: from mail-qc0-f179.google.com ([209.85.216.179]:55339 "EHLO mail-qc0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752426AbaINKm5 (ORCPT ); Sun, 14 Sep 2014 06:42:57 -0400 Received: by mail-qc0-f179.google.com with SMTP id i17so2781724qcy.24 for ; Sun, 14 Sep 2014 03:42:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=A2/Vuby6aS2wwm9eXwUn7TX2yDSanOOnlwH/LEzkyM8=; b=TondSPonb4LhwjZpIvsTDVBQKuVhGi0Kj+Ty7AuXZBNvwsbo0B6YG6FrjxmxJha9UW STWiivACOP2Hot1ADYe/Nm50EyLqhEA74fkIS2DY+51PTbvw4imCp+yN2kaJaQEa5sZf FgSd/7qvtRPneYGf7nYBhmPOmeVtaMo9fnd9FsJmG8Umrc0QvwFKnh6f4qb763fvYla8 QXPZicXrbKfhpdWM7WyFAmEIIx2kpp1K3GsK3vHdOCA6YDHkZVzCLLX/oEkJ75Lf/qGV 8U+WuFvVxYHZu+HcLyn37Scly/fMCRcK0XWBU+t+vcgQa4aCD9dGv1boFKLMAPrDLk0Q aCnw== X-Received: by 10.224.88.3 with SMTP id y3mr27780189qal.65.1410691376382; Sun, 14 Sep 2014 03:42:56 -0700 (PDT) Received: from linuxbook.fritz.box (HSI-KBW-095-208-100-070.hsi5.kabel-badenwuerttemberg.de. [95.208.100.70]) by mx.google.com with ESMTPSA id w6sm7158586qas.26.2014.09.14.03.42.54 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 14 Sep 2014 03:42:55 -0700 (PDT) From: Andreas Noever To: Bjorn Helgaas Cc: Andreas Noever , Yinghai Lu , Linus Torvalds , Linux Kernel , linux-pci@vger.kernel.org Subject: Re: [BUG] Bisected Problem with LSI PCI FC Adapter Date: Sun, 14 Sep 2014 12:42:01 +0200 Message-Id: <1410691321-17860-1-git-send-email-andreas.noever@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: References: Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org This is an implementation of fix 1 (Add a quirk to fix the _CRS information based on what amd_bus.c read from the hardware) which makes pci=nocrs ignore bus numbers from crs. If this works then we can add the board to the crs blacklist (Dirk can you attach the output of dmidecode to the bugzilla report?). --- arch/x86/pci/acpi.c | 7 +++---- arch/x86/pci/bus_numa.c | 12 +----------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index cfd1b13..b073948 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c @@ -522,15 +522,14 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root) } else { probe_pci_root_info(info, device, busnum, domain); - /* insert busn res at first */ - pci_add_resource(&resources, &root->secondary); /* * _CRS with no apertures is normal, so only fall back to * defaults or native bridge info if we're ignoring _CRS. */ - if (pci_use_crs) + if (pci_use_crs) { + pci_add_resource(&resources, &root->secondary); add_resources(info, &resources); - else { + } else { free_pci_root_info_res(info); x86_pci_root_bus_resources(busnum, &resources); } diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c index f3a2cfc..b735d0e 100644 --- a/arch/x86/pci/bus_numa.c +++ b/arch/x86/pci/bus_numa.c @@ -31,8 +31,6 @@ void x86_pci_root_bus_resources(int bus, struct list_head *resources) { struct pci_root_info *info = x86_find_pci_root_info(bus); struct pci_root_res *root_res; - struct pci_host_bridge_window *window; - bool found = false; if (!info) goto default_resources; @@ -40,15 +38,7 @@ void x86_pci_root_bus_resources(int bus, struct list_head *resources) printk(KERN_DEBUG "PCI: root bus %02x: hardware-probed resources\n", bus); - /* already added by acpi ? */ - list_for_each_entry(window, resources, list) - if (window->res->flags & IORESOURCE_BUS) { - found = true; - break; - } - - if (!found) - pci_add_resource(resources, &info->busn); + pci_add_resource(resources, &info->busn); list_for_each_entry(root_res, &info->resources, list) { struct resource *res;