From: "Alex Bennée" <alex.bennee@linaro.org>
To: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
Cc: Greg Kurz <groug@kaod.org>,
pbonzini@redhat.com, doug16k@gmail.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v1 2/2] gdbstub: don't fail on vCont; C04:0; c packets
Date: Wed, 31 May 2017 18:23:28 +0100 [thread overview]
Message-ID: <87shjlrldb.fsf@linaro.org> (raw)
In-Reply-To: <20170531185106.126f19ac@p-imbrenda.boeblingen.de.ibm.com>
Claudio Imbrenda <imbrenda@linux.vnet.ibm.com> writes:
> On Wed, 31 May 2017 18:33:24 +0200
> Greg Kurz <groug@kaod.org> wrote:
>
>> On Wed, 31 May 2017 18:17:37 +0200
>> Claudio Imbrenda <imbrenda@linux.vnet.ibm.com> wrote:
>>
>> > On Wed, 31 May 2017 16:09:33 +0100
>> > Alex Bennée <alex.bennee@linaro.org> wrote:
>> >
>> > > The thread-id of 0 means any CPU but we then ignore the fact we
>> > > find the first_cpu in this case who can have an index of 0.
>> > > Instead of bailing out just test if we have managed to match up
>> > > thread-id to a CPU.
>> > >
>> > > Otherwise you get:
>> > > gdb_handle_packet: command='vCont;C04:0;c'
>> > > put_packet: reply='E22'
>> > >
>> > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> > > ---
>> > > gdbstub.c | 4 ++--
>> > > 1 file changed, 2 insertions(+), 2 deletions(-)
>> > >
>> > > diff --git a/gdbstub.c b/gdbstub.c
>> > > index a249846954..29c9ed3002 100644
>> > > --- a/gdbstub.c
>> > > +++ b/gdbstub.c
>> > > @@ -934,8 +934,8 @@ static int gdb_handle_vcont(GDBState *s, const
>> > > char *p)
>> > > * CPU first, and only then we can use its index.
>> > > */
>> > > cpu = find_cpu(idx);
>> > > - /* invalid CPU/thread specified */
>> > > - if (!idx || !cpu) {
>> > > + /* invalid thread specified, cpu not found. */
>> > > + if (!cpu) {
>> > > res = -EINVAL;
>> > > goto out;
>> > > }
>> >
>> > This is strange. cpu_index() is defined as:
>> >
>> > static inline int cpu_index(CPUState *cpu)
>> > {
>> > #if defined(CONFIG_USER_ONLY)
>> > return cpu->host_tid;
>> > #else
>> > return cpu->cpu_index + 1;
>> > #endif
>> > }
>> >
>> > therefore it shouldn't return 0 under any circumstance, and
>>
>> I think it is 0 for first_cpu in user mode.
>
> in linux-user/syscall.c:
>
> info->tid = gettid();
> cpu->host_tid = info->tid;
>
> kernel thread-ids are system-wide unique and can't be 0
This only applies to newly cloned threads. The first is unset.
>
>> > find_cpu(idx) should also fail if idx == 0, because internally it
>> > also uses cpu_index()
>> >
>> > on the other hand, you say that the patch does fix the problem for
>> > you, which really confuses me.
>> >
>> >
>> >
>> > (probably) completely unrelatedly, this:
>> >
>> > res = qemu_strtoul(p + 1, &p, 16, &tmp);
>> >
>> > should be like this instead:
>> >
>> > res = qemu_strtoul(p, &p, 16, &tmp);
>> >
>> > but this shouldn't impact you in any way.
>> >
>> >
>> >
>>
--
Alex Bennée
prev parent reply other threads:[~2017-05-31 17:23 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-31 15:09 [Qemu-devel] [PATCH v1 0/2] some gdbstub fixes for debug and vcont Alex Bennée
2017-05-31 15:09 ` [Qemu-devel] [PATCH v1 1/2] gdbstub: modernise DEBUG_GDB Alex Bennée
2017-05-31 15:22 ` Philippe Mathieu-Daudé
2017-05-31 15:50 ` Greg Kurz
2017-05-31 15:09 ` [Qemu-devel] [PATCH v1 2/2] gdbstub: don't fail on vCont; C04:0; c packets Alex Bennée
2017-05-31 16:17 ` Greg Kurz
2017-05-31 16:27 ` Alex Bennée
2017-05-31 16:17 ` Claudio Imbrenda
2017-05-31 16:26 ` Alex Bennée
2017-05-31 16:33 ` Greg Kurz
2017-05-31 16:51 ` Claudio Imbrenda
2017-05-31 17:06 ` Greg Kurz
2017-05-31 17:40 ` Claudio Imbrenda
2017-05-31 18:16 ` Alex Bennée
2017-05-31 18:33 ` Greg Kurz
2017-05-31 17:23 ` Alex Bennée [this message]
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=87shjlrldb.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=doug16k@gmail.com \
--cc=groug@kaod.org \
--cc=imbrenda@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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.