[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5549505.Kpo7ci0v8h@wuerfel>
Date: Tue, 13 Oct 2015 13:18:33 +0200
From: Arnd Bergmann <arnd@...db.de>
To: Gabriele Paoloni <gabriele.paoloni@...wei.com>
Cc: "Wangzhou (B)" <wangzhou1@...ilicon.com>,
Bjorn Helgaas <helgaas@...nel.org>,
Bjorn Helgaas <bhelgaas@...gle.com>,
"jingoohan1@...il.com" <jingoohan1@...il.com>,
"pratyush.anand@...il.com" <pratyush.anand@...il.com>,
"linux@....linux.org.uk" <linux@....linux.org.uk>,
"thomas.petazzoni@...e-electrons.com"
<thomas.petazzoni@...e-electrons.com>,
"lorenzo.pieralisi@....com" <lorenzo.pieralisi@....com>,
"james.morse@....com" <james.morse@....com>,
"Liviu.Dudau@....com" <Liviu.Dudau@....com>,
"jason@...edaemon.net" <jason@...edaemon.net>,
"robh@...nel.org" <robh@...nel.org>,
"gabriel.fernandez@...aro.org" <gabriel.fernandez@...aro.org>,
"Minghuan.Lian@...escale.com" <Minghuan.Lian@...escale.com>,
"linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
zhangjukuo <zhangjukuo@...wei.com>,
qiuzhenfa <qiuzhenfa@...ilicon.com>,
"liudongdong (C)" <liudongdong3@...wei.com>,
qiujiang <qiujiang@...wei.com>,
"xuwei (O)" <xuwei5@...ilicon.com>,
"Liguozhu (Kenneth)" <liguozhu@...ilicon.com>,
"Wangkefeng (Kevin)" <wangkefeng.wang@...wei.com>,
Rob Herring <robh+dt@...nel.org>
Subject: Re: [PATCH v10 4/6] PCI: hisi: Add PCIe host support for HiSilicon SoC Hip05
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists