All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Adam Williamson <awilliam@redhat.com>,
	 qemu-devel@nongnu.org,  Paul Durrant <paul@xen.org>,
	 xen-devel@lists.xenproject.org,
	 Stefano Stabellini <sstabellini@kernel.org>,
	 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	 Anthony PERARD <anthony@xenproject.org>
Subject: Re: [PATCH] xen/passthrough: add missing error-report include
Date: Fri, 18 Jul 2025 15:20:35 +0200	[thread overview]
Message-ID: <87h5z9eiu4.fsf@pond.sub.org> (raw)
In-Reply-To: <aHoJsmB6BT86sdv3@redhat.com> ("Daniel P. Berrangé"'s message of "Fri, 18 Jul 2025 09:45:38 +0100")

Daniel P. Berrangé <berrange@redhat.com> writes:

> On Fri, Jul 18, 2025 at 07:59:50AM +0200, Markus Armbruster wrote:
>> Markus Armbruster <armbru@redhat.com> writes:
>> 
>> > Adam Williamson <awilliam@redhat.com> writes:
>> >
>> >> In cfcacba an `error_report` was added to this file, but the
>> >> corresponding include of `qemu/error-report.h` was missed. This
>> >> only becomes apparent when building against Xen 4.20+.
>> >>
>> >> Signed-off-by: Adam Williamson <awilliam@redhat.com>
>> >> ---
>> >>  hw/xen/xen_pt.c | 1 +
>> >>  1 file changed, 1 insertion(+)
>> >>
>> >> diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
>> >> index 9d16644d82..006b5b55f2 100644
>> >> --- a/hw/xen/xen_pt.c
>> >> +++ b/hw/xen/xen_pt.c
>> >> @@ -54,6 +54,7 @@
>> >>  
>> >>  #include "qemu/osdep.h"
>> >>  #include "qapi/error.h"
>> >> +#include "qemu/error-report.h"
>> >>  #include <sys/ioctl.h>
>> >>  
>> >>  #include "hw/pci/pci.h"
>> >
>> > Uh, error-report.h is included without this for me.  To see, build with
>> > -H:
>> >
>> > . /work/armbru/qemu/hw/xen/xen_pt.h
>> > .. /work/armbru/qemu/include/hw/xen/xen_native.h
>> > ... /work/armbru/qemu/hw/xen/trace.h
>> > .... ./trace/trace-hw_xen.h
>> > ..... /work/armbru/qemu/include/qemu/error-report.h
>> 
>> Just remembered: the generated trace header includes error-report.h only
>> when trace's log backend is enabled.
>
> Hmm, that's rather an unfortunate trap-door :-( Given that 'log' is enabled
> by default when building from git we'll never see missing error-report.h
> problems in daily work.

Correct.

> Looking at the log backend it appears that originally it would
> unconditionally include the timestamp when calling qemu_log, but
> then changed that to opt-in with
>
>   commit 418ed14268f797a5142b60cd557cd598eb548c66
>   Author: Stefan Hajnoczi <stefanha@redhat.com>
>   Date:   Mon Jan 25 11:35:07 2021 +0000
>
>     trace: make the 'log' backend timestamp configurable
>
> requiring -msg timestamp=on, which was a pre-existing flag that already
> did a similar toggle for the 'error_report' function. The goal makes
> sense, but it introduced the error-report.h trap door
>
> When I see that I also question why the 'log' backend should be a
> special case user of qemu_log() ?  Why shouldn't we emit timestamps
> for all usage of qemu_log() ?
>
> If we changed the qemu_log impl to honour the timestamp toggle, then
> all users of qemu_log benefit. We then eliminate error-report.h usage
> in trace.h headers, and also cut the code size for trace points
> significantly
>
>
> static inline void _nocheck__trace_object_dynamic_cast_assert(const char * type, const char * target, const char * file, int line, const char * func)
> {
>     if (trace_event_get_state(TRACE_OBJECT_DYNAMIC_CAST_ASSERT) && qemu_loglevel_mask(LOG_TRACE)) {
>         if (message_with_timestamp) {
>             struct timeval _now;
>             gettimeofday(&_now, NULL);
>             qemu_log("%d@%zu.%06zu:object_dynamic_cast_assert " "%s->%s (%s:%d:%s)" "\n",
>                      qemu_get_thread_id(),
>                      (size_t)_now.tv_sec, (size_t)_now.tv_usec
>                      , type, target, file, line, func);
>         } else {
>             qemu_log("object_dynamic_cast_assert " "%s->%s (%s:%d:%s)" "\n", type, target, file, line, func);
>         }
>     }
> }
>
> down to
>
>
> static inline void _nocheck__trace_object_dynamic_cast_assert(const char * type, const char * target, const char * file, int line, const char * func)
> {
>     if (trace_event_get_state(TRACE_OBJECT_DYNAMIC_CAST_ASSERT) && qemu_loglevel_mask(LOG_TRACE)) {
>             qemu_log("object_dynamic_cast_assert " "%s->%s (%s:%d:%s)" "\n", type, target, file, line, func);
>     }
> }
>
> which feels more in keeping with the kind of level of complexity you should
> want to be inlined in trace callers.

Oh yes.  We should do this even if we find a reason for keeping
qemu_log() as it is.  The obvious way would be a new function
qemu_log_with_timestamp().



  reply	other threads:[~2025-07-18 13:21 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-17 22:02 [PATCH] xen/passthrough: add missing error-report include Adam Williamson
2025-07-18  5:11 ` Markus Armbruster
2025-07-18  5:59   ` Markus Armbruster
2025-07-18  8:45     ` Daniel P. Berrangé
2025-07-18 13:20       ` Markus Armbruster [this message]
2025-07-21 19:12         ` Daniel P. Berrangé
2025-07-18  6:05   ` Philippe Mathieu-Daudé
2025-07-18  6:21     ` Philippe Mathieu-Daudé
2025-07-27 14:04 ` Bernhard Beschow
2025-07-28 22:03 ` Philippe Mathieu-Daudé

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=87h5z9eiu4.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=anthony@xenproject.org \
    --cc=awilliam@redhat.com \
    --cc=berrange@redhat.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=paul@xen.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.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.