| From 964b7aa0b040bdc6ec1c543ee620cda3f8b4c68a Mon Sep 17 00:00:00 2001 |
| From: David Woodhouse <dwmw@amazon.co.uk> |
| Date: Sun, 14 Nov 2021 08:59:02 +0000 |
| Subject: KVM: Fix steal time asm constraints |
| |
| From: David Woodhouse <dwmw@amazon.co.uk> |
| |
| commit 964b7aa0b040bdc6ec1c543ee620cda3f8b4c68a upstream. |
| |
| In 64-bit mode, x86 instruction encoding allows us to use the low 8 bits |
| of any GPR as an 8-bit operand. In 32-bit mode, however, we can only use |
| the [abcd] registers. For which, GCC has the "q" constraint instead of |
| the less restrictive "r". |
| |
| Also fix st->preempted, which is an input/output operand rather than an |
| input. |
| |
| Fixes: 7e2175ebd695 ("KVM: x86: Fix recording of guest steal time / preempted status") |
| Reported-by: kernel test robot <lkp@intel.com> |
| Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> |
| Message-Id: <89bf72db1b859990355f9c40713a34e0d2d86c98.camel@infradead.org> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/kvm/x86.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/arch/x86/kvm/x86.c |
| +++ b/arch/x86/kvm/x86.c |
| @@ -3237,9 +3237,9 @@ static void record_steal_time(struct kvm |
| "xor %1, %1\n" |
| "2:\n" |
| _ASM_EXTABLE_UA(1b, 2b) |
| - : "+r" (st_preempted), |
| - "+&r" (err) |
| - : "m" (st->preempted)); |
| + : "+q" (st_preempted), |
| + "+&r" (err), |
| + "+m" (st->preempted)); |
| if (err) |
| goto out; |
| |