> Mathieu Desnoyers wrote:
>> * Linus Torvalds (
torvalds@linux-foundation.org) wrote:
>>
>>> On Fri, 25 Apr 2008, H. Peter Anvin wrote:
>>>
>>>> Yes, that should work. It's still ugly, and I have to say I find the
>>>> complexity rather distasteful. I am willing to be convinced it's worth it,
>>>> but I would really like to see hard numbers.
>>>>
>>> I really cannot imagine that this kind of pain is *ever* worth it.
>>>
>>> Please give an example of something so important that we'd want to do
>>> complex code rewriting on the fly. What _is_ the point of imv_cond()?
>>>
>>> Linus
>>>
>> The point is to provide a way to dynamically enable code at runtime
>> without noticeable performance impact on the system. It's principally
>> useful to control the markers in the kernel, which can be placed in very
>> frequently executed code paths. The original markers add a memory read,
>> test and conditional branch at each marker site. By using the immediate
>> values patchset, it goes down to a load immediate value, test and branch.
>>
>> However, Ingo was still unhappy with the conditional branch, so I cooked
>> this jump patching optimization on top of the immediate values.
>
> I think all this demonstrates that the conditional branch is a bearable
> cost compared to the alternative. A conditional branch which almost
> always branches the same way is very predictable, and really shouldn't
> cost very much.