Messages in this thread | | | Subject | Re: [RFC v2 0/6] x86: dynamic indirect branch promotion | From | Nadav Amit <> | Date | Tue, 8 Jan 2019 12:47:42 -0800 |
| |
> On Jan 8, 2019, at 11:01 AM, Peter Zijlstra <peterz@infradead.org> wrote: > > On Tue, Jan 08, 2019 at 10:28:02AM -0800, Nadav Amit wrote: >> Is it really that important for debugging to get the instructions at the >> time of execution? Wouldn’t it be easier to annotate the instructions that >> might change? After all, it is not as if any instruction can change to any >> other instruction. > > I think PT has a bitstream encoding of branch-taken; to decode and > follow the actual code-flow you then need to have the actual and > accurate branch target from the code. If we go muck about with the code > and change that, decoding gets somewhat 'tricky'. > > Or something along those lines..
Thanks for the explanation (I now see it in the SDM and sources).
Basically, the updates should not be done too frequently, and I can expose an interface to suspend them (this will not affect correctness). I think this can be the easiest solution, which should not affect the workload execution too much.
A general solution is more complicated, however, due to the racy nature of cross-modifying code. There would need to be TSC recording of the time before the modifications start and after they are done.
BTW: I am not sure that static-keys are much better. Their change also affects the control flow, and they do affect the control flow.
| |