Thread (6 messages) 6 messages, 3 authors, 2007-08-29

Re: [PATCH] Move serial_dev_init to device_initcall()

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2007-08-24 04:59:10

On Thu, 2007-08-23 at 18:15 -0500, Olof Johansson wrote:
On Fri, Aug 24, 2007 at 01:21:57AM +0200, Guennadi Liakhovetski wrote:
quoted
On Wed, 22 Aug 2007, Olof Johansson wrote:
quoted
With the I/O space rewrite by BenH, the legacy_serial serial_dev_init()
initcall is now called before I/O space is setup, but it's dependent on
it being available.

Since there's no way to make dependencies between initcalls, we'll just
have to move it to device_initcall(). Yes, it's suboptimal but I'm not
aware of any better solution at this time.
Do I understand it right, that with this change all UARTs, controlled by 
legacy_serial will be initialized later, and that for example console 
output will be first possible later?
Yes, unfortunately. Unless they've got a udbg driver, since that
would give console output during early boot anyway (even without using
EARLY_DEBUG).
Legacy ports should get udbg first.
quoted
Maybe, if there is really no other 
possibility for I/O space devices, we could have both calls

arch_initcall(serial_mem_dev_init);
device_initcall(serial_io_dev_init);

so, that at least MEMIO based UARTs could still initialize as before?
That's quite a hack, I hope we can avoid it. Maybe Ben has some suggestion
on how to get the IO setup earlier instead.
IO space allocation now relies on get_vm_area() which can't be done too
early (not in setup_arch) which is why I allocate all PCI IO space at
PHB scanning time, which is a subsys initcall.

An option would be to do it from some other init call, but that's a bit
ugly. That means PCI would be split into setup_arch() setting up PHBs,
that initcall allocating the IO spaces, and later, the actual scan.

It would be tricky though as my current interface relies on pci_bus
structures. So you would also need to re-split that into a low-level
that works on the PHB and a high level version that works on the bus.

Is this really necessary ?

Ben.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help