On Tue, Sep 23, 2025 at 09:44:18AM +0200, Paolo Bonzini wrote:
> The "ust" backend is complex (tracetool contains two output formats just
> for that backend).  It is not clear if if it has any users, and LTTng
> anyway can use the uprobe tracepoints provided by the "dtrace" backend,
> therefore deprecate "ust".

LTTng UST cannot trace all of QEMU's SDT probes because QEMU uses SDT
semaphores. Semaphores appear to be unsupported by LTTng:
https://bugs.lttng.org/issues/1180

Here is an example that won't work:

  static MemTxResult  memory_region_read_accessor(MemoryRegion *mr,
                                                  hwaddr addr,
                                                  uint64_t *value,
                                                  unsigned size,
                                                  signed shift,
                                                  uint64_t mask,
                                                  MemTxAttrs attrs)
  {
      uint64_t tmp;
  
      tmp = mr->ops->read(mr->opaque, addr, size);
      if (mr->subpage) {
          trace_memory_region_subpage_read(get_cpu_index(), mr, addr, tmp, 
size);
      } else if (trace_event_get_state_backends(TRACE_MEMORY_REGION_OPS_READ)) {
                 ^^^ semaphore ^^^
          hwaddr abs_addr = memory_region_to_absolute_addr(mr, addr);
          trace_memory_region_ops_read(get_cpu_index(), mr, abs_addr, tmp, size,
                                       memory_region_name(mr));
      }

However, I don't remember hearing from LTTng UST users all these years,
so I think it's okay to deprecate this tracing backend.

Please update the commit description to mention that trace events that
use SDT semaphores do not work with LTTng UST.

Thanks,
Stefan

> 
> Signed-off-by: Paolo Bonzini <[email protected]>
> ---
>  docs/about/deprecated.rst | 9 +++++++++
>  meson.build               | 4 ++++
>  2 files changed, 13 insertions(+)
> 
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index aa300bbd507..57250f9d47f 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -533,3 +533,12 @@ command documentation for details on the ``fdset`` usage.
>  
>  The ``zero-blocks`` capability was part of the block migration which
>  doesn't exist anymore since it was removed in QEMU v9.1.
> +
> +Host features
> +-------------
> +
> +``ust`` tracing backend
> +-----------------------
> +
> +LTTng can use uprobe tracepoints, therefore it is recommended to use
> +the ``dtrace`` backend instead.
> diff --git a/meson.build b/meson.build
> index 72da97829ab..b5e2186b35e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -5073,3 +5073,7 @@ if not actually_reloc and (host_os == 'windows' or 
> get_option('relocatable'))
>    message('QEMU will have to be installed under ' + get_option('prefix') + 
> '.')
>    message('Use --disable-relocatable to remove this warning.')
>  endif
> +
> +if 'ust' in get_option('trace_backends')
> +  warning('ust trace backend is deprecated, use dtrace backend for uprobe 
> support')
> +endif
> -- 
> 2.51.0
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to