From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932322AbbJMLS6 (ORCPT ); Tue, 13 Oct 2015 07:18:58 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:60532 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752421AbbJMLSz (ORCPT ); Tue, 13 Oct 2015 07:18:55 -0400 From: Arnd Bergmann To: Gabriele Paoloni Cc: "Wangzhou (B)" , Bjorn Helgaas , Bjorn Helgaas , "jingoohan1@gmail.com" , "pratyush.anand@gmail.com" , "linux@arm.linux.org.uk" , "thomas.petazzoni@free-electrons.com" , "lorenzo.pieralisi@arm.com" , "james.morse@arm.com" , "Liviu.Dudau@arm.com" , "jason@lakedaemon.net" , "robh@kernel.org" , "gabriel.fernandez@linaro.org" , "Minghuan.Lian@freescale.com" , "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , zhangjukuo , qiuzhenfa , "liudongdong (C)" , qiujiang , "xuwei (O)" , "Liguozhu (Kenneth)" , "Wangkefeng (Kevin)" , Rob Herring Subject: Re: [PATCH v10 4/6] PCI: hisi: Add PCIe host support for HiSilicon SoC Hip05 Date: Tue, 13 Oct 2015 13:18:33 +0200 Message-ID: <5549505.Kpo7ci0v8h@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: References: <1444445957-239522-1-git-send-email-wangzhou1@hisilicon.com> <561CA5AF.2080300@hisilicon.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:kbJOGW5tnxc2VaW+rRRKEwd+oHERjPaG1VsWGj8nUu3hgEA68Ri SuTd+aiWagn/kmi9vSA3dcHzck27EpDl3V9WliOdAXkJxV5gxeS2HAJJ0LjwHauRhfH87Yq n92M+2ChzByjakT0FvPzWHYkU6OzJLRh66g72mAkxI5tTUKh+IkiQGjmm5dmgbuTMkzRm5s dbX7hPUR80vkLlFfWO3ow== X-UI-Out-Filterresults: notjunk:1;V01:K0:rU+1yThOa5w=:EUmulvGBhVVkHkM79aDyZh I/ozjnVLPTj199senQcELS7H+gZnqFsteW+3u22Rfb57OjJRrqrxIXPvY1xBmQh/RNw6+GH1e yb/0/Q6nkvZIIB/7xsj5xw9J5Gu+gsss6id2rtedzsBx/jThmPq4FKzzFjlYf2OdKB1Prdcp9 KU02GMEpD0ZXbJVV0vZ61fJtEO3Z4Er0ZBpSM8ae3Ak29iXAXa6OHc4RAE36pAHTR9TSG3p0O OwTMkcbZkZl3PP5H7jmVzqlAtuFu5UzsGfFPmcgrIM2Liir+U720pXBwBJvoEYtUuYow+iNro i9m6vUTb1W2LfBjj4M/MKsQjdcHT5MQNY6jRjG0VBeH5E/FaL+Ntdq8BHdrsjkZZvFlUL7xPP TI9CQotu6iY5JG99qRmmPLylt1bXHVyxl69yJjPSBcDRwjgy4THtrp9N7sH9cJXyTyjCpNX0w AK5BKeIUcFiySSA6CBtWrrHm4Q+EZTD9D8977ZuY2I1gvtPxLB9LGLn0cFffx3eNEYBKuXiqi I96jRyfOxvT02uzPdBYlD+lKNdhYwTF4u6slK6+qtVoNEwgFYr6M4mDjSOJb3ExAkT5yf3gTv gjYJIkou6p7gRqlrKso40mXbrqO6g1XFjA9uY4GTFJSd06dzVa9+4rUN+al/3E9dHLILfK1IE qnuyDkM3dS45lqJ3OJsjlqU9+OMgaJhNlL9NtUhUA/xB99NBKTJwrTXmI5hHasuGjWj0rvfXE 70eBXiqLGHDfGR0O Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tuesday 13 October 2015 06:58:42 Gabriele Paoloni wrote: > > > >> + > > >> +static int __init hisi_pcie_init(void) > > >> +{ > > >> + return platform_driver_probe(&hisi_pcie_driver, hisi_pcie_probe); > > >> +} > > >> +subsys_initcall(hisi_pcie_init); > > > > > > Can you use module_platform_driver() or module_platform_driver_probe() > > > here instead of the subsys_initcall()? No, I don't really know what > > > the difference between module_platform_driver() and > > > module_platform_driver_probe() is, sorry :) module_platform_driver_probe() will only call the probe function once (and fail in case of -EPROBE_DEFER), while module_platform_driver() installs the platform driver in a way that the device can be bound and unbound at any point. > > In fact, I used module_platform_driver_probe in previous version, but > > A PCIe VGA card of HiSilicon will use Hip05 PCIe host, so we modified > > module_platform_driver_probe to subsys_initcall which will be called > > before module_platform_driver_probe. > > > > We will upstream the driver of above PCIe VGA card soon. I don't see a reason why a VGA driver would need the PCI host to be probed this early, unless it is the only usable console in the system. > Hi Bjorn, firstly many thanks for looking at this. > > About this last bit the reason why we use subsys_initcall() is that > our host bridge is embedded in the SoC and as such is not hot-pluggable > for instance see: > http://lxr.free-electrons.com/source/Documentation/driver-model/platform.txt#L59 We should still be able to build the driver as a loadable module, even if you don't do that on your own kernels. This doesn't mean that it has to be module_platform_driver, subsys_initcall will also work in a loadable module, it just won't be as early. However, we should try to come up with a consistent approach for all PCI host drivers, I don't see any reason for hisi to be different from the others here. > Our approach is also used by Exynos: > http://lxr.free-electrons.com/source/drivers/pci/host/pci-exynos.c#L644 Maybe we should change that too. Arnd