Are you using the single-shot timer or the periodic timer?
I'm using the single-shot timer.
How are you calculating clock time?
Copied code in from Mini-OS. To make sure I don't get drift between deadlines as this is a single shot timer I read monotonic_clock at startup and then calculate every deadline by incrementing this register by the period on each timer call.
As an additional comment. I decided to filter out the samples with negative latency. This seems to happen 100 times a second, i.e. the 10 ms Hypervisor timer event. This improves the timings considerably. So it looks like I'm on the right track looking for ways to distinguish between timer events.