When running a guest-3 via VSIE, guest-1 needs to shadow the page table structures of guest-2. To reflect changes of the guest-2 in the _shadowed_ page table structures, the _shadowing_ sturctures sometimes need to be rebuilt. Since this is a costly operation, it should be avoided whenever possible. This series adds kvm stat counters to count the number of shadow gmaps created and a tracepoint whenever something is unshadowed. This is a first step to try and improve VSIE performance. Please note that "KVM: s390: add tracepoint in gmap notifier" has some checkpatch --strict findings. I did not fix these since the tracepoint definition would then look completely different from all the other tracepoints in arch/s390/kvm/trace-s390.h. If you want me to fix that, please let me know. While developing this, a question regarding the stat counters came up: there's usually no locking involved when the stat counters are incremented. On s390, GCC accidentally seems to do the right thing(TM) most of the time by generating a agsi instruction (which should be atomic given proper alignment). However, it's not guaranteed, so would we rather want to go with an atomic for the stat counters to avoid losing events? Or do we just accept the fact that we might loose events sometimes? Is there anything that speaks against having an atomic in kvm_stat? Nico Boehr (3): KVM: s390: fix space before open parenthesis KVM: s390: add stat counter for shadow gmap events KVM: s390: add tracepoint in gmap notifier arch/s390/include/asm/kvm_host.h | 7 ++++++- arch/s390/kvm/gaccess.c | 6 ++++++ arch/s390/kvm/kvm-s390.c | 9 ++++++++- arch/s390/kvm/trace-s390.h | 23 +++++++++++++++++++++++ arch/s390/kvm/vsie.c | 1 + 5 files changed, 44 insertions(+), 2 deletions(-) -- 2.39.1