> On Jan 8, 2019, at 11:01 AM, Peter Zijlstra <pet...@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.