On 18 September 2017 at 18:09, Lluís Vilanova <vilan...@ac.upc.edu> wrote: > Peter Maydell writes: >> It's also exposing internal QEMU implementation detail. >> What if in future we decide to switch from our current >> setup to always interpreting guest instructions as a >> first pass with JITting done only in the background for >> hot code? > > TCI still has a separation of translation-time (translate.c) and > execution-time > (interpreting the TCG opcodes), and I don't think that's gonna go away anytime > soon.
I didn't mean TCI, which is nothing like what you'd use for this if you did it (TCI is slower than just JITting.) > Even if it did, I think there still will be a translation/execution separation > easy enough to hook into (even if it's a "fake" one for the cold-path > interpreted instructions). But what would it mean? You don't have basic blocks any more. >> Sticking to instrumentation events that correspond exactly to guest >> execution events means they won't break or expose internals. > > It also means we won't be able to "conditionally" instrument instructions > (e.g., > based on their opcode, address range, etc.). You can still do that, it's just less efficient (your condition-check happens in the callout to the instrumentation plugin). We can add "filter" options later if we need them (which I would rather do than have translate-time callbacks). > Of course we can add the translation/execution differentiation later if we > find > it necessary for performance, but I would rather avoid leaving "historical" > instrumentation points behind on the API. > > What are the use-cases you're aiming for? * I want to be able to point the small stream of people who come into qemu-devel asking "how do I trace all my guest's memory accesses" at a clean API for it. * I want to be able to have less ugly and confusing tracing than our current -d output (and perhaps emit tracing in formats that other analysis tools want as input) * I want to keep this initial tracing API simple enough that we can agree on it and get a first working useful version. thanks -- PMM