Re: 2.2.18Pre Lan Performance Rocks!

Jeff V. Merkey
2000-11-01T00:05:50Z

Alan Cox wrote:
>
> > One more optimization it has. NetWare never "calls" functions in the
> > kernel. There's a template of register assignments in between kernel
> > modules that's very strict (esi contains a WTD head, edi has the target
> > thread, etc.) and all function calls are jumps in a linear space.
>
> What if I jump to an invalid address - does it crash ?

The jumps are all to defined labels in the code, so there's never one
that's invalid. The only exception are the jump tables in the MSM and
TSM lan modules, and yes it does crash is a bad driver gets loaded, but
that's the same as Linux. NetWare avoids using jump tables since they
cause an AGI to get generated, which will interlock the processor
pipelines. If you load an address on Intel, then immediately attempt to
use it, the processor will generate and Address Generation Interlock
(AGI) that will interlock the piplines so the request can be serviced
immediately. This cost 2 clocks per address jump used, plus it shuts
down the paralellism in the piplines.

Jeff