Re: [PATCH RFC/RFB] x86_64, i386: interrupt dispatch changes




* Alexander van Heukelum <heukelum@xxxxxxxxxxx> wrote:

| > | Opteron (cycles): 1024 / 1157 / 3527
| > | Xeon E5345 (cycles): 1092 / 1085 / 6622
| > | Athlon XP (cycles): 1028 / 1166 / 5192
| >
| > Xeon is defenitely out of luck :-)
|
| it's still OK - i.e. no outrageous showstopper overhead anywhere in
| that instruction sequence. The total round-trip overhead is what will
| matter most.
|
| Ingo
|

Don't get me wrong please, I really like what Alexander have done!
But frankly six time slower is a bit scarying me.

the cost is 6 cycles instead of 1 cycles. In a codepath that takes
thousands of cycles and is often cache-limited.

Thanks again ;). Now it _is_ six times slower to do this tiny piece
of code... But please keep in mind all the activity that follows to
save the current data segment registers (the stack segment and code
segment are saved automatically), the general purpose registers and
to load most of the data segments with kernel-space values. And
looking at it now... do_IRQ is also not exactly trivial.

Also, I kept the information that is saved on the stack exactly the
same. If this is not a requirement, "push %cs" is what is left of
this expensive (6 cycle!) sequence. Even that could be unnecessary
if the stack layout can be changed... But I'ld like to consider that
separately.

we really want to keep the stack frame consistent between all the
context types. We can do things like return-to-userspace-from-irq or
schedule-from-irq-initiated-event, etc. - so crossing between these
context frames has to be standard and straightforward.

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: Structured Programming using Forth
    ... When there are 4 stack items and the word only uses two then the other ... What novel idea has werty had? ... So the surgeon's assistant processor could ... Or maybe "Hand this back after 17 cycles unless you ...
    (comp.lang.forth)
  • Re: Structured Programming using Forth
    ... When there are 4 stack items and the word only uses two then the other ... So the surgeon's assistant processor could ... Or maybe "Hand this back after 17 cycles unless you ... the surgeon seconds, and over a whole operation those seconds add up. ...
    (comp.lang.forth)
  • Re: whether this is valid
    ... located in data segment which is read only. ... And your *a is a pointer (located in your stack that means it be able ... This variable pointed to address that "str" located. ... you in stack and copy "str" from data segment to that memory. ...
    (comp.lang.c)
  • Re: Where is a static variable stored?
    ... Please write/repeat your question in the message text -- there ... are newsreaders which do not show subject and message text at ... it is located in the data segment of the program. ... Is it located at the stack? ...
    (comp.lang.c)
  • Re: where the storage will be allocated
    ... static ushort fractionalValue={ ... "fractionalValue" would be allocated (stack or data segment)? ... Or the compiler generate a code, that would allocate space on the ...
    (comp.lang.c)