[LV] TURBOchannel support -- success!
Maciej W. Rozycki
macro at linux-mips.org
Fri Feb 23 18:54:04 CET 2007
On Fri, 23 Feb 2007, Kenn Humborg wrote:
> This is seriously cool! Are you working from Jan-Benedict's latest GIT
> tree?
Do you really think this work is valuable in any way? Well, then that
evening was not a waste of time after all... ;-)
I used the same tree I used for rewriting the TURBOchannel core, which is
a snapshot from linux-mips.org from Sep 20th, 2006, with all the changes
from JBG's tree applied on top and then some changes needed for an update
to 2.6.18, some bug fixes and then further bits for the KA49 itself. I
plan to update to 2.6.21 soon. It should be reasonably easy to update our
"official" tree for someone with some reasonable GIT experience as the
port seems well-separated.
This was only an initial attempt though. In the course I have discovered
these problems with the port that need to be addressed sooner or later if
it is to be treated seriously enough for a merge with upstream to be
possible one day:
1. Kernel-mode memory management -- vmalloc() is not implemented, the DMA
API is not implemented, ioremap() has serius limitations. My brief
study of how the MMU is implemented suggests these are not problems
that could not be overcome, but they require some considerable effort.
I am not sure if keeping page clustering in place is worth the hassle
-- these days there is nothing in Linux that would justify an
assumption about any fixed size of the page used.
2. Interrupt subsystem -- its unacceptable to keep interrupts masked for
long periods as it is done now. The problem is Linux assumes there is
a binary setting for interrupt enable available in addition to any
prioritisation available. We do not have such a control, but we may
still be able to fit reasonably in the Linux model. For systems with
external per-device masks (such as the KA49) the IPL may be lowered
once the source has been masked. Systems with no external interrupt
masks (I gather there are some -- am I correct?) are more difficult.
In principle the IPL may be left intact in the handler under the
assumption the designers made their homework and low-priority devices
do not really mind long latencies, but this approach still leaves the
question as to how to handle local_irq_disable(), local_irq_enable()
and irqs_disabled(). I guess we should try to adopt the approach taken
by the Alpha port, which, although seemingly opposite to what happened
in the history, might have a chance to succeed. Additionally the
interrupt controller model has to be implemented.
What do you think?
I can publish patches once I polish them a little bit if there is
interest. TURBOchannel framebuffer devices should work too, but for now
the REX emulator has to be run before a bootstrap to initialize the
boards.
Maciej
_______________________________________________
Linux-Vax mailing list
Linux-Vax at pergamentum.com
http://www.pergamentum.com/mailman/listinfo/linux-vax
More information about the Vax-linux
mailing list