Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753880Ab3I0Ror (ORCPT ); Fri, 27 Sep 2013 13:44:47 -0400 Received: from mail-ie0-f178.google.com ([209.85.223.178]:41757 "EHLO mail-ie0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753157Ab3I0Roq (ORCPT ); Fri, 27 Sep 2013 13:44:46 -0400 MIME-Version: 1.0 In-Reply-To: References: <1380270519.27811.10.camel@pasglop> Date: Fri, 27 Sep 2013 10:44:44 -0700 X-Google-Sender-Auth: MqV09WHVy70B-VdSlTDV_slWSVs Message-ID: Subject: Re: Please revert 928bea964827d7824b548c1f8e06eccbbc4d0d7d From: Yinghai Lu To: Benjamin Herrenschmidt Cc: Linus Torvalds , Bjorn Helgaas , "linux-pci@vger.kernel.org" , linuxppc-dev , Linux Kernel list Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2067 Lines: 56 On Fri, Sep 27, 2013 at 9:01 AM, Yinghai Lu wrote: > On Fri, Sep 27, 2013 at 1:28 AM, Benjamin Herrenschmidt > wrote: >> Hi Linus, Yinghai ! >> >> Please consider reverting: >> >> 928bea964827d7824b548c1f8e06eccbbc4d0d7d >> PCI: Delay enabling bridges until they're needed >> >> (I'd suggest to revert now and maybe merge a better patch later) >> >> This breaks PCI on the PowerPC "powernv" platform (which is booted via >> kexec) and probably x86 as well under similar circumstances. It will >> basically break PCIe if the bus master bit of the bridge isn't set at >> boot (by the firmware for example, or because kexec'ing cleared it). >> >> The reason is that the PCIe port driver will call pci_enable_device() on >> the bridge (on everything under the sun actually), which will marked the >> device enabled (but will not do a set_master). >> >> Because of that, pci_enable_bridge() later on (called as a result of the >> child device driver doing pci_enable_device) will see the bridge as >> already enabled and will not call pci_set_master() on it. Ben, looks like PCIe port driver does call pci_enable_device AND pci_set_master() | int pcie_port_device_register(struct pci_dev *dev) | { | int status, capabilities, i, nr_service; | int irqs[PCIE_PORT_DEVICE_MAXSERVICES]; | | /* Enable PCI Express port device */ | status = pci_enable_device(dev); | if (status) | return status; | | /* Get and check PCI Express port services */ | capabilities = get_port_device_capability(dev); | if (!capabilities) | return 0; | | pci_set_master(dev); so how come that pci_set_master is not called for powerpc? Can you send out lspci -vvxxx with current linus-tree and v3.11? Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/