From patchwork Fri Sep 11 23:21:55 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Daney X-Patchwork-Id: 7165521 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: X-Original-To: patchwork-linux-pci@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id B9736BEEC1 for ; Fri, 11 Sep 2015 23:22:15 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E9C0D206EC for ; Fri, 11 Sep 2015 23:22:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0B5BF206D0 for ; Fri, 11 Sep 2015 23:22:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752820AbbIKXWL (ORCPT ); Fri, 11 Sep 2015 19:22:11 -0400 Received: from mail-io0-f177.google.com ([209.85.223.177]:36288 "EHLO mail-io0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754247AbbIKXWH (ORCPT ); Fri, 11 Sep 2015 19:22:07 -0400 Received: by ioii196 with SMTP id i196so114903667ioi.3; Fri, 11 Sep 2015 16:22:06 -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=kDzUxxpyzoSvNUAEelM/9gSqW3rFu+5a1wswkxNOzjg=; b=YcOphyFVOlE1+plO1GALgIc/rjPAKiO14rM7ozOOsIRPDlTCWSq0TAbvn7oyqH4VU4 yzPi/7gm7tOhMWLsedZQXLaF1bD4q62hfyNn+kHwl+OEDXmNDmxngg+DgbLILfbZdUgo THS8RRGggOQJd4cbhw0ISc38jXCOZkMFJglOVTsQr+ISykzi8xG5ttYCHTGZ5SSxX/+U fgLxAETlQ5NpaRsnlnwimh7towBbEj85UWlnEBynMGCEvh2VrKfcsHpB4OJcy06A3nME WQ7S8hoScH0ZEEb9tKDHmVkWOj85QF3AgvmPU/utoW7ON3Obs7FVftNMm3TMpgvOqKPm jEAQ== X-Received: by 10.107.17.206 with SMTP id 75mr8594294ior.140.1442013726644; Fri, 11 Sep 2015 16:22:06 -0700 (PDT) Received: from dl.caveonetworks.com (64.2.3.194.ptr.us.xo.net. [64.2.3.194]) by smtp.gmail.com with ESMTPSA id lp1sm657501igb.10.2015.09.11.16.22.03 (version=TLSv1 cipher=RC4-SHA bits=128/128); Fri, 11 Sep 2015 16:22:04 -0700 (PDT) Received: from dl.caveonetworks.com (localhost.localdomain [127.0.0.1]) by dl.caveonetworks.com (8.14.5/8.14.5) with ESMTP id t8BNM2H9005049; Fri, 11 Sep 2015 16:22:02 -0700 Received: (from ddaney@localhost) by dl.caveonetworks.com (8.14.5/8.14.5/Submit) id t8BNM2nH005048; Fri, 11 Sep 2015 16:22:02 -0700 From: David Daney To: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , Frank Rowand , Grant Likely , Bjorn Helgaas , linux-pci@vger.kernel.org, Will Deacon , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , linux-arm-kernel@lists.infradead.org Cc: David Daney Subject: [PATCH 2/6] PCI: generic: Only fixup irqs for bus we are creating. Date: Fri, 11 Sep 2015 16:21:55 -0700 Message-Id: <1442013719-5001-3-git-send-email-ddaney.cavm@gmail.com> X-Mailer: git-send-email 1.7.11.7 In-Reply-To: <1442013719-5001-1-git-send-email-ddaney.cavm@gmail.com> References: <1442013719-5001-1-git-send-email-ddaney.cavm@gmail.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: David Daney Use pci_walk_bus() to restrict the fixup irq actions to only the bus being created. If we create multiple buses with pci-host-generic, or there are buses created by other drivers, we don't want to call pci_fixup_irqs() which operates on all devices, not just the devices on the bus being added. The consequence is that either the fixups are done more than once, or in some cases incorrect fixups could be applied. Signed-off-by: David Daney --- drivers/pci/host/pci-host-generic.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/pci/host/pci-host-generic.c b/drivers/pci/host/pci-host-generic.c index 265dd25..a0fb241 100644 --- a/drivers/pci/host/pci-host-generic.c +++ b/drivers/pci/host/pci-host-generic.c @@ -205,6 +205,12 @@ static int gen_pci_parse_map_cfg_windows(struct gen_pci *pci) return 0; } +static int gen_pci_fixup_irq_cb(struct pci_dev *dev, void *arg) +{ + pdev_fixup_irq(dev, pci_common_swizzle, of_irq_parse_and_map_pci); + return 0; +} + static int gen_pci_probe(struct platform_device *pdev) { int err; @@ -262,7 +268,7 @@ static int gen_pci_probe(struct platform_device *pdev) return -ENODEV; } - pci_fixup_irqs(pci_common_swizzle, of_irq_parse_and_map_pci); + pci_walk_bus(bus, gen_pci_fixup_irq_cb, NULL); if (!pci_has_flag(PCI_PROBE_ONLY)) { pci_bus_size_bridges(bus);