From: alex.bennee@linaro•org (Alex Bennée)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCH 3/3] arm64: kvm: Fix single step for guest skipped instructions
Date: Wed, 04 Oct 2017 11:50:59 +0100 [thread overview]
Message-ID: <87infvxk30.fsf@linaro.org> (raw)
In-Reply-To: <93d7d64e-e32c-0c6b-5d02-68704c1d45ba@redhat.com>
Paolo Bonzini <pbonzini@redhat•com> writes:
> On 04/10/2017 12:08, Alex Benn?e wrote:
>>
>> From 2e8fcea695a9eca67fbeb331d3104d1d9e7e337a Mon Sep 17 00:00:00 2001
>> From: =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro•org>
>> Date: Wed, 4 Oct 2017 09:49:41 +0000
>> Subject: [PATCH] kvm: exit run loop after emulating IO when single stepping
>> MIME-Version: 1.0
>> Content-Type: text/plain; charset=UTF-8
>> Content-Transfer-Encoding: 8bit
>>
>> If single-stepping is enabled we should exit the run-loop after
>> emulating the access. Otherwise single-stepping across emulated IO
>> accesses may skip an instruction.
>>
>> This only addresses user-space emulation. Stuff done in kernel-mode
>> should be handled there.
>>
>> Signed-off-by: Alex Benn?e <alex.bennee@linaro•org>
>> ---
>> accel/kvm/kvm-all.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
>> index 90c88b517d..85bcb2b0d4 100644
>> --- a/accel/kvm/kvm-all.c
>> +++ b/accel/kvm/kvm-all.c
>> @@ -1940,7 +1940,7 @@ int kvm_cpu_exec(CPUState *cpu)
>> run->io.direction,
>> run->io.size,
>> run->io.count);
>> - ret = 0;
>> + ret = cpu->singlestep_enabled ? EXCP_DEBUG : 0;
>> break;
>> case KVM_EXIT_MMIO:
>> DPRINTF("handle_mmio\n");
>> @@ -1950,7 +1950,7 @@ int kvm_cpu_exec(CPUState *cpu)
>> run->mmio.data,
>> run->mmio.len,
>> run->mmio.is_write);
>> - ret = 0;
>> + ret = cpu->singlestep_enabled ? EXCP_DEBUG : 0;
>> break;
>> case KVM_EXIT_IRQ_WINDOW_OPEN:
>> DPRINTF("irq_window_open\n");
>
> Singlestep mode doesn't make much sense for KVM. For TCG the purpose is
> to build one-instruction translation blocks, but what would it mean for KVM?
It's used by the kvm_arch_handle_debug() code to verify single-stepping
is enabled when processing debug exceptions. And also kvm_update_debug:
if (cpu->singlestep_enabled) {
data.dbg.control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
}
We also have an aliased singlestep_enabled in our disas_context for the
translator.
--
Alex Benn?e
next prev parent reply other threads:[~2017-10-04 10:50 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-30 9:01 [PATCH 0/3] Fix single step for traps Julien Thierry
2017-08-30 9:01 ` [PATCH 1/3] arm64: Use existing defines for mdscr Julien Thierry
2017-08-30 9:01 ` [PATCH 2/3] arm64: Fix single stepping in kernel traps Julien Thierry
2017-08-30 9:01 ` [PATCH 3/3] arm64: kvm: Fix single step for guest skipped instructions Julien Thierry
2017-08-30 9:19 ` Marc Zyngier
2017-08-30 9:40 ` Julien Thierry
2017-08-30 18:53 ` Christoffer Dall
2017-08-31 8:45 ` Julien Thierry
2017-08-31 8:54 ` Christoffer Dall
2017-08-31 9:37 ` Julien Thierry
2017-08-31 10:53 ` Christoffer Dall
2017-08-31 12:56 ` Julien Thierry
2017-08-31 13:28 ` Christoffer Dall
2017-08-31 13:57 ` Julien Thierry
2017-08-31 14:01 ` Christoffer Dall
2017-09-29 12:38 ` Julien Thierry
2017-10-03 14:57 ` Alex Bennée
2017-10-03 15:07 ` Julien Thierry
2017-10-03 15:48 ` Alex Bennée
2017-10-03 16:17 ` Julien Thierry
2017-10-03 16:30 ` Alex Bennée
2017-10-03 17:08 ` Julien Thierry
2017-10-03 17:26 ` Alex Bennée
2017-10-04 8:07 ` Julien Thierry
2017-10-04 10:08 ` Alex Bennée
2017-10-04 10:28 ` Paolo Bonzini
2017-10-04 10:50 ` Alex Bennée [this message]
2017-10-04 14:19 ` Paolo Bonzini
2017-10-04 10:42 ` Julien Thierry
2017-10-04 15:42 ` Alex Bennée
2017-10-04 16:10 ` Julien Thierry
2017-10-04 18:23 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87infvxk30.fsf@linaro.org \
--to=alex.bennee@linaro$(echo .)org \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox