By adding idte, we are now able to expose the DAT-enhancement facility to our guest. Also, properly simulate and expose the local-tlb-clearing facility.
To improve the TLB flushing, we will have to remember each used table (or at least a hash!) for each tlb entry, just like real HW does. This allows me to start an upstream kernel (having also the mvcos patch applied) compiled for z9 using: qemu-system-s390x ... -cpu qemu,mvcos=on,stfle=on,ldisp=on,ldisphp=on,\ eimm=on,stckf=on,csst=on,csst2=on,ginste=on,\ exrl=on,dateh=on,ltlbc=on Linux will detect the DAT-enhancement facility and use idte+cspg. v1 -> v2: - Allow to enable the DAT-enhancement facility. - Fix wrong register in idte. - Simply set m4 to zero in case local-tlb-clearing is not enabled. David Hildenbrand (3): target/s390x: Indicate and check for local tlb clearing target/s390x: Improve heuristic for ipte target/s390x: Implement idte instruction target/s390x/cpu_models.c | 2 ++ target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 78 +++++++++++++++++++++++++++++++++++++++------- target/s390x/translate.c | 21 ++++++++++++- 5 files changed, 92 insertions(+), 12 deletions(-) -- 2.9.4