From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yijing Wang Subject: Re: [PATCH 01/28] PCI: Rip out pci_bus_add_devices() from pci_scan_bus() Date: Mon, 19 Jan 2015 10:04:01 +0800 Message-ID: <54BC6611.9020002@huawei.com> References: <1421372666-12288-1-git-send-email-wangyijing@huawei.com> <1421372666-12288-2-git-send-email-wangyijing@huawei.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-alpha-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Yinghai Lu Cc: Bjorn Helgaas , Jiang Liu , "linux-pci@vger.kernel.org" , Linux Kernel Mailing List , Marc Zyngier , "linux-arm-kernel@lists.infradead.org" , Russell King , the arch/x86 maintainers , Thomas Gleixner , Tony Luck , "linux-ia64@vger.kernel.org" , "David S. Miller" , Guan Xuetao , linux-alpha@vger.kernel.org, linux-m68k@lists.linux-m68k.org, Liviu Dudau , Arnd Bergmann , Geert Uytterhoeven , "sparclinux@vger.kernel.org" On 2015/1/17 7:16, Yinghai Lu wrote: > On Fri, Jan 16, 2015 at 3:15 PM, Yinghai Lu wrote: >> On Thu, Jan 15, 2015 at 5:43 PM, Yijing Wang wrote: >>> Pci_bus_add_devices() should not be placed in pci_scan_bus(). >>> Now pci device will be added to driver core once its >>> creation. All things left in pci_bus_add_devices() are >>> driver attachment and other trivial sysfs things. >>> Pci_scan_bus() should be the function responsible for >>> scanning PCI devices, not including driver attachment. >>> Other, some callers(m68k,unicore32,alpha) of pci_scan_bus() >>> will call pci_bus_size_bridges() and pci_bus_assign_resources() >>> after pci_scan_bus(). >>> >>> E.g. >>> In m68k >>> mcf_pci_init() >>> pci_scan_bus() >>> ... >>> pci_bus_add_devices() --- try to attach driver >>> pci_fixup_irqs() >>> pci_bus_size_bridges() >>> pci_bus_assign_resources() >>> >>> It is not correct, resources should be assigned correctly >>> before attaching driver. >> > No, for booting path, at that time pci drivers are *NOT* loaded yet. Hi Yinghai, I knew code flow here would not cause problems, sorry the log confused you, I will refresh it. But I think pci_scan_bus()/pci_scan_root_bus() which could only be used during system boot up(before module_init) make the pci scan logic obscure. Because most callers additionally call pci_bus_size_bridges() and pci_bus_assign_resources() later, so rip out pci_bus_add_devices() from pci_scan_bus()/pci_scan_root_bus() make code have better readability. Thanks! Yijing. > > Thanks > > Yinghai > > . > -- Thanks! Yijing