qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kurz <groug@kaod.org>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: pbonzini@redhat.com, doug16k@gmail.com,
	imbrenda@linux.vnet.ibm.com, Riku Voipio <riku.voipio@iki.fi>,
	qemu-devel@nongnu.org, Laurent Vivier <laurent@vivier.eu>
Subject: Re: [Qemu-devel] [PATCH v2 3/4] qom/cpu: remove host_tid field
Date: Thu, 1 Jun 2017 17:32:13 +0200	[thread overview]
Message-ID: <20170601173213.08fe7e4f@bahia.lan> (raw)
In-Reply-To: <20170601144915.20778-4-alex.bennee@linaro.org>

[-- Attachment #1: Type: text/plain, Size: 4218 bytes --]

On Thu,  1 Jun 2017 15:49:14 +0100
Alex Bennée <alex.bennee@linaro.org> wrote:

> This was only used by the gdbstub and even then was only being set for
> subsequent threads. Rather the continue duplicating the number just
> make the gdbstub get the information from TaskState structure.
> 
> Now the tid is correctly reported for all threads the bug I was seeing
> with "vCont;C04:0;c" packets is fixed as the correct tid is reported
> to gdb.
> 
> I moved cpu_gdb_index into the gdbstub to facilitate easy access to
> the TaskState which is used elsewhere in gdbstub.
> 

FWIW, this change would make more sense in patch 2 since all users
are in gdbstub.c and it would avoid to change things twice. No big
deal compared to the benefit of dropping the broken @host_tid :)

> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---

In any case.

Reviewed-by: Greg Kurz <groug@kaod.org>

>  gdbstub.c              | 15 +++++++++++++++
>  include/exec/gdbstub.h | 14 --------------
>  include/qom/cpu.h      |  2 --
>  linux-user/syscall.c   |  1 -
>  4 files changed, 15 insertions(+), 17 deletions(-)
> 
> diff --git a/gdbstub.c b/gdbstub.c
> index 026d1fe6bb..45a3a0b16b 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -55,6 +55,21 @@ static inline int target_memory_rw_debug(CPUState *cpu, target_ulong addr,
>      return cpu_memory_rw_debug(cpu, addr, buf, len, is_write);
>  }
>  
> +/* Return the GDB index for a given vCPU state.
> + *
> + * For user mode this is simply the thread id. In system mode GDB
> + * numbers CPUs from 1 as 0 is reserved as an "any cpu" index.
> + */
> +static inline int cpu_gdb_index(CPUState *cpu)
> +{
> +#if defined(CONFIG_USER_ONLY)
> +    TaskState *ts = (TaskState *) cpu->opaque;
> +    return ts->ts_tid;
> +#else
> +    return cpu->cpu_index + 1;
> +#endif
> +}
> +
>  enum {
>      GDB_SIGNAL_0 = 0,
>      GDB_SIGNAL_INT = 2,
> diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
> index c4fe567600..9aa7756d92 100644
> --- a/include/exec/gdbstub.h
> +++ b/include/exec/gdbstub.h
> @@ -58,20 +58,6 @@ void gdb_register_coprocessor(CPUState *cpu,
>                                gdb_reg_cb get_reg, gdb_reg_cb set_reg,
>                                int num_regs, const char *xml, int g_pos);
>  
> -/* Return the GDB index for a given vCPU state.
> - *
> - * For user mode this is simply the thread id. In system mode GDB
> - * numbers CPUs from 1 as 0 is reserved as an "any cpu" index.
> - */
> -static inline int cpu_gdb_index(CPUState *cpu)
> -{
> -#if defined(CONFIG_USER_ONLY)
> -    return cpu->host_tid;
> -#else
> -    return cpu->cpu_index + 1;
> -#endif
> -}
> -
>  /* The GDB remote protocol transfers values in target byte order.  This means
>   * we can use the raw memory access routines to access the value buffer.
>   * Conveniently, these also handle the case where the buffer is mis-aligned.
> diff --git a/include/qom/cpu.h b/include/qom/cpu.h
> index 55214ce131..909e7ae994 100644
> --- a/include/qom/cpu.h
> +++ b/include/qom/cpu.h
> @@ -266,7 +266,6 @@ struct qemu_work_item;
>   * @nr_cores: Number of cores within this CPU package.
>   * @nr_threads: Number of threads within this CPU.
>   * @numa_node: NUMA node this CPU is belonging to.
> - * @host_tid: Host thread ID.
>   * @running: #true if CPU is currently running (lockless).
>   * @has_waiter: #true if a CPU is currently waiting for the cpu_exec_end;
>   * valid under cpu_list_lock.
> @@ -321,7 +320,6 @@ struct CPUState {
>      HANDLE hThread;
>  #endif
>      int thread_id;
> -    uint32_t host_tid;
>      bool running, has_waiter;
>      struct QemuCond *halt_cond;
>      bool thread_kicked;
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index cec8428589..cada188e58 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6216,7 +6216,6 @@ static void *clone_func(void *arg)
>      thread_cpu = cpu;
>      ts = (TaskState *)cpu->opaque;
>      info->tid = gettid();
> -    cpu->host_tid = info->tid;
>      task_settid(ts);
>      if (info->child_tidptr)
>          put_user_u32(info->tid, info->child_tidptr);


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  reply	other threads:[~2017-06-01 15:32 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-01 14:49 [Qemu-devel] [PATCH v2 0/4] some gdbstub fixes for debug and vcont Alex Bennée
2017-06-01 14:49 ` [Qemu-devel] [PATCH v2 1/4] gdbstub: modernise DEBUG_GDB Alex Bennée
2017-06-01 14:49 ` [Qemu-devel] [PATCH v2 2/4] gdbstub: rename cpu_index -> cpu_gdb_index Alex Bennée
2017-06-01 15:13   ` Greg Kurz
2017-06-01 15:48   ` Claudio Imbrenda
2017-06-02  5:02   ` Philippe Mathieu-Daudé
2017-06-01 14:49 ` [Qemu-devel] [PATCH v2 3/4] qom/cpu: remove host_tid field Alex Bennée
2017-06-01 15:32   ` Greg Kurz [this message]
2017-06-01 15:54     ` Claudio Imbrenda
2017-06-01 15:52   ` Philippe Mathieu-Daudé
2017-06-01 16:11   ` Laurent Vivier
2017-06-01 14:49 ` [Qemu-devel] [PATCH v2 4/4] gdbstub: don't fail on vCont; C04:0; c packets Alex Bennée
2017-06-01 15:54   ` Philippe Mathieu-Daudé
2017-06-01 15:54   ` Claudio Imbrenda

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=20170601173213.08fe7e4f@bahia.lan \
    --to=groug@kaod.org \
    --cc=alex.bennee@linaro.org \
    --cc=doug16k@gmail.com \
    --cc=imbrenda@linux.vnet.ibm.com \
    --cc=laurent@vivier.eu \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=riku.voipio@iki.fi \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).