On Fri, Feb 16, 2024 at 10:36:15PM +0100, Eric Farman wrote:
The routine ar_translation() can be reached by both the instruction intercept path (where the access registers had been loaded with the guest register contents), and the MEM_OP ioctls (which hadn't). Since this routine saves the current registers to vcpu->run, this routine erroneously saves host registers into the guest space.
Introduce a boolean in the kvm_vcpu_arch struct to indicate whether the registers contain guest contents. If they do (the instruction intercept path), the save can be performed and the AR translation is done just as it is today. If they don't (the MEM_OP path), the AR can be read from vcpu->run without stashing the current contents.
Signed-off-by: Eric Farman farman@linux.ibm.com
arch/s390/include/asm/kvm_host.h | 1 + arch/s390/kvm/gaccess.c | 3 ++- arch/s390/kvm/kvm-s390.c | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-)
Reviewed-by: Heiko Carstens hca@linux.ibm.com