From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
Christoffer Dall <christoffer.dall@linaro.org>,
Zhichao Huang <zhichao.huang@linaro.org>,
kvm-devel <kvm@vger.kernel.org>,
arm-mail-list <linux-arm-kernel@lists.infradead.org>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
Marc Zyngier <marc.zyngier@arm.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v2 3/4] target-arm: kvm - support for single step
Date: Tue, 21 Apr 2015 13:56:45 +0100 [thread overview]
Message-ID: <87tww9vdv6.fsf@linaro.org> (raw)
In-Reply-To: <CAFEAcA_dqx-78AoGiHViv_tMCDkSd7Uf2GpUz+uBm5QbgX0nvg@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On 31 March 2015 at 16:40, Alex Bennée <alex.bennee@linaro.org> wrote:
>> This adds support for single-step. There isn't much to do on the QEMU
>> side as after we set-up the request for single step via the debug ioctl
>> it is all handled within the kernel.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>
>> ---
>> v2
>> - convert to using HSR_EC
>>
>> diff --git a/target-arm/kvm.c b/target-arm/kvm.c
>> index 290c1fe..ae0f8b2 100644
>> --- a/target-arm/kvm.c
>> +++ b/target-arm/kvm.c
>> @@ -475,6 +475,7 @@ void kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
>> */
>>
>> #define HSR_EC_SHIFT 26
>> +#define HSR_EC_SOFT_STEP 0x32
>> #define HSR_EC_SW_BKPT 0x3c
>
> We already include internals.h in this file, so can you just use
> the EC_* constants and ARM_EL_EC_SHIFT rather than defining
> new ones? (Applies for patch 1 as well.)
>
>> static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> @@ -483,6 +484,13 @@ static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> int hsr_ec = arch_info->hsr >> HSR_EC_SHIFT;
>>
>> switch (hsr_ec) {
>> + case HSR_EC_SOFT_STEP:
>> + if (cs->singlestep_enabled) {
>> + return true;
>> + } else {
>> + error_report("Came out of SINGLE STEP when not enabled");
>
> This can only happen if there's a kernel bug, right?
Sure. Should we report it differently? abort() out?
>
>> + }
>> + break;
>> case HSR_EC_SW_BKPT:
>> if (kvm_find_sw_breakpoint(cs, arch_info->pc)) {
>> return true;
>> @@ -542,6 +550,9 @@ int kvm_arch_on_sigbus(int code, void *addr)
>>
>> void kvm_arch_update_guest_debug(CPUState *cs, struct kvm_guest_debug *dbg)
>> {
>> + if (cs->singlestep_enabled) {
>> + dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
>> + }
>> if (kvm_sw_breakpoints_active(cs)) {
>> dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP;
>> }
>> --
>> 2.3.4
>>
>
>
> thanks
> -- PMM
--
Alex Bennée
WARNING: multiple messages have this Message-ID (diff)
From: alex.bennee@linaro.org (Alex Bennée)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 3/4] target-arm: kvm - support for single step
Date: Tue, 21 Apr 2015 13:56:45 +0100 [thread overview]
Message-ID: <87tww9vdv6.fsf@linaro.org> (raw)
In-Reply-To: <CAFEAcA_dqx-78AoGiHViv_tMCDkSd7Uf2GpUz+uBm5QbgX0nvg@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On 31 March 2015 at 16:40, Alex Benn?e <alex.bennee@linaro.org> wrote:
>> This adds support for single-step. There isn't much to do on the QEMU
>> side as after we set-up the request for single step via the debug ioctl
>> it is all handled within the kernel.
>>
>> Signed-off-by: Alex Benn?e <alex.bennee@linaro.org>
>>
>> ---
>> v2
>> - convert to using HSR_EC
>>
>> diff --git a/target-arm/kvm.c b/target-arm/kvm.c
>> index 290c1fe..ae0f8b2 100644
>> --- a/target-arm/kvm.c
>> +++ b/target-arm/kvm.c
>> @@ -475,6 +475,7 @@ void kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
>> */
>>
>> #define HSR_EC_SHIFT 26
>> +#define HSR_EC_SOFT_STEP 0x32
>> #define HSR_EC_SW_BKPT 0x3c
>
> We already include internals.h in this file, so can you just use
> the EC_* constants and ARM_EL_EC_SHIFT rather than defining
> new ones? (Applies for patch 1 as well.)
>
>> static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> @@ -483,6 +484,13 @@ static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> int hsr_ec = arch_info->hsr >> HSR_EC_SHIFT;
>>
>> switch (hsr_ec) {
>> + case HSR_EC_SOFT_STEP:
>> + if (cs->singlestep_enabled) {
>> + return true;
>> + } else {
>> + error_report("Came out of SINGLE STEP when not enabled");
>
> This can only happen if there's a kernel bug, right?
Sure. Should we report it differently? abort() out?
>
>> + }
>> + break;
>> case HSR_EC_SW_BKPT:
>> if (kvm_find_sw_breakpoint(cs, arch_info->pc)) {
>> return true;
>> @@ -542,6 +550,9 @@ int kvm_arch_on_sigbus(int code, void *addr)
>>
>> void kvm_arch_update_guest_debug(CPUState *cs, struct kvm_guest_debug *dbg)
>> {
>> + if (cs->singlestep_enabled) {
>> + dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
>> + }
>> if (kvm_sw_breakpoints_active(cs)) {
>> dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP;
>> }
>> --
>> 2.3.4
>>
>
>
> thanks
> -- PMM
--
Alex Benn?e
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
Christoffer Dall <christoffer.dall@linaro.org>,
Zhichao Huang <zhichao.huang@linaro.org>,
kvm-devel <kvm@vger.kernel.org>,
arm-mail-list <linux-arm-kernel@lists.infradead.org>,
"kvmarm\@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
Marc Zyngier <marc.zyngier@arm.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v2 3/4] target-arm: kvm - support for single step
Date: Tue, 21 Apr 2015 13:56:45 +0100 [thread overview]
Message-ID: <87tww9vdv6.fsf@linaro.org> (raw)
In-Reply-To: <CAFEAcA_dqx-78AoGiHViv_tMCDkSd7Uf2GpUz+uBm5QbgX0nvg@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On 31 March 2015 at 16:40, Alex Bennée <alex.bennee@linaro.org> wrote:
>> This adds support for single-step. There isn't much to do on the QEMU
>> side as after we set-up the request for single step via the debug ioctl
>> it is all handled within the kernel.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>
>> ---
>> v2
>> - convert to using HSR_EC
>>
>> diff --git a/target-arm/kvm.c b/target-arm/kvm.c
>> index 290c1fe..ae0f8b2 100644
>> --- a/target-arm/kvm.c
>> +++ b/target-arm/kvm.c
>> @@ -475,6 +475,7 @@ void kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
>> */
>>
>> #define HSR_EC_SHIFT 26
>> +#define HSR_EC_SOFT_STEP 0x32
>> #define HSR_EC_SW_BKPT 0x3c
>
> We already include internals.h in this file, so can you just use
> the EC_* constants and ARM_EL_EC_SHIFT rather than defining
> new ones? (Applies for patch 1 as well.)
>
>> static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> @@ -483,6 +484,13 @@ static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> int hsr_ec = arch_info->hsr >> HSR_EC_SHIFT;
>>
>> switch (hsr_ec) {
>> + case HSR_EC_SOFT_STEP:
>> + if (cs->singlestep_enabled) {
>> + return true;
>> + } else {
>> + error_report("Came out of SINGLE STEP when not enabled");
>
> This can only happen if there's a kernel bug, right?
Sure. Should we report it differently? abort() out?
>
>> + }
>> + break;
>> case HSR_EC_SW_BKPT:
>> if (kvm_find_sw_breakpoint(cs, arch_info->pc)) {
>> return true;
>> @@ -542,6 +550,9 @@ int kvm_arch_on_sigbus(int code, void *addr)
>>
>> void kvm_arch_update_guest_debug(CPUState *cs, struct kvm_guest_debug *dbg)
>> {
>> + if (cs->singlestep_enabled) {
>> + dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
>> + }
>> if (kvm_sw_breakpoints_active(cs)) {
>> dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP;
>> }
>> --
>> 2.3.4
>>
>
>
> thanks
> -- PMM
--
Alex Bennée
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: kvm-devel <kvm@vger.kernel.org>,
Marc Zyngier <marc.zyngier@arm.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Christoffer Dall <christoffer.dall@linaro.org>,
Zhichao Huang <zhichao.huang@linaro.org>,
Paolo Bonzini <pbonzini@redhat.com>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
arm-mail-list <linux-arm-kernel@lists.infradead.org>
Subject: Re: [Qemu-devel] [PATCH v2 3/4] target-arm: kvm - support for single step
Date: Tue, 21 Apr 2015 13:56:45 +0100 [thread overview]
Message-ID: <87tww9vdv6.fsf@linaro.org> (raw)
In-Reply-To: <CAFEAcA_dqx-78AoGiHViv_tMCDkSd7Uf2GpUz+uBm5QbgX0nvg@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On 31 March 2015 at 16:40, Alex Bennée <alex.bennee@linaro.org> wrote:
>> This adds support for single-step. There isn't much to do on the QEMU
>> side as after we set-up the request for single step via the debug ioctl
>> it is all handled within the kernel.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>
>> ---
>> v2
>> - convert to using HSR_EC
>>
>> diff --git a/target-arm/kvm.c b/target-arm/kvm.c
>> index 290c1fe..ae0f8b2 100644
>> --- a/target-arm/kvm.c
>> +++ b/target-arm/kvm.c
>> @@ -475,6 +475,7 @@ void kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
>> */
>>
>> #define HSR_EC_SHIFT 26
>> +#define HSR_EC_SOFT_STEP 0x32
>> #define HSR_EC_SW_BKPT 0x3c
>
> We already include internals.h in this file, so can you just use
> the EC_* constants and ARM_EL_EC_SHIFT rather than defining
> new ones? (Applies for patch 1 as well.)
>
>> static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> @@ -483,6 +484,13 @@ static int kvm_handle_debug(CPUState *cs, struct kvm_run *run)
>> int hsr_ec = arch_info->hsr >> HSR_EC_SHIFT;
>>
>> switch (hsr_ec) {
>> + case HSR_EC_SOFT_STEP:
>> + if (cs->singlestep_enabled) {
>> + return true;
>> + } else {
>> + error_report("Came out of SINGLE STEP when not enabled");
>
> This can only happen if there's a kernel bug, right?
Sure. Should we report it differently? abort() out?
>
>> + }
>> + break;
>> case HSR_EC_SW_BKPT:
>> if (kvm_find_sw_breakpoint(cs, arch_info->pc)) {
>> return true;
>> @@ -542,6 +550,9 @@ int kvm_arch_on_sigbus(int code, void *addr)
>>
>> void kvm_arch_update_guest_debug(CPUState *cs, struct kvm_guest_debug *dbg)
>> {
>> + if (cs->singlestep_enabled) {
>> + dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
>> + }
>> if (kvm_sw_breakpoints_active(cs)) {
>> dbg->control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP;
>> }
>> --
>> 2.3.4
>>
>
>
> thanks
> -- PMM
--
Alex Bennée
next prev parent reply other threads:[~2015-04-21 12:56 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-31 15:40 [PATCH v2 0/4] QEMU support for KVM Guest Debug on arm64 Alex Bennée
2015-03-31 15:40 ` [Qemu-devel] " Alex Bennée
2015-03-31 15:40 ` Alex Bennée
2015-03-31 15:40 ` [PATCH v2 1/4] linux-headers: partial sync from my kernel tree (DEV) Alex Bennée
2015-03-31 15:40 ` [Qemu-devel] " Alex Bennée
2015-03-31 15:40 ` Alex Bennée
2015-03-31 15:40 ` [PATCH v2 2/4] target-arm: kvm - implement software breakpoints Alex Bennée
2015-03-31 15:40 ` [Qemu-devel] " Alex Bennée
2015-03-31 15:40 ` Alex Bennée
2015-04-20 19:44 ` Peter Maydell
2015-04-20 19:44 ` [Qemu-devel] " Peter Maydell
2015-04-20 19:44 ` Peter Maydell
2015-03-31 15:40 ` [PATCH v2 3/4] target-arm: kvm - support for single step Alex Bennée
2015-03-31 15:40 ` [Qemu-devel] " Alex Bennée
2015-03-31 15:40 ` Alex Bennée
2015-04-20 19:49 ` Peter Maydell
2015-04-20 19:49 ` [Qemu-devel] " Peter Maydell
2015-04-20 19:49 ` Peter Maydell
2015-04-21 12:56 ` Alex Bennée [this message]
2015-04-21 12:56 ` [Qemu-devel] " Alex Bennée
2015-04-21 12:56 ` Alex Bennée
2015-04-21 12:56 ` Alex Bennée
2015-04-21 13:01 ` Peter Maydell
2015-04-21 13:01 ` [Qemu-devel] " Peter Maydell
2015-04-21 13:01 ` Peter Maydell
2015-03-31 15:40 ` [PATCH v2 4/4] target-arm: kvm - add support for HW assisted debug Alex Bennée
2015-03-31 15:40 ` [Qemu-devel] " Alex Bennée
2015-03-31 15:40 ` Alex Bennée
2015-04-20 20:23 ` Peter Maydell
2015-04-20 20:23 ` [Qemu-devel] " Peter Maydell
2015-04-20 20:23 ` Peter Maydell
2015-04-21 13:08 ` Alex Bennée
2015-04-21 13:08 ` [Qemu-devel] " Alex Bennée
2015-04-21 13:08 ` Alex Bennée
2015-04-20 15:17 ` [PATCH v2 0/4] QEMU support for KVM Guest Debug on arm64 Alex Bennée
2015-04-20 15:17 ` [Qemu-devel] " Alex Bennée
2015-04-20 15:17 ` 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=87tww9vdv6.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=christoffer.dall@linaro.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=zhichao.huang@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.