From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891880; cv=none; d=zohomail.com; s=zohoarc; b=ef9uK+ms91ol6Wnu0rNsbNmLeMUH9chGLwhguiLLzmLU0osIp+Wac/y6ug223MMfJ8T5J6fq+mlOJYLjJTdugLYk18MsnVeJG0AIsZ5P7PSpYz5cr2WGRaSJ/Is55WM3RpuKClpvx3G3yqyyd0v0NccVTexicnAaEy9XAQayLQM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891880; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XHkgffGczsjKc+JcW4hYQwviOuKk82UuO1Dcs418ofE=; b=TQWAvZnzqaWpf9b1oDMRsi8Ure6PhabIpbscfAGVSvbn8k5pOr/hAWghC6TkXqbM3V5VCqBuFyQY7H11N/W4nURQZ8WIWh3itcUsX+gw9rgLfRJamx38vowXsAaJFUDwURXh77OW55FFJAMt61x5QAy3iCFYtAbHudTeGJK4yjg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891880836566.4076871831048; Thu, 8 Jan 2026 09:04:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtQb-0003jm-Pf; Thu, 08 Jan 2026 12:04:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQW-0003fO-Vu for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:01 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQU-0006pv-BT for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:00 -0500 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-520-pWyWZK4ePt2g8qJCsCgp_Q-1; Thu, 08 Jan 2026 12:03:52 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E207518005BB; Thu, 8 Jan 2026 17:03:49 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 30DCC19560BA; Thu, 8 Jan 2026 17:03:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XHkgffGczsjKc+JcW4hYQwviOuKk82UuO1Dcs418ofE=; b=JaH/5zab+5gIpKSDq2B71NTd51OfX3hIsQqSJRtWxl4YQV5hBnzGkK7gTVvIHkqeMnv+ii /jUZO9WF1c0Sf+6bTrV0T8M4gpERW5UhPayTwcp4KYHPR5HNUFMnUSaTbLSALQBF5k8awb dVNCIPsUK8RSAA+dWX4vIy5t5vBGORA= X-MC-Unique: pWyWZK4ePt2g8qJCsCgp_Q-1 X-Mimecast-MFC-AGG-ID: pWyWZK4ePt2g8qJCsCgp_Q_1767891830 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 01/24] qemu-options: remove extraneous [] around arg values Date: Thu, 8 Jan 2026 17:03:15 +0000 Message-ID: <20260108170338.2693853-2-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891882395158500 There are quite a few inappropriate uses of [...] around argument values. The [] are intended to indicate optionality, but in some cases it is used to wrap a set of enum values. In other cases it is being used to show the value is entirely optional, which was common behaviour for boolean values in the past. QEMU has deprecated short-form boolean options for quite a while though, and we should thus not advertize this possibility in the docs. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- qemu-options.hx | 110 ++++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/qemu-options.hx b/qemu-options.hx index ec92723f10..e8057fdcc9 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -25,7 +25,7 @@ SRST ERST =20 DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ - "-machine [type=3D]name[,prop[=3Dvalue][,...]]\n" + "-machine [type=3D]name[,prop=3Dvalue[,...]]\n" " selects emulated machine ('-machine help' for list)\n" " property accel=3Daccel1[:accel2[:...]] selects accele= rator\n" " supported accelerators are kvm, xen, hvf, nvmm, whpx,= mshv or tcg (default: tcg)\n" @@ -227,7 +227,7 @@ SRST ERST =20 DEF("accel", HAS_ARG, QEMU_OPTION_accel, - "-accel [accel=3D]accelerator[,prop[=3Dvalue][,...]]\n" + "-accel [accel=3D]accelerator[,prop=3Dvalue[,...]]\n" " select accelerator (kvm, xen, hvf, nvmm, whpx, mshv o= r tcg; use 'help' for a list)\n" " igd-passthru=3Don|off (enable Xen integrated Intel gr= aphics passthrough, default=3Doff)\n" " kernel-irqchip=3Don|off|split controls accelerated ir= qchip support (default=3Don)\n" @@ -789,17 +789,17 @@ ERST =20 =20 DEF("audio", HAS_ARG, QEMU_OPTION_audio, - "-audio [driver=3D]driver[,prop[=3Dvalue][,...]]\n" + "-audio [driver=3D]driver[,prop=3Dvalue[,...]]\n" " specifies default audio backend when `audiodev` is no= t\n" " used to create a machine or sound device;" " options are the same as for -audiodev\n" - "-audio [driver=3D]driver,model=3Dvalue[,prop[=3Dvalue][,...]]\n" + "-audio [driver=3D]driver,model=3Dvalue[,prop=3Dvalue[,...]]\n" " specifies the audio backend and device to use;\n" " apart from 'model', options are the same as for -audi= odev.\n" " use '-audio model=3Dhelp' to show possible devices.\n= ", QEMU_ARCH_ALL) SRST -``-audio [driver=3D]driver[,model=3Dvalue][,prop[=3Dvalue][,...]]`` +``-audio [driver=3D]driver[,model=3Dvalue][,prop=3Dvalue[,...]]`` If the ``model`` option is specified, ``-audio`` is a shortcut for configuring both the guest audio hardware and the host audio backend in one go. The guest hardware model can be set with @@ -827,7 +827,7 @@ SRST ERST =20 DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev, - "-audiodev [driver=3D]driver,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev [driver=3D]driver,id=3Did[,prop=3Dvalue[,...]]\n" " specifies the audio backend to use\n" " Use ``-audiodev help`` to list the available drivers\= n" " id=3D identifier of the backend\n" @@ -840,25 +840,25 @@ DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev, " valid values: s8, s16, s32, u8, u16, u32, f32\n" " in|out.voices=3D number of voices to use\n" " in|out.buffer-length=3D length of buffer in microseco= nds\n" - "-audiodev none,id=3Did,[,prop[=3Dvalue][,...]]\n" + "-audiodev none,id=3Did,[,prop=3Dvalue[,...]]\n" " dummy driver that discards all output\n" #ifdef CONFIG_AUDIO_ALSA - "-audiodev alsa,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev alsa,id=3Did[,prop=3Dvalue[,...]]\n" " in|out.dev=3D name of the audio device to use\n" " in|out.period-length=3D length of period in microseco= nds\n" " in|out.try-poll=3D attempt to use poll mode\n" " threshold=3D threshold (in microseconds) when playbac= k starts\n" #endif #ifdef CONFIG_AUDIO_COREAUDIO - "-audiodev coreaudio,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev coreaudio,id=3Did[,prop=3Dvalue[,...]]\n" " in|out.buffer-count=3D number of buffers\n" #endif #ifdef CONFIG_AUDIO_DSOUND - "-audiodev dsound,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev dsound,id=3Did[,prop=3Dvalue[,...]]\n" " latency=3D add extra latency to playback in microseco= nds\n" #endif #ifdef CONFIG_AUDIO_OSS - "-audiodev oss,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev oss,id=3Did[,prop=3Dvalue[,...]]\n" " in|out.dev=3D path of the audio device to use\n" " in|out.buffer-count=3D number of buffers\n" " in|out.try-poll=3D attempt to use poll mode\n" @@ -867,35 +867,35 @@ DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev, " dsp-policy=3D set timing policy (0..10), -1 to use fr= agment mode\n" #endif #ifdef CONFIG_AUDIO_PA - "-audiodev pa,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev pa,id=3Did[,prop=3Dvalue[,...]]\n" " server=3D PulseAudio server address\n" " in|out.name=3D source/sink device name\n" " in|out.latency=3D desired latency in microseconds\n" #endif #ifdef CONFIG_AUDIO_PIPEWIRE - "-audiodev pipewire,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev pipewire,id=3Did[,prop=3Dvalue[,...]]\n" " in|out.name=3D source/sink device name\n" " in|out.stream-name=3D name of pipewire stream\n" " in|out.latency=3D desired latency in microseconds\n" #endif #ifdef CONFIG_AUDIO_SDL - "-audiodev sdl,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev sdl,id=3Did[,prop=3Dvalue[,...]]\n" " in|out.buffer-count=3D number of buffers\n" #endif #ifdef CONFIG_AUDIO_SNDIO - "-audiodev sndio,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev sndio,id=3Did[,prop=3Dvalue[,...]]\n" #endif #ifdef CONFIG_SPICE - "-audiodev spice,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev spice,id=3Did[,prop=3Dvalue[,...]]\n" #endif #ifdef CONFIG_DBUS_DISPLAY - "-audiodev dbus,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev dbus,id=3Did[,prop=3Dvalue[,...]]\n" #endif - "-audiodev wav,id=3Did[,prop[=3Dvalue][,...]]\n" + "-audiodev wav,id=3Did[,prop=3Dvalue[,...]]\n" " path=3D path of wav file to record\n", QEMU_ARCH_ALL) SRST -``-audiodev [driver=3D]driver,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev [driver=3D]driver,id=3Did[,prop=3Dvalue[,...]]`` Adds a new audio backend driver identified by id. There are global and driver specific properties. Some values can be set differently for input and output, they're marked with ``in|out.``. You can set @@ -954,11 +954,11 @@ SRST ``in|out.buffer-length=3Dusecs`` Sets the size of the buffer in microseconds. =20 -``-audiodev none,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev none,id=3Did[,prop=3Dvalue[,...]]`` Creates a dummy backend that discards all outputs. This backend has no backend specific properties. =20 -``-audiodev alsa,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev alsa,id=3Did[,prop=3Dvalue[,...]]`` Creates backend using the ALSA. This backend is only available on Linux. =20 @@ -977,7 +977,7 @@ SRST ``threshold=3Dthreshold`` Threshold (in microseconds) when playback starts. Default is 0. =20 -``-audiodev coreaudio,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev coreaudio,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend using Apple's Core Audio. This backend is only available on Mac OS and only supports playback. =20 @@ -986,7 +986,7 @@ SRST ``in|out.buffer-count=3Dcount`` Sets the count of the buffers. =20 -``-audiodev dsound,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev dsound,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend using Microsoft's DirectSound. This backend is only available on Windows and only supports playback. =20 @@ -996,7 +996,7 @@ SRST Add extra usecs microseconds latency to playback. Default is 10000 (10 ms). =20 -``-audiodev oss,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev oss,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend using OSS. This backend is available on most Unix-like systems. =20 @@ -1025,7 +1025,7 @@ SRST buffer sizes specified by ``buffer`` and ``buffer-count``. This option is ignored if you do not have OSS 4. Default is 5. =20 -``-audiodev pa,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev pa,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend using PulseAudio. This backend is available on most systems. =20 @@ -1041,7 +1041,7 @@ SRST Desired latency in microseconds. The PulseAudio server will try to honor this value but actual latencies may be lower or higher. =20 -``-audiodev pipewire,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev pipewire,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend using PipeWire. This backend is available on most systems. =20 @@ -1056,7 +1056,7 @@ SRST ``in|out.stream-name`` Specify the name of pipewire stream. =20 -``-audiodev sdl,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev sdl,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend using SDL. This backend is available on most systems, but you should use your platform's native backend if possible. @@ -1066,7 +1066,7 @@ SRST ``in|out.buffer-count=3Dcount`` Sets the count of the buffers. =20 -``-audiodev sndio,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev sndio,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend using SNDIO. This backend is available on OpenBSD and most other Unix-like systems. =20 @@ -1079,13 +1079,13 @@ SRST ``in|out.latency=3Dusecs`` Sets the desired period length in microseconds. =20 -``-audiodev spice,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev spice,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend that sends audio through SPICE. This backend requires ``-spice`` and automatically selected in that case, so usually you can ignore this option. This backend has no backend specific properties. =20 -``-audiodev wav,id=3Did[,prop[=3Dvalue][,...]]`` +``-audiodev wav,id=3Did[,prop=3Dvalue[,...]]`` Creates a backend that writes audio to a WAV file. =20 Backend specific options are: @@ -1096,21 +1096,21 @@ SRST ERST =20 DEF("device", HAS_ARG, QEMU_OPTION_device, - "-device driver[,prop[=3Dvalue][,...]]\n" + "-device driver[,prop=3Dvalue[,...]]\n" " add device (based on driver)\n" " prop=3Dvalue,... sets driver properties\n" " use '-device help' to print all possible drivers\n" " use '-device driver,help' to print all possible prope= rties\n", QEMU_ARCH_ALL) SRST -``-device driver[,prop[=3Dvalue][,...]]`` +``-device driver[,prop=3Dvalue[,...]]`` Add device driver. prop=3Dvalue sets driver properties. Valid properties depend on the driver. To get help on possible drivers and properties, use ``-device help`` and ``-device driver,help``. =20 Some drivers are: =20 -``-device ipmi-bmc-sim,id=3Did[,prop[=3Dvalue][,...]]`` +``-device ipmi-bmc-sim,id=3Did[,prop=3Dvalue[,...]]`` Add an IPMI BMC. This is a simulation of a hardware management interface processor that normally sits on a system. It provides a watchdog and the ability to reset and power control the system. You @@ -2308,19 +2308,19 @@ DEF("spice", HAS_ARG, QEMU_OPTION_spice, " [,x509-dh-key-file=3D][,addr=3Daddr]\n" " [,ipv4=3Don|off][,ipv6=3Don|off][,unix=3Don|off]\n" " [,tls-ciphers=3D]\n" - " [,tls-channel=3D[main|display|cursor|inputs|record|playback]]\= n" - " [,plaintext-channel=3D[main|display|cursor|inputs|record|playb= ack]]\n" + " [,tls-channel=3Dmain|display|cursor|inputs|record|playback]\n" + " [,plaintext-channel=3Dmain|display|cursor|inputs|record|playba= ck]\n" " [,sasl=3Don|off][,disable-ticketing=3Don|off]\n" " [,password-secret=3D]\n" - " [,image-compression=3D[auto_glz|auto_lz|quic|glz|lz|off]]\n" - " [,jpeg-wan-compression=3D[auto|never|always]]\n" - " [,zlib-glz-wan-compression=3D[auto|never|always]]\n" - " [,streaming-video=3D[off|all|filter]][,disable-copy-paste=3Don= |off]\n" - " [,disable-agent-file-xfer=3Don|off][,agent-mouse=3D[on|off]]\n" - " [,playback-compression=3D[on|off]][,seamless-migration=3D[on|o= ff]]\n" + " [,image-compression=3Dauto_glz|auto_lz|quic|glz|lz|off]\n" + " [,jpeg-wan-compression=3Dauto|never|always]\n" + " [,zlib-glz-wan-compression=3Dauto|never|always]\n" + " [,streaming-video=3Doff|all|filter][,disable-copy-paste=3Don|o= ff]\n" + " [,disable-agent-file-xfer=3Don|off][,agent-mouse=3Don|off]\n" + " [,playback-compression=3Don|off][,seamless-migration=3Don|off]= \n" " [,video-codec=3D\n" " [,max-refresh-rate=3Drate\n" - " [,gl=3D[on|off]][,rendernode=3D]\n" + " [,gl=3Don|off][,rendernode=3D]\n" " enable spice\n" " at least one of {port, tls-port} is mandatory\n", QEMU_ARCH_ALL) @@ -2380,7 +2380,7 @@ SRST ``tls-ciphers=3D`` Specify which ciphers to use. =20 - ``tls-channel=3D[main|display|cursor|inputs|record|playback]``; \ ``pl= aintext-channel=3D[main|display|cursor|inputs|record|playback]`` + ``tls-channel=3Dmain|display|cursor|inputs|record|playback``; \ ``plai= ntext-channel=3Dmain|display|cursor|inputs|record|playback`` Force specific channel to be used with or without TLS encryption. The options can be specified multiple times to configure multiple channels. The special name "default" can be @@ -2388,24 +2388,24 @@ SRST explicitly forced into one mode the spice client is allowed to pick tls/plaintext as he pleases. =20 - ``image-compression=3D[auto_glz|auto_lz|quic|glz|lz|off]`` + ``image-compression=3Dauto_glz|auto_lz|quic|glz|lz|off`` Configure image compression (lossless). Default is auto\_glz. =20 - ``jpeg-wan-compression=3D[auto|never|always]``; \ ``zlib-glz-wan-compr= ession=3D[auto|never|always]`` + ``jpeg-wan-compression=3Dauto|never|always``; \ ``zlib-glz-wan-compres= sion=3Dauto|never|always`` Configure wan image compression (lossy for slow links). Default is auto. =20 - ``streaming-video=3D[off|all|filter]`` + ``streaming-video=3Doff|all|filter`` Configure video stream detection. Default is off. =20 - ``agent-mouse=3D[on|off]`` + ``agent-mouse=3Don|off`` Enable/disable passing mouse events via vdagent. Default is on. =20 - ``playback-compression=3D[on|off]`` + ``playback-compression=3Don|off`` Enable/disable audio stream compression (using celt 0.5.1). Default is on. =20 - ``seamless-migration=3D[on|off]`` + ``seamless-migration=3Don|off`` Enable/disable spice seamless migration. Default is off. =20 ``video-codec=3D`` @@ -2419,7 +2419,7 @@ SRST Provide the maximum refresh rate (or FPS) at which the encoding requests should be sent to the Spice server. Default would be 30. =20 - ``gl=3D[on|off]`` + ``gl=3Don|off`` Enable/disable OpenGL context. Default is off. =20 ``rendernode=3D`` @@ -2649,7 +2649,7 @@ SRST bandwidth when playing videos. Disabling adaptive encodings restores the original static behavior of encodings like Tight. =20 - ``share=3D[allow-exclusive|force-shared|ignore]`` + ``share=3Dallow-exclusive|force-shared|ignore`` Set display sharing policy. 'allow-exclusive' allows clients to ask for exclusive access. As suggested by the rfb spec this is implemented by dropping other connections. Connecting multiple @@ -4823,9 +4823,9 @@ SRST ERST =20 DEF("mon", HAS_ARG, QEMU_OPTION_mon, \ - "-mon [chardev=3D]name[,mode=3Dreadline|control][,pretty[=3Don|off]]\n= ", QEMU_ARCH_ALL) + "-mon [chardev=3D]name[,mode=3Dreadline|control][,pretty=3Don|off]\n",= QEMU_ARCH_ALL) SRST -``-mon [chardev=3D]name[,mode=3Dreadline|control][,pretty[=3Don|off]]`` +``-mon [chardev=3D]name[,mode=3Dreadline|control][,pretty=3Don|off]`` Set up a monitor connected to the chardev ``name``. QEMU supports two monitors: the Human Monitor Protocol (HMP; for human interaction), and the QEMU Monitor Protocol @@ -5514,14 +5514,14 @@ ERST #endif =20 DEF("msg", HAS_ARG, QEMU_OPTION_msg, - "-msg [timestamp[=3Don|off]][,guest-name=3D[on|off]]\n" + "-msg [timestamp=3Don|off][,guest-name=3Don|off]\n" " control error message format\n" " timestamp=3Don enables timestamps (default: off)\n" " guest-name=3Don enables guest name prefix but only if= \n" " -name guest option is set (default: off= )\n", QEMU_ARCH_ALL) SRST -``-msg [timestamp[=3Don|off]][,guest-name[=3Don|off]]`` +``-msg [timestamp=3Don|off][,guest-name=3Don|off]`` Control error message format. =20 ``timestamp=3Don|off`` --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891880; cv=none; d=zohomail.com; s=zohoarc; b=XE0myhoJ5m1gQUrNPmZ5UNHfF5ZpHXA8/iuDje0vqZuLG0kKWhWVQHzyrNjizIPVEB/nR97DpcTldda7pUI5gPHHArQEuTIpNpXClgNI8a5cP5f5RnBzDkVD/sJ7X9cqiMsMgOT731oRHZK1SbxcWlc9vzNB8EhSOoGBy+I6I5I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891880; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dVkf2McfXI8rQXFsrHNedkvrPIb0kVagd/uGEnAY1is=; b=fFDF6BXi0kV060EsOtSsdcWKLfB6G+Uwz9XcwVgAhUKBpXRDsfXVoe9nZQDMtd7h4mpbxvOR0w3MuDN0/jeAVa4YpPNvkYG+ABE7OCLc11E7KfK29lJOlsOjMxEcSZuoPI3w9CxU8Bcvt4T8/1BBMWZwEwMKJfF5JPFg3jQSotQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891880151408.259694176537; Thu, 8 Jan 2026 09:04:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtQf-0003oD-VB; Thu, 08 Jan 2026 12:04:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQa-0003jb-45 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:04 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQX-0006qg-TH for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:03 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-517-iPqHC3uUMvS1YdJii-52Ag-1; Thu, 08 Jan 2026 12:03:56 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 644EE1956094; Thu, 8 Jan 2026 17:03:54 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4B19F19560A2; Thu, 8 Jan 2026 17:03:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891841; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dVkf2McfXI8rQXFsrHNedkvrPIb0kVagd/uGEnAY1is=; b=ZTp7AonNf+rrNzo3ybP3JPmnkUzanYoTH66Ameht/G7XgFuzk5h+N9Rb1mh5WYgYwZgqkL SqtOxtLbokRLVFgP5jsp7Jl+CxxUB+3oV9CI1hDRHdOZyQSVYNBJeTaQNhYuP/SHDdMoVo F5UACEqoWptXfdWO5S5J5LnEXKxX/rU= X-MC-Unique: iPqHC3uUMvS1YdJii-52Ag-1 X-Mimecast-MFC-AGG-ID: iPqHC3uUMvS1YdJii-52Ag_1767891835 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 02/24] include: define constant for early constructor priority Date: Thu, 8 Jan 2026 17:03:16 +0000 Message-ID: <20260108170338.2693853-3-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891882189158500 Functions marked with __attribute__((__constructor__)) will be invoked in linker order. In theory this is well defined, but in practice, it is hard to determine what this order will be with the layers of indirection through meson, ninja and the static libraries QEMU builds. Notably, the order currently appears different between Linux and Windows (as tested with Wine on Linux). This can cause problems when certain QEMU constructors have a dependancy on other QEMU constructors. To address this define a QEMU_CONSTRUCTOR_EARLY constant which provides a priority value that will run before other default constructors. This is to be used for QEMU constructors that are themselves self-contained, but may be relied upon by other constructors. Reviewed-by: Richard Henderson Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qemu/compiler.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index 1c2b673c05..4c49f52eb0 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -194,6 +194,14 @@ # define QEMU_USED #endif =20 +/* + * A priority for __attribute__((constructor(...))) that + * will run earlier than the default constructors. Must + * only be used for functions that have no dependency + * on global initialization of other QEMU subsystems. + */ +#define QEMU_CONSTRUCTOR_EARLY 101 + /* * Disable -ftrivial-auto-var-init on a local variable. * --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892187; cv=none; d=zohomail.com; s=zohoarc; b=eakH7FLEVtLaeNF/lzsgY2x5HgES5ZLJvqgCo2G1nfIIChJT2y0924jT+TEqm0vUW7xUte5ociSCNy0KfqbG8KyqBTfhcesgk/HYPkGK93OUuD6Br1uw0l+8acysPiyhfrLxOqVwrWveTwlaHCXN4kuz6ykjinHAOQJ8fNvMO2w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892187; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VtFPI6vVXa2ox707p91yDXfVumBlXkpusbUwLIynWCc=; b=MCDxL7gCLhOUBBU/Brw2UaB/qGNNnHK6YlNxn8biQFqSqlUOwYErQuEVH5mXn0A34D952tQFlzCy/78OqBg/L4Z35r1R6xtmuYu3Q+P11kNdC1mNAmuQW7O5yWfQb/w4AzyTxscbhfUORFaxIvOMTgNxwhVqlCfNURBXai9Roos= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892187829957.8606535078382; Thu, 8 Jan 2026 09:09:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtQh-0003tI-Pf; Thu, 08 Jan 2026 12:04:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQe-0003nq-Bz for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:09 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQc-0006rZ-8K for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:08 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-542-_VYh9_zhNe-y6nSlJbwTsQ-1; Thu, 08 Jan 2026 12:04:00 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8D8BB1956095; Thu, 8 Jan 2026 17:03:58 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C3A2C19560B4; Thu, 8 Jan 2026 17:03:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891845; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VtFPI6vVXa2ox707p91yDXfVumBlXkpusbUwLIynWCc=; b=JrThNT27O5cfPhC6jfS4dyUZgijE0ZeGGo38i+R2ZI3W7xI8YzF11R+4FZDGeDbuXxjejR EK3CDSHYAMxl69YxnNBzf5IZDFG0FY6y8mCsQjSmNoGKa+5tsd9J3tIlO3bJCoZivscAKN EOlcGLLLuPq+qEa6s+FJ4PGg0KgVqCY= X-MC-Unique: _VYh9_zhNe-y6nSlJbwTsQ-1 X-Mimecast-MFC-AGG-ID: _VYh9_zhNe-y6nSlJbwTsQ_1767891838 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 03/24] monitor: initialize global data from a constructor Date: Thu, 8 Jan 2026 17:03:17 +0000 Message-ID: <20260108170338.2693853-4-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892189563158500 Some monitor functions, most notably, monitor_cur() rely on global data being initialized by 'monitor_init_globals()'. The latter is called relatively late in startup. If code triggers error_report() before monitor_init_globals() is called, QEMU will abort when accessing the uninitialized monitor mutex. The critical monitor global data must be initialized from a constructor function, to improve the guarantee that it is done before any possible calls to monitor_cur(). Not only that, but the constructor must be marked to run before the default constructor in case any of them trigger error reporting. Note in particular that the RCU constructor will spawn a background thread so we might even have non-constructor QEMU code running concurrently with other constructors. As a general note, constructors should be extrememly careful about what QEMU code they invoke, as it cannot be guaranteed that the process is fully initialized and so not all normal QEMU API rules apply. Reviewed-by: Richard Henderson Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Markus Armbruster Fixes: e69ee454b5f9 (monitor: Make current monitor a per-coroutine property) Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/monitor.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/monitor/monitor.c b/monitor/monitor.c index 1273eb7260..dd2c45ded0 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -708,18 +708,22 @@ void monitor_cleanup(void) } } =20 -static void monitor_qapi_event_init(void) +/* + * Initialize static vars that have no deps on external + * module initialization, and are required for external + * functions to call things like monitor_cur() + */ +static void __attribute__((__constructor__(QEMU_CONSTRUCTOR_EARLY))) +monitor_init_static(void) { + qemu_mutex_init(&monitor_lock); + coroutine_mon =3D g_hash_table_new(NULL, NULL); monitor_qapi_event_state =3D g_hash_table_new(qapi_event_throttle_hash, qapi_event_throttle_equal); } =20 void monitor_init_globals(void) { - monitor_qapi_event_init(); - qemu_mutex_init(&monitor_lock); - coroutine_mon =3D g_hash_table_new(NULL, NULL); - /* * The dispatcher BH must run in the main loop thread, since we * have commands assuming that context. It would be nice to get --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891880; cv=none; d=zohomail.com; s=zohoarc; b=bjFI2gOar7XID0MHSfqT5Yx7bkASEhyIQVMgqPZPKHLVLtL4RT4PBddrWQEmmfc4R6uFj3Gg3gUDBY3e4TmAn/gMQUqny0TJou0M+13pK6mi4J0m3I7DNabgu+7NetiSLR2P8FD+YxNPNZPofNaATowrrosyakYlwItBDdMIg+A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891880; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=puepsTf6o4jjdmpoffdjnah9w1saX40l/ofNQy7zwqI=; b=cW/o86Sxm7Nmt/PMyO6l1ACpAWQ6+sqxZVaZll17n9+1vpJoHlIRL2safbGK2xhB231QMQczbT/i43DWe5gdu+tSrfQC3zUFa53CG9/HyWdnWizO+uEuBxqpXNIbRBchah7O+SDlETOkR5a96t8KOxUldWn2dMzgvpTwVM71xyM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891880959988.5204610614331; Thu, 8 Jan 2026 09:04:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtQl-0003v9-KU; Thu, 08 Jan 2026 12:04:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQi-0003u1-Mv for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:12 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQf-0006s4-Gy for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:12 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-134-rC3BoMn_OHOS_2Kmf4rNVQ-1; Thu, 08 Jan 2026 12:04:05 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 084B8195605B; Thu, 8 Jan 2026 17:04:03 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E35B019560A2; Thu, 8 Jan 2026 17:03:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891848; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=puepsTf6o4jjdmpoffdjnah9w1saX40l/ofNQy7zwqI=; b=VIE8CJWxLxMcnNPDaNxLOBfNAXxCxy7w/r2X10QiqcEAC6pRoQWWRZluuuBZsCX9qcbE1V o5wTpNhDMk5sxHhzCnn/73Ayqb1C4nYa0IfjZsy7QIC3HmFjtbGOtI58rqZ/GLiWHUuRaA gM3x+3LcO4SCby60nAU+FmYiYVwO9Ik= X-MC-Unique: rC3BoMn_OHOS_2Kmf4rNVQ-1 X-Mimecast-MFC-AGG-ID: rC3BoMn_OHOS_2Kmf4rNVQ_1767891843 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 04/24] system: unconditionally enable thread naming Date: Thu, 8 Jan 2026 17:03:18 +0000 Message-ID: <20260108170338.2693853-5-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891883998158500 When thread naming was introduced years ago, it was disabled by default and put behind a command line flag: commit 8f480de0c91a18d550721f8d9af969ebfbda0793 Author: Dr. David Alan Gilbert Date: Thu Jan 30 10:20:31 2014 +0000 Add 'debug-threads' suboption to --name This was done based on a concern that something might depend on the historical thread naming. Thread names, however, were never promised to be part of QEMU's public API. The defaults will vary across platforms, so no assumptions should ever be made about naming. An opt-in behaviour is also unfortunately incompatible with RCU which creates its thread from an constructor function which is run before command line args are parsed. Thus the RCU thread lacks any name. libvirt has unconditionally enabled debug-threads=3Dyes on all VMs it creates for 10 years. Interestingly this DID expose a bug in libvirt, as it parsed /proc/$PID/stat and could not cope with a space in the thread name. This was a latent pre-existing bug in libvirt though, and not a part of QEMU's API. Having thread names always available, will allow thread names to be included in error reports and log messags QEMU prints by default, which will improve ability to triage QEMU bugs. Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Richard Henderson Reviewed-by: Markus Armbruster Signed-off-by: Daniel P. Berrang=C3=A9 --- docs/about/deprecated.rst | 7 +++++++ include/qemu/thread.h | 1 - system/vl.c | 12 +++++++----- util/qemu-thread-posix.c | 18 +----------------- util/qemu-thread-win32.c | 27 ++++++--------------------- 5 files changed, 21 insertions(+), 44 deletions(-) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 7abb3dab59..d1acefe9d2 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -54,6 +54,13 @@ as short-form boolean values, and passed to plugins as `= `arg_name=3Don``. However, short-form booleans are deprecated and full explicit ``arg_name= =3Don`` form is preferred. =20 +``debug-threads`` option for ``-name`` (since 11.0) +''''''''''''''''''''''''''''''''''''''''''''''''''' + +The ``debug-threads`` option of the ``-name`` argument is now +ignored. Thread naming is unconditionally enabled for all platforms +where it is supported. + QEMU Machine Protocol (QMP) commands ------------------------------------ =20 diff --git a/include/qemu/thread.h b/include/qemu/thread.h index f0302ed01f..3a286bb3ef 100644 --- a/include/qemu/thread.h +++ b/include/qemu/thread.h @@ -215,7 +215,6 @@ void *qemu_thread_join(QemuThread *thread); void qemu_thread_get_self(QemuThread *thread); bool qemu_thread_is_self(QemuThread *thread); G_NORETURN void qemu_thread_exit(void *retval); -void qemu_thread_naming(bool enable); =20 struct Notifier; /** diff --git a/system/vl.c b/system/vl.c index b60b883050..60bdd58548 100644 --- a/system/vl.c +++ b/system/vl.c @@ -403,9 +403,8 @@ static QemuOptsList qemu_name_opts =3D { }, { .name =3D "debug-threads", .type =3D QEMU_OPT_BOOL, - .help =3D "When enabled, name the individual threads; defaults= off.\n" - "NOTE: The thread names are for debugging and not a\n" - "stable API.", + .help =3D "Enable thread names" + "(deprecated, always enabled where supported)", }, { /* End of list */ } }, @@ -554,9 +553,12 @@ static int parse_name(void *opaque, QemuOpts *opts, Er= ror **errp) { const char *proc_name; =20 - if (qemu_opt_get(opts, "debug-threads")) { - qemu_thread_naming(qemu_opt_get_bool(opts, "debug-threads", false)= ); + if (qemu_opt_get(opts, "debug-threads") && + !qemu_opt_get_bool(opts, "debug-threads", false)) { + fprintf(stderr, "Ignoring deprecated 'debug-threads=3Dno' option, = " \ + "thread naming is unconditionally enabled\n"); } + qemu_name =3D qemu_opt_get(opts, "guest"); =20 proc_name =3D qemu_opt_get(opts, "process"); diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c index ba725444ba..7c985b5d38 100644 --- a/util/qemu-thread-posix.c +++ b/util/qemu-thread-posix.c @@ -22,22 +22,6 @@ #include #endif =20 -static bool name_threads; - -void qemu_thread_naming(bool enable) -{ - name_threads =3D enable; - -#if !defined CONFIG_PTHREAD_SETNAME_NP_W_TID && \ - !defined CONFIG_PTHREAD_SETNAME_NP_WO_TID && \ - !defined CONFIG_PTHREAD_SET_NAME_NP - /* This is a debugging option, not fatal */ - if (enable) { - fprintf(stderr, "qemu: thread naming not supported on this host\n"= ); - } -#endif -} - static void error_exit(int err, const char *msg) { fprintf(stderr, "qemu: %s: %s\n", msg, strerror(err)); @@ -361,7 +345,7 @@ static void *qemu_thread_start(void *args) /* Attempt to set the threads name; note that this is for debug, so * we're not going to fail if we can't set it. */ - if (name_threads && qemu_thread_args->name) { + if (qemu_thread_args->name) { # if defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) pthread_setname_np(pthread_self(), qemu_thread_args->name); # elif defined(CONFIG_PTHREAD_SETNAME_NP_WO_TID) diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c index ca2e0b512e..9595a5b090 100644 --- a/util/qemu-thread-win32.c +++ b/util/qemu-thread-win32.c @@ -17,8 +17,6 @@ #include "qemu-thread-common.h" #include =20 -static bool name_threads; - typedef HRESULT (WINAPI *pSetThreadDescription) (HANDLE hThread, PCWSTR lpThreadDescriptio= n); static pSetThreadDescription SetThreadDescriptionFunc; @@ -44,16 +42,6 @@ static bool load_set_thread_description(void) return !!SetThreadDescriptionFunc; } =20 -void qemu_thread_naming(bool enable) -{ - name_threads =3D enable; - - if (enable && !load_set_thread_description()) { - fprintf(stderr, "qemu: thread naming not supported on this host\n"= ); - name_threads =3D false; - } -} - static void error_exit(int err, const char *msg) { char *pstr; @@ -328,23 +316,20 @@ void *qemu_thread_join(QemuThread *thread) return ret; } =20 -static bool set_thread_description(HANDLE h, const char *name) +static void set_thread_description(HANDLE h, const char *name) { - HRESULT hr; g_autofree wchar_t *namew =3D NULL; =20 if (!load_set_thread_description()) { - return false; + return; } =20 namew =3D g_utf8_to_utf16(name, -1, NULL, NULL, NULL); if (!namew) { - return false; + return; } =20 - hr =3D SetThreadDescriptionFunc(h, namew); - - return SUCCEEDED(hr); + SetThreadDescriptionFunc(h, namew); } =20 void qemu_thread_create(QemuThread *thread, const char *name, @@ -370,8 +355,8 @@ void qemu_thread_create(QemuThread *thread, const char = *name, if (!hThread) { error_exit(GetLastError(), __func__); } - if (name_threads && name && !set_thread_description(hThread, name)) { - fprintf(stderr, "qemu: failed to set thread description: %s\n", na= me); + if (name) { + set_thread_description(hThread, name); } CloseHandle(hThread); =20 --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891882; cv=none; d=zohomail.com; s=zohoarc; b=LbSRTaqwZ2A8l/ytwVu/RHOW05Rq4YVINTyaOVJrWaQI9+gMYlj8Y9bsBUgxhnD4cSIGW6tQSA/Yjlqt5ysYsqTg2rvnKzUQXjdXZRZxHSdql/kAIapLnqlocfJ5f40v/QP/JB76fFQcLNCTByLAtkvbBr5ZQWKxt36o/gFO1L0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891882; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8BrKAlIwhHS96rT72QvsgWREA7RZadYiubuuKFJpTdE=; b=aDW20RrC5EzSSIkcKOxNaTC4i4dX5QKq6WJTp2F3sqLtfKOgjLSegEtEnJ7fK8hqWkYprhcgruynR60d3DO/1zDxxw0bC8sHJ2tHzE4Dv3ZNoKnYE8BFH8Qy3Tf0XyCJ+6/riXFCNrflOMr/t7SgJ7czwhHOhgM0WJhm3lPW+4g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891882814907.6975084030869; Thu, 8 Jan 2026 09:04:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtQp-00041N-0d; Thu, 08 Jan 2026 12:04:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQk-0003v7-SE for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQi-0006sl-Un for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:14 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-6gxIFJt6NU2xuroQmxNQFA-1; Thu, 08 Jan 2026 12:04:09 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 89C66195609E; Thu, 8 Jan 2026 17:04:07 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 64E5E19560A2; Thu, 8 Jan 2026 17:04:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891852; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8BrKAlIwhHS96rT72QvsgWREA7RZadYiubuuKFJpTdE=; b=MyrxZGNpbVw/4CQv5PElrtuOuBnGIIVw37KJqJ8funFZcu5abk5m9ZDVtKdHQFFoD6WWJJ CXJ+d79M6NmELTUlA8zIIaA73ov9GF/9OTGrD8QfgvWdsEU82uK84baJcylpMDno4+rNhD QZa5cLjJu93TPXxvKT7FqbIgM5+OQKc= X-MC-Unique: 6gxIFJt6NU2xuroQmxNQFA-1 X-Mimecast-MFC-AGG-ID: 6gxIFJt6NU2xuroQmxNQFA_1767891847 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 05/24] util: expose qemu_thread_set_name Date: Thu, 8 Jan 2026 17:03:19 +0000 Message-ID: <20260108170338.2693853-6-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891883932158500 The ability to set the thread name needs to be used in a number of places, so expose the current impls as public methods. Reviewed-by: Richard Henderson Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- include/qemu/thread.h | 1 + util/qemu-thread-posix.c | 26 ++++++++++++++++---------- util/qemu-thread-win32.c | 13 ++++++++----- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/include/qemu/thread.h b/include/qemu/thread.h index 3a286bb3ef..27b888ab0a 100644 --- a/include/qemu/thread.h +++ b/include/qemu/thread.h @@ -215,6 +215,7 @@ void *qemu_thread_join(QemuThread *thread); void qemu_thread_get_self(QemuThread *thread); bool qemu_thread_is_self(QemuThread *thread); G_NORETURN void qemu_thread_exit(void *retval); +void qemu_thread_set_name(const char *name); =20 struct Notifier; /** diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c index 7c985b5d38..b1c127dbe3 100644 --- a/util/qemu-thread-posix.c +++ b/util/qemu-thread-posix.c @@ -329,6 +329,21 @@ static void qemu_thread_atexit_notify(void *arg) notifier_list_notify(&thread_exit, NULL); } =20 +void qemu_thread_set_name(const char *name) +{ + /* + * Attempt to set the threads name; note that this is for debug, so + * we're not going to fail if we can't set it. + */ +# if defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) + pthread_setname_np(pthread_self(), name); +# elif defined(CONFIG_PTHREAD_SETNAME_NP_WO_TID) + pthread_setname_np(name); +# elif defined(CONFIG_PTHREAD_SET_NAME_NP) + pthread_set_name_np(pthread_self(), name); +# endif +} + typedef struct { void *(*start_routine)(void *); void *arg; @@ -342,17 +357,8 @@ static void *qemu_thread_start(void *args) void *arg =3D qemu_thread_args->arg; void *r; =20 - /* Attempt to set the threads name; note that this is for debug, so - * we're not going to fail if we can't set it. - */ if (qemu_thread_args->name) { -# if defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) - pthread_setname_np(pthread_self(), qemu_thread_args->name); -# elif defined(CONFIG_PTHREAD_SETNAME_NP_WO_TID) - pthread_setname_np(qemu_thread_args->name); -# elif defined(CONFIG_PTHREAD_SET_NAME_NP) - pthread_set_name_np(pthread_self(), qemu_thread_args->name); -# endif + qemu_thread_set_name(qemu_thread_args->name); } QEMU_TSAN_ANNOTATE_THREAD_NAME(qemu_thread_args->name); g_free(qemu_thread_args->name); diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c index 9595a5b090..4d2d663a9a 100644 --- a/util/qemu-thread-win32.c +++ b/util/qemu-thread-win32.c @@ -225,6 +225,7 @@ struct QemuThreadData { void *arg; short mode; NotifierList exit; + char *name; =20 /* Only used for joinable threads. */ bool exited; @@ -266,6 +267,10 @@ static unsigned __stdcall win32_start_routine(void *ar= g) void *(*start_routine)(void *) =3D data->start_routine; void *thread_arg =3D data->arg; =20 + if (data->name) { + qemu_thread_set_name(data->name); + g_clear_pointer(&data->name, g_free); + } qemu_thread_data =3D data; qemu_thread_exit(start_routine(thread_arg)); abort(); @@ -316,7 +321,7 @@ void *qemu_thread_join(QemuThread *thread) return ret; } =20 -static void set_thread_description(HANDLE h, const char *name) +void qemu_thread_set_name(const char *name) { g_autofree wchar_t *namew =3D NULL; =20 @@ -329,7 +334,7 @@ static void set_thread_description(HANDLE h, const char= *name) return; } =20 - SetThreadDescriptionFunc(h, namew); + SetThreadDescriptionFunc(GetCurrentThread(), namew); } =20 void qemu_thread_create(QemuThread *thread, const char *name, @@ -344,6 +349,7 @@ void qemu_thread_create(QemuThread *thread, const char = *name, data->arg =3D arg; data->mode =3D mode; data->exited =3D false; + data->name =3D g_strdup(name); notifier_list_init(&data->exit); =20 if (data->mode !=3D QEMU_THREAD_DETACHED) { @@ -355,9 +361,6 @@ void qemu_thread_create(QemuThread *thread, const char = *name, if (!hThread) { error_exit(GetLastError(), __func__); } - if (name) { - set_thread_description(hThread, name); - } CloseHandle(hThread); =20 thread->data =3D data; --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892142; cv=none; d=zohomail.com; s=zohoarc; b=kRYV07wn8pI58rVoBDvBK7zmPl6WI6bPNN5qsn86OPO2psYDe+DXkQhDye+axIpabcXMgCXCyTL5eISnC9aVrcw9FlKoRKsLAE6wdoIq9ZsiRlo8WeRt9zOrrV3qUxQfyj4OXPy5iFYkwNNFyvGB9qGXBNfcNH2+Ld9xmtoaz1Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892142; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=w4EwNMbC+CcMqBzFm62KkcpDgI9ZS17aDCUovm6Nb7I=; b=Jj9/VfJ6atJ5nBbEroMotpmzkEPtv/WKngw/YnBUU/rVTBzM/W7ZLDqXVEfqYYeDxBXSNc0vgSUTjOM1Uw+TXU2CXDCVbSzG07QIwtXSDmPK5+AXHpJl41gTHAr7bL7Q8ZqyBwKzachT0F7PkK7UJhIpOh/p1ljBHqXTKG0rxAQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892142147271.0270619609123; Thu, 8 Jan 2026 09:09:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtQv-0004D4-Di; Thu, 08 Jan 2026 12:04:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQq-00044N-Df for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQo-0006tg-Hu for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:19 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-322-Fl3yDTkoOPG-OPaxSqDIcg-1; Thu, 08 Jan 2026 12:04:14 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 3918519560A3; Thu, 8 Jan 2026 17:04:12 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 066EB19560A2; Thu, 8 Jan 2026 17:04:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891857; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w4EwNMbC+CcMqBzFm62KkcpDgI9ZS17aDCUovm6Nb7I=; b=NIgXhEMX/y/Qco6AlCMe38j0Oc4OFLCnr5lTjvlCxLx19kofsS+7sBQh4a99ggcSpi4yUN K3JacD9+JOP0MRUbtflZ6oaUxi40Pk0H3mlIooKUXoNVtWomG7EEDbMRS8yGu4kbywW0hP eEcLaCfnF9fXMoKS+MelYtbQmmvklb4= X-MC-Unique: Fl3yDTkoOPG-OPaxSqDIcg-1 X-Mimecast-MFC-AGG-ID: Fl3yDTkoOPG-OPaxSqDIcg_1767891852 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 06/24] audio: make jackaudio use qemu_thread_set_name Date: Thu, 8 Jan 2026 17:03:20 +0000 Message-ID: <20260108170338.2693853-7-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892143261158500 This has greater portability than directly call pthread_setname_np, which is only 1 out of 3 possible functions for pthreads that can set the name. The new API requires a trampoline function, since it can only set the name of the current thread. Reviewed-by: Christian Schoenebeck Signed-off-by: Daniel P. Berrang=C3=A9 --- audio/jackaudio.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/audio/jackaudio.c b/audio/jackaudio.c index 7a3fcaedba..c47a1a3781 100644 --- a/audio/jackaudio.c +++ b/audio/jackaudio.c @@ -629,18 +629,36 @@ static void qjack_enable_in(HWVoiceIn *hw, bool enabl= e) ji->c.enabled =3D enable; } =20 -#if !defined(WIN32) && defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) +#if !defined(WIN32) +struct QJackThreadData { + void *(*function)(void *); + void *arg; +}; + +static void *qjack_thread_trampoline(void *targ) +{ + struct QJackThreadData *data =3D targ; + void *(*function)(void *) =3D data->function; + void *arg =3D data->arg; + + g_free(data); + qemu_thread_set_name("jack-client"); + + return function(arg); +} + static int qjack_thread_creator(jack_native_thread_t *thread, const pthread_attr_t *attr, void *(*function)(void *), void *arg) { - int ret =3D pthread_create(thread, attr, function, arg); + struct QJackThreadData *data =3D g_new0(struct QJackThreadData, 1); + data->function =3D function; + data->arg =3D arg; + int ret =3D pthread_create(thread, attr, qjack_thread_trampoline, data= ); if (ret !=3D 0) { + g_free(data); return ret; } =20 - /* set the name of the thread */ - pthread_setname_np(*thread, "jack-client"); - return ret; } #endif @@ -695,7 +713,7 @@ static void register_audio_jack(void) { qemu_mutex_init(&qjack_shutdown_lock); audio_driver_register(&jack_driver); -#if !defined(WIN32) && defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) +#if !defined(WIN32) jack_set_thread_creator(qjack_thread_creator); #endif jack_set_error_function(qjack_error); --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891958; cv=none; d=zohomail.com; s=zohoarc; b=XfpwLboqdy7sy+oBW/GIKbkWwcotU3gDP7jt1iconC5mzbbuJ6FCD79Y2uIGj5VbR6M+7TakGUr9RziJb+DwTAMZsnPRoczqgUAvszYNCrNO34XuvnBCntzhfnhpuzRLNmg72CBgXQRdyYHIk9SMcezMkxvRKF6fCZmjngPdo6I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891958; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o4SBR89h6eLwGZj35KLKhD3YguhrIDbrsbofZdkSSws=; b=b4DdDuvMjFcPoegKJe6KLQMPjXbtBi+79gjJ3HLTXaDimXMsPNME5y0/+pbGfwzXmpX/WhIwkTCmbbO2rNG7Z/Sak8XOfxvDrvEDa1C+zqrr5jXR0RF1P/LOpiDYhIAAIAiJXKIEzut7GYCiD+cKmw+3jsDEWVjTYZeyNxDTrsc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891958090742.8547187611265; Thu, 8 Jan 2026 09:05:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtR1-0004S6-JL; Thu, 08 Jan 2026 12:04:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQv-0004I2-M3 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQu-0006vL-DD for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:25 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-226-Z6uoXxfuMeW7Wx2dfdB1EA-1; Thu, 08 Jan 2026 12:04:18 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6DB2E19560B7; Thu, 8 Jan 2026 17:04:16 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 99C031955F44; Thu, 8 Jan 2026 17:04:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891863; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o4SBR89h6eLwGZj35KLKhD3YguhrIDbrsbofZdkSSws=; b=JWWbSw5kwpGhlk5tb9oB0WB/LKYsBDsmtIHKlrGRSmrdssf5r2FRNBPbGasRaTI+GUAqVx JKacWlmrIasTCKEt1FWmjnZB6pmXTCuG0+G3UbNPcUsr7lYxymRZnIMqd2AX6sWiv7wiRk fgBtnnWOX+5uuatkZPQmutygF1TjagA= X-MC-Unique: Z6uoXxfuMeW7Wx2dfdB1EA-1 X-Mimecast-MFC-AGG-ID: Z6uoXxfuMeW7Wx2dfdB1EA_1767891856 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 07/24] util: set the name for the 'main' thread Date: Thu, 8 Jan 2026 17:03:21 +0000 Message-ID: <20260108170338.2693853-8-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891960485158500 The default main thread name is undefined, so use a constructor to explicitly set it to 'main'. This constructor is marked to run early as the thread name is intended to be used in error reporting / logs which may be triggered very early in QEMU execution. Reviewed-by: Richard Henderson Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Daniel P. Berrang=C3=A9 --- util/qemu-thread-posix.c | 6 ++++++ util/qemu-thread-win32.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c index b1c127dbe3..afeac9ecad 100644 --- a/util/qemu-thread-posix.c +++ b/util/qemu-thread-posix.c @@ -22,6 +22,12 @@ #include #endif =20 +static void __attribute__((__constructor__(QEMU_CONSTRUCTOR_EARLY))) +qemu_thread_init(void) +{ + qemu_thread_set_name("main"); +} + static void error_exit(int err, const char *msg) { fprintf(stderr, "qemu: %s: %s\n", msg, strerror(err)); diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c index 4d2d663a9a..8ca6429ad3 100644 --- a/util/qemu-thread-win32.c +++ b/util/qemu-thread-win32.c @@ -22,6 +22,12 @@ typedef HRESULT (WINAPI *pSetThreadDescription) (HANDLE = hThread, static pSetThreadDescription SetThreadDescriptionFunc; static HMODULE kernel32_module; =20 +static void __attribute__((__constructor__(QEMU_CONSTRUCTOR_EARLY))) +qemu_thread_init(void) +{ + qemu_thread_set_name("main"); +} + static bool load_set_thread_description(void) { static gsize _init_once =3D 0; --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891897; cv=none; d=zohomail.com; s=zohoarc; b=hNpGNLeICRxST5zFGsNGgtpA75ghsqzHSLyUwiCZFG7u7E7cSE32gcMerHCb+5QR3crxnYlwBKHQHUbxqH/5Wmg3urXZiOUCIiOrRwClCf/Ir7Fad0aV0mGbJiSoGTgU7oqZrAA+wlFY3Li0LSMchiX1cnlusg/Y1JD5De5ycK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891897; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lE1EdAR5TOYWlHIJcWjnUVb3ph2s51JydubRi351Nx4=; b=U8uq5DwHC1ovQKwDXQn9PEZITjF7a+rBDskmWeMRCGkpQWzgjFsc9bWdU8MPFAmN9HpcsGS2mf6xRdJWZ7uIQczjLyOkbxLDeTAvzaeXa5jezds8dXPwCu92BtMo5wvwjKGzY1YB3xCOD3wcpcmszxbbWbOTqELDGCtfJeLNbW8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891897031720.6330890651423; Thu, 8 Jan 2026 09:04:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtR5-0004bD-FM; Thu, 08 Jan 2026 12:04:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQx-0004P8-Lg for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:27 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtQv-0006vb-Uq for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:27 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-315-ETS0T5apO0-jlD89AKwWpw-1; Thu, 08 Jan 2026 12:04:22 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 269E519560A1; Thu, 8 Jan 2026 17:04:21 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C6CE419560B4; Thu, 8 Jan 2026 17:04:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lE1EdAR5TOYWlHIJcWjnUVb3ph2s51JydubRi351Nx4=; b=Y29n4eaiwq11dfOk41qgaN6JXQz3OUSrR2vbZ2XdADLd9nkyUrMFs+jiafC6GBmnl91JPN DyLWj4UxQjRYi7sD5BZFR2tVi0gn1lJJw66KJjFwan3qjTmchE/gZ8BfEZ4wPJ0V3tPKRf V4zFohk7dJnTGvFKYXXSkfJ62dGuPsU= X-MC-Unique: ETS0T5apO0-jlD89AKwWpw-1 X-Mimecast-MFC-AGG-ID: ETS0T5apO0-jlD89AKwWpw_1767891861 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 08/24] util: add API to fetch the current thread name Date: Thu, 8 Jan 2026 17:03:22 +0000 Message-ID: <20260108170338.2693853-9-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891898294158500 This will be used to include the thread name in error reports in a later patch. It returns a const string stored in a thread local to avoid memory allocation when it is called repeatedly in a single thread. The thread name should be set at the very start of the thread execution, which is the case when using qemu_thread_create. Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qemu/thread.h | 1 + meson.build | 21 +++++++++++++++++ util/qemu-thread-posix.c | 33 ++++++++++++++++++++++++++- util/qemu-thread-win32.c | 49 ++++++++++++++++++++++++++++++++++++---- 4 files changed, 99 insertions(+), 5 deletions(-) diff --git a/include/qemu/thread.h b/include/qemu/thread.h index 27b888ab0a..98cc5c41ac 100644 --- a/include/qemu/thread.h +++ b/include/qemu/thread.h @@ -216,6 +216,7 @@ void qemu_thread_get_self(QemuThread *thread); bool qemu_thread_is_self(QemuThread *thread); G_NORETURN void qemu_thread_exit(void *retval); void qemu_thread_set_name(const char *name); +const char *qemu_thread_get_name(void); =20 struct Notifier; /** diff --git a/meson.build b/meson.build index db87358d62..eb27aca329 100644 --- a/meson.build +++ b/meson.build @@ -2874,6 +2874,27 @@ config_host_data.set('CONFIG_PTHREAD_SET_NAME_NP', c= c.links(osdep_prefix + ''' pthread_set_name_np(thread, "QEMU"); return 0; }''', dependencies: threads)) + +config_host_data.set('CONFIG_PTHREAD_GETNAME_NP', cc.links(osdep_prefix + = ''' + #include + + int main(void) + { + char buf[16]; + pthread_getname_np(pthread_self(), buf, sizeof(buf)); + return 0; + }''', dependencies: threads)) +config_host_data.set('CONFIG_PTHREAD_GET_NAME_NP', cc.links(osdep_prefix += ''' + #include + #include + + int main(void) + { + char buf[16]; + pthread_get_name_np(pthread_self(), buf, sizeof(buf)); + return 0; + }''', dependencies: threads)) + config_host_data.set('CONFIG_PTHREAD_CONDATTR_SETCLOCK', cc.links(osdep_pr= efix + ''' #include =20 diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c index afeac9ecad..47156b60ce 100644 --- a/util/qemu-thread-posix.c +++ b/util/qemu-thread-posix.c @@ -18,7 +18,7 @@ #include "qemu/tsan.h" #include "qemu/bitmap.h" =20 -#ifdef CONFIG_PTHREAD_SET_NAME_NP +#if defined(CONFIG_PTHREAD_SET_NAME_NP) || defined(CONFIG_PTHREAD_GET_NAME= _NP) #include #endif =20 @@ -532,3 +532,34 @@ void *qemu_thread_join(QemuThread *thread) } return ret; } + +/* + * This is not defined on Linux, but the man page indicates + * the buffer must be at least 16 bytes, including the NUL + * terminator + */ +#ifndef PTHREAD_MAX_NAMELEN_NP +#define PTHREAD_MAX_NAMELEN_NP 16 +#endif + +static __thread char namebuf[PTHREAD_MAX_NAMELEN_NP]; + +const char *qemu_thread_get_name(void) +{ + int rv; + if (namebuf[0] !=3D '\0') { + return namebuf; + } + +# if defined(CONFIG_PTHREAD_GETNAME_NP) + rv =3D pthread_getname_np(pthread_self(), namebuf, sizeof(namebuf)); +# elif defined(CONFIG_PTHREAD_GET_NAME_NP) + rv =3D pthread_get_name_np(pthread_self(), namebuf, sizeof(namebuf)); +# else + rv =3D -1; +# endif + if (rv !=3D 0) { + g_strlcpy(namebuf, "unnamed", G_N_ELEMENTS(namebuf)); + } + return namebuf; +} diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c index 8ca6429ad3..082a38c7d5 100644 --- a/util/qemu-thread-win32.c +++ b/util/qemu-thread-win32.c @@ -19,7 +19,10 @@ =20 typedef HRESULT (WINAPI *pSetThreadDescription) (HANDLE hThread, PCWSTR lpThreadDescriptio= n); +typedef HRESULT (WINAPI *pGetThreadDescription) (HANDLE hThread, + PWSTR *lpThreadDescriptio= n); static pSetThreadDescription SetThreadDescriptionFunc; +static pGetThreadDescription GetThreadDescriptionFunc; static HMODULE kernel32_module; =20 static void __attribute__((__constructor__(QEMU_CONSTRUCTOR_EARLY))) @@ -28,7 +31,7 @@ qemu_thread_init(void) qemu_thread_set_name("main"); } =20 -static bool load_set_thread_description(void) +static bool load_thread_description(void) { static gsize _init_once =3D 0; =20 @@ -38,14 +41,17 @@ static bool load_set_thread_description(void) SetThreadDescriptionFunc =3D (pSetThreadDescription)GetProcAddress(kernel32_module, "SetThreadDescriptio= n"); - if (!SetThreadDescriptionFunc) { + GetThreadDescriptionFunc =3D + (pGetThreadDescription)GetProcAddress(kernel32_module, + "GetThreadDescriptio= n"); + if (!SetThreadDescriptionFunc || !GetThreadDescriptionFunc) { FreeLibrary(kernel32_module); } } g_once_init_leave(&_init_once, 1); } =20 - return !!SetThreadDescriptionFunc; + return (SetThreadDescriptionFunc && GetThreadDescriptionFunc); } =20 static void error_exit(int err, const char *msg) @@ -331,7 +337,7 @@ void qemu_thread_set_name(const char *name) { g_autofree wchar_t *namew =3D NULL; =20 - if (!load_set_thread_description()) { + if (!load_thread_description()) { return; } =20 @@ -415,3 +421,38 @@ bool qemu_thread_is_self(QemuThread *thread) { return GetCurrentThreadId() =3D=3D thread->tid; } + +static __thread char namebuf[64]; + +const char *qemu_thread_get_name(void) +{ + HRESULT hr; + wchar_t *namew =3D NULL; + g_autofree char *name =3D NULL; + + if (namebuf[0] !=3D '\0') { + return namebuf; + } + + if (!load_thread_description()) { + goto error; + } + + hr =3D GetThreadDescriptionFunc(GetCurrentThread(), &namew); + if (!SUCCEEDED(hr)) { + goto error; + } + + name =3D g_utf16_to_utf8(namew, -1, NULL, NULL, NULL); + LocalFree(namew); + if (!name) { + goto error; + } + + g_strlcpy(namebuf, name, G_N_ELEMENTS(namebuf)); + return namebuf; + + error: + g_strlcpy(namebuf, "unnamed", G_N_ELEMENTS(namebuf)); + return namebuf; +} --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891901; cv=none; d=zohomail.com; s=zohoarc; b=lJU2LvwoQhU/GDy83PXIpdHH/la8uu2UhOXTs1Wor9DhT8FXmVqDbU3jjTz2VmIFWGIXU3Yn/AOt3+GcICjmKCBQ8cSldLWJkGWPtsLE5wS9HAg5WjOz5ONgjwvUal6UYvWZP2FWVrg3/+uVlg0xc4PtD5iEiMK/g/Ul+qXuIbQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891901; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dTVK1LnZ0479/k8qg5JQlYJD3Msw/QWha/Ci92hESJY=; b=Uls5LHFAidIpBkatKlxOeY0gXcQDnBHoGmXMH0xhaC0AIsRr4rTa977Fr60/PdgnJ1Yrd3ZU95LDBmGz6y3HNgQsHACj3q5t3gbLKavk9VWza8AcDGPeNf//gP0KNSauhGQjpN+lNkjvSQNyv4mx8715fvRZO5ZrMo9wsulqNOE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891901280278.08453837920877; Thu, 8 Jan 2026 09:05:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtR8-0004u2-VL; Thu, 08 Jan 2026 12:04:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtR7-0004nO-4B for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtR5-0006wk-C3 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:36 -0500 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-554-JZ8dTHVQNIyQQJzZu1ONEQ-1; Thu, 08 Jan 2026 12:04:29 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A1D12180035D; Thu, 8 Jan 2026 17:04:25 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8080519560A2; Thu, 8 Jan 2026 17:04:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891874; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dTVK1LnZ0479/k8qg5JQlYJD3Msw/QWha/Ci92hESJY=; b=G1EMQ/ogqa3n++G6g8WMndYCaYrwn9nDSwKv+agqq+aZPLTp0KeEAliMX9qcFm0o5Lw6k1 I4A+SzSAmEFId5idVGNeZsG9i8J73GYavlYtfgJiuat9LQd1Fwor7ZaDUBVZMvEcB6f3RR KMs9VNNnx6CSecWKDebtJLvP2c0RS5Q= X-MC-Unique: JZ8dTHVQNIyQQJzZu1ONEQ-1 X-Mimecast-MFC-AGG-ID: JZ8dTHVQNIyQQJzZu1ONEQ_1767891865 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 09/24] util: introduce some API docs for logging APIs Date: Thu, 8 Jan 2026 17:03:23 +0000 Message-ID: <20260108170338.2693853-10-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891901959158500 There is a gotcha with qemu_log() usage in a threaded process. If fragments of a log message are output via qemu_log() it is possible for messages from two threads to get mixed up. To prevent this qemu_log_trylock() should be used, along with fprintf(f) calls. This is a subtle problem that needs to be explained in the API docs to ensure correct usage. Reported-by: Markus Armbruster Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qemu/log-for-trace.h | 17 ++++++++++++++++- include/qemu/log.h | 31 +++++++++++++++++++++++++++++++ rust/util/src/log.rs | 6 ++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/include/qemu/log-for-trace.h b/include/qemu/log-for-trace.h index f3a8791f1d..6861a1a4b7 100644 --- a/include/qemu/log-for-trace.h +++ b/include/qemu/log-for-trace.h @@ -29,7 +29,22 @@ static inline bool qemu_loglevel_mask(int mask) return (qemu_loglevel & mask) !=3D 0; } =20 -/* main logging function */ +/** + * qemu_log: report a log message + * @fmt: the format string for the message + * @...: the format string arguments + * + * This will emit a log message to the current output stream. + * + * The @fmt string should normally represent a complete line + * of text, and thus end with a newline character. + * + * While it is possible to incrementally output fragments of + * a complete line using qemu_log, this is inefficient and + * races with other threads. For outputting fragments it is + * strongly preferred to use the qemu_log_trylock() method + * combined with fprintf(). + */ void G_GNUC_PRINTF(1, 2) qemu_log(const char *fmt, ...); =20 #endif diff --git a/include/qemu/log.h b/include/qemu/log.h index 7effba4da4..e9d3c6806b 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -41,7 +41,38 @@ bool qemu_log_separate(void); =20 /* Lock/unlock output. */ =20 +/** + * Acquires a lock on the current log output stream. + * The returned FILE object should be used with the + * fprintf() function to output the log message, and + * then qemu_log_unlock() called to release the lock. + * + * The primary use case is to be able to incrementally + * output fragments of a complete log message in an + * efficient and race free manner. + * + * The simpler qemu_log() method must only be used + * to output complete log messages. + * + * A typical usage pattern would be + * + * FILE *f =3D qemu_log_trylock() + * + * fprintf(f, "Something "); + * fprintf(f, "Something "); + * fprintf(f, "Something "); + * fprintf(f, "The end\n"); + * + * qemu_log_unlock(f); + * + * Returns: the current FILE if available, NULL on error + */ FILE *qemu_log_trylock(void) G_GNUC_WARN_UNUSED_RESULT; + +/** + * Releases the lock on the log output, previously + * acquired by qemu_log_trylock(). + */ void qemu_log_unlock(FILE *fd); =20 /* Logging functions: */ diff --git a/rust/util/src/log.rs b/rust/util/src/log.rs index 0a4bc4249a..6a3a30d8d8 100644 --- a/rust/util/src/log.rs +++ b/rust/util/src/log.rs @@ -134,6 +134,12 @@ fn drop(&mut self) { /// "Address 0x{:x} out of range", /// error_address, /// ); +/// +/// The `log_mask_ln` macro should only be used for emitting complete +/// log messages. Where it is required to incrementally output string +/// fragments to construct a complete message, `LogGuard::new()` should +/// be directly used in combination with `writeln()` to avoid output +/// races with other QEMU threads. /// ``` #[macro_export] macro_rules! log_mask_ln { --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892206; cv=none; d=zohomail.com; s=zohoarc; b=NXxZjpBcFd7YzdH/U8DoWmUDGUnGvGNeJh+JdKWfLa/P2fiaJeZzS2LTubVHD6Y+2og8UswHzE4Rf6CviOF1WC07/odkCn96YHP9DzwuWCi/gcmIEGAKWyefGFBaiVGkm5nHUA6fCwDJCA7ibRXaILlRJzXYcFwusPBtK65Acto= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892206; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HxGVmRFJHg5nVJLz1ZBLMXtrHWLvPyZOpW/EMNXCgvE=; b=P09t+j8Pj91CROOzq7rJ2Ae35wul3AnS2Bv5rAsQ1gytQaE2+fuMcFz0aw8JGqeHY6kRlPSR80TWeTVnjHsv9QIEhIi9MsghRf7zNHTTcSEKWTry9KCTtRo4czjh9b3jEtk6s9CHNWwo5eAY80CYSivBd7ZS2E/PQMZbsdbKBPY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892206414533.6335239471846; Thu, 8 Jan 2026 09:10:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRA-000556-D2; Thu, 08 Jan 2026 12:04:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtR8-0004rx-Kw for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:38 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtR6-0006x1-6J for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:38 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-691-7Dq-fzMjNdiY-xTC6wq9gg-1; Thu, 08 Jan 2026 12:04:31 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 118C719560A5; Thu, 8 Jan 2026 17:04:30 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0C79B19560A2; Thu, 8 Jan 2026 17:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891875; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HxGVmRFJHg5nVJLz1ZBLMXtrHWLvPyZOpW/EMNXCgvE=; b=C+HzvvqXjXqpXpz8NKqNV8f1yAz0W9Dcl4JfdR+ty2PeFHWgsxHZyjlbCBIruRqSewJjGm Qe82pP63c7wAiOmdxMkXCnKqhOI8UqX71BXsK4CQ027eY1Ycjd9zmS3heWtcswsXCOB8ps 162SNQPtgmZN7GiGplYKNgrOM1FTOGE= X-MC-Unique: 7Dq-fzMjNdiY-xTC6wq9gg-1 X-Mimecast-MFC-AGG-ID: 7Dq-fzMjNdiY-xTC6wq9gg_1767891870 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 10/24] util: avoid repeated prefix on incremental qemu_log calls Date: Thu, 8 Jan 2026 17:03:24 +0000 Message-ID: <20260108170338.2693853-11-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892207636158500 There are three general patterns to QEMU log output 1. Single complete message calls qemu_log("Some message\n"); 2. Direct use of fprintf FILE *f =3D qemu_log_trylock() fprintf(f, "..."); fprintf(f, "..."); fprintf(f, "...\n"); qemu_log_unlock(f) 3. Mixed use of qemu_log_trylock/qemu_log() FILE *f =3D qemu_log_trylock() qemu_log("...."); qemu_log("...."); qemu_log("....\n"); qemu_log_unlock(f) When message prefixes are enabled, the timestamp will be unconditionally emitted for all qemu_log() calls. This works fine in the 1st case, and has no effect in the 2nd case. In the 3rd case, however, we get the timestamp printed over & over in each fragment. One can suggest that pattern (3) is pointless as it is functionally identical to (2) but with extra indirection and overhead. None the less we have a fair bit of code that does this. The qemu_log() call itself is nothing more than a wrapper which does pattern (2) with a single fprintf() call. One might question whether (2) should include the message prefix in the same way that (1), but there are scenarios where this could be inappropriate / unhelpful such as the CPU register dumps or linux-user strace output. This patch fixes the problem in pattern (3) by keeping track of the call depth of qemu_log_trylock() and then only emitting the the prefix when the starting depth was zero. In doing this qemu_log_trylock_context() is also introduced as a variant of qemu_log_trylock() that emits the prefix. Callers doing to batch output can thus choose whether a prefix is appropriate or not. Fixes: 012842c07552 (log: make '-msg timestamp=3Don' apply to all qemu_log = usage) Reported-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qemu/log.h | 7 +++++++ util/log.c | 49 ++++++++++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/include/qemu/log.h b/include/qemu/log.h index e9d3c6806b..95f417c2b7 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -69,6 +69,13 @@ bool qemu_log_separate(void); */ FILE *qemu_log_trylock(void) G_GNUC_WARN_UNUSED_RESULT; =20 +/** + * As qemu_log_trylock(), but will also print the message + * context, if any is configured and this caused the + * acquisition of the FILE lock + */ +FILE *qemu_log_trylock_context(void) G_GNUC_WARN_UNUSED_RESULT; + /** * Releases the lock on the log output, previously * acquired by qemu_log_trylock(). diff --git a/util/log.c b/util/log.c index c44d66b5ce..2ce7286f31 100644 --- a/util/log.c +++ b/util/log.c @@ -127,13 +127,39 @@ static FILE *qemu_log_trylock_with_err(Error **errp) return logfile; } =20 +/* + * Zero if there's been no opening qemu_log_trylock call, + * indicating the need for message context to be emitted + * + * Non-zero if we're in the middle of printing a message, + * possibly over multiple lines and must skip further + * message context + */ +static __thread uint log_depth; + FILE *qemu_log_trylock(void) { - return qemu_log_trylock_with_err(NULL); + FILE *f =3D qemu_log_trylock_with_err(NULL); + log_depth++; + return f; +} + +FILE *qemu_log_trylock_context(void) +{ + FILE *f =3D qemu_log_trylock(); + if (log_depth =3D=3D 1 && message_with_timestamp) { + g_autofree const char *timestr =3D NULL; + g_autoptr(GDateTime) dt =3D g_date_time_new_now_utc(); + timestr =3D g_date_time_format_iso8601(dt); + fprintf(f, "%s ", timestr); + } + return f; } =20 void qemu_log_unlock(FILE *logfile) { + assert(log_depth); + log_depth--; if (logfile) { fflush(logfile); qemu_funlockfile(logfile); @@ -145,28 +171,9 @@ void qemu_log_unlock(FILE *logfile) =20 void qemu_log(const char *fmt, ...) { - FILE *f; - g_autofree const char *timestr =3D NULL; - - /* - * Prepare the timestamp *outside* the logging - * lock so it better reflects when the message - * was emitted if we are delayed acquiring the - * mutex - */ - if (message_with_timestamp) { - g_autoptr(GDateTime) dt =3D g_date_time_new_now_utc(); - timestr =3D g_date_time_format_iso8601(dt); - } - - f =3D qemu_log_trylock(); + FILE *f =3D qemu_log_trylock_context(); if (f) { va_list ap; - - if (timestr) { - fprintf(f, "%s ", timestr); - } - va_start(ap, fmt); vfprintf(f, fmt, ap); va_end(ap); --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892211; cv=none; d=zohomail.com; s=zohoarc; b=blCKE3RdQy12R+gVJmsTeIs0i0I4EHqD06Xis+IfTjFUwoy+gZUUESaXwVLJ9cyFWFbYNdPHaEtmSKnwI709KQrgYbzsJjEYY+HwK3NRZgrB4akGxYAZ8gq4dtyXVyz5ckou3qx1wJ8QQCfHwVxUEX2UulzvGzY8/lM6jU78YII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892211; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oXRavm9Z6ApfjgkeWWh4Q/CQSQoUHqiqudC9CQa4enc=; b=TQLhmULc2J6K5YKpMWcitQWBsdxVyuQQvZeAwr5jbZ/BAD2ml54HwpEBDHk6txdiT8RjWKM22Rjj+i6qLv45CG51c0jLpRCl640tNbBQNvYlZLxt7/01E4JfOfczoXv/9LEWmqm/mNF9Ewb0KCc9cXTExnb5FsQqR9gIwiIZ2nU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892211794983.6526127110334; Thu, 8 Jan 2026 09:10:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRE-0005Ku-30; Thu, 08 Jan 2026 12:04:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRB-0005EU-LW for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:41 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRA-0006y3-3T for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:41 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-171-8aIzocqrO_OvLazIKJNQOg-1; Thu, 08 Jan 2026 12:04:36 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6AB4A19560B7; Thu, 8 Jan 2026 17:04:34 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6E35F19560B4; Thu, 8 Jan 2026 17:04:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oXRavm9Z6ApfjgkeWWh4Q/CQSQoUHqiqudC9CQa4enc=; b=W7m3CMg0J64xnLRKSorRBPwigyU8j+MciuhtkzOa3CE/WCB1J0JzQWwASrWEmxHnV3AXTb 6HRehFwJwUQiEpjQbum4+FRhUcfNn8ef35tK99YERVDmQ20REJKaYn7VtZOMrrx4h6RqOX u6uiabiUu025qAZW1kjm93kjS0prtHA= X-MC-Unique: 8aIzocqrO_OvLazIKJNQOg-1 X-Mimecast-MFC-AGG-ID: 8aIzocqrO_OvLazIKJNQOg_1767891874 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 11/24] ui/vnc: remove use of error_printf_unless_qmp() Date: Thu, 8 Jan 2026 17:03:25 +0000 Message-ID: <20260108170338.2693853-12-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892213584158500 The error_printf_unless_qmp() will print to the monitor if the current one is HMP, if it is QMP nothing will be printed, otherwise stderr will be used. This scenario is easily handled by checking !monitor_cur_is_qmp() and then calling the error_printf() function. Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Richard Henderson Reviewed-by: Markus Armbruster Signed-off-by: Daniel P. Berrang=C3=A9 --- ui/vnc.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index a61a4f937d..a209c32f6d 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -3534,8 +3534,10 @@ int vnc_display_password(const char *id, const char = *password) return -EINVAL; } if (vd->auth =3D=3D VNC_AUTH_NONE) { - error_printf_unless_qmp("If you want use passwords please enable " - "password auth using '-vnc ${dpy},password= '.\n"); + if (!monitor_cur_is_qmp()) { + error_printf("If you want to use passwords, please enable " + "password auth using '-vnc ${dpy},password'.\n"); + } return -EINVAL; } =20 @@ -3574,9 +3576,11 @@ static void vnc_display_print_local_addr(VncDisplay = *vd) qapi_free_SocketAddress(addr); return; } - error_printf_unless_qmp("VNC server running on %s:%s\n", - addr->u.inet.host, - addr->u.inet.port); + if (!monitor_cur_is_qmp()) { + error_printf("VNC server running on %s:%s\n", + addr->u.inet.host, + addr->u.inet.port); + } qapi_free_SocketAddress(addr); } =20 --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892005; cv=none; d=zohomail.com; s=zohoarc; b=QwZ79vk9ufcqRrKvapyml46CJwG20/i41/Cuo+1lUAT5ku1UN9gks44GvpDmhhq5ExvnEJw6txF+1lkxix8Li5qwW/2sRQgUM9R5lsczdxpePoCVkwzsoS/NI0MsjZjTEHi0OsxAlBiRAL/A+Kc1WqmQPLt+PTCmTg5uBfRUFM4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892005; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fMl0yuiqTUNpanJ6XOk7+wURjBt9VG72A/URBlELV/Y=; b=jRuuAaBZeJ4ez7db9uivmby3E4MaKRmyrwx99Qxl8OQJIgHEEhK0MECHCHGiWtMPp+V+5zxa7qukY0IyOfSeh9xuajstYLuN7UxGRNSKGLmxb1b6ZXfEhleqjEpOliWXUVkh0Nu7/WeNlChTXXL0ZDdshLkdik3X0CvY3hdENME= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892005146498.34067555582214; Thu, 8 Jan 2026 09:06:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtSb-0001a9-HQ; Thu, 08 Jan 2026 12:06:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtSS-0001PD-KM for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:06:02 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtSO-0007Rk-Ud for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:59 -0500 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-457-R3K0hmoCP3uWYEG1TsRY7Q-1; Thu, 08 Jan 2026 12:05:01 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D0C24180061E; Thu, 8 Jan 2026 17:04:38 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B77951955F44; Thu, 8 Jan 2026 17:04:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891941; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fMl0yuiqTUNpanJ6XOk7+wURjBt9VG72A/URBlELV/Y=; b=HNOz0F8YfvkKNIkfeihX42AKQawsl3CA7UoJ7W5GcQlxscH6fi+Q6jHY0aHsHnE7hzalzV ovmCFqcuQW+F+uZ5okxG/3O9kjPgYej1C9ZnW+wk8Eb53NiaEDyRqm2Zq+BWit7vR9GZ3r mgjg9vq8RFSOO45vodbeBM5tPQfn2wg= X-MC-Unique: R3K0hmoCP3uWYEG1TsRY7Q-1 X-Mimecast-MFC-AGG-ID: R3K0hmoCP3uWYEG1TsRY7Q_1767891879 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 12/24] monitor: remove redundant error_[v]printf_unless_qmp Date: Thu, 8 Jan 2026 17:03:26 +0000 Message-ID: <20260108170338.2693853-13-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892006744158500 These functions only had one caller which was easily converted to the normal error_printf() function. Remove them as they don't add sufficient value. Reviewed-by: Richard Henderson Reviewed-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 --- include/monitor/monitor.h | 3 --- monitor/monitor.c | 24 ------------------------ stubs/error-printf.c | 5 ----- 3 files changed, 32 deletions(-) diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index c3740ec616..296690e1f1 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -59,7 +59,4 @@ void monitor_register_hmp(const char *name, bool info, void monitor_register_hmp_info_hrt(const char *name, HumanReadableText *(*handler)(Error **e= rrp)); =20 -int error_vprintf_unless_qmp(const char *fmt, va_list ap) G_GNUC_PRINTF(1,= 0); -int error_printf_unless_qmp(const char *fmt, ...) G_GNUC_PRINTF(1, 2); - #endif /* MONITOR_H */ diff --git a/monitor/monitor.c b/monitor/monitor.c index dd2c45ded0..4d26cd9496 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -281,30 +281,6 @@ int error_vprintf(const char *fmt, va_list ap) return vfprintf(stderr, fmt, ap); } =20 -int error_vprintf_unless_qmp(const char *fmt, va_list ap) -{ - Monitor *cur_mon =3D monitor_cur(); - - if (!cur_mon) { - return vfprintf(stderr, fmt, ap); - } - if (!monitor_cur_is_qmp()) { - return monitor_vprintf(cur_mon, fmt, ap); - } - return -1; -} - -int error_printf_unless_qmp(const char *fmt, ...) -{ - va_list ap; - int ret; - - va_start(ap, fmt); - ret =3D error_vprintf_unless_qmp(fmt, ap); - va_end(ap); - return ret; -} - static MonitorQAPIEventConf monitor_qapi_event_conf[QAPI_EVENT__MAX] =3D { /* Limit guest-triggerable events to 1 per second */ [QAPI_EVENT_RTC_CHANGE] =3D { 1000 * SCALE_MS }, diff --git a/stubs/error-printf.c b/stubs/error-printf.c index 0e326d8010..1afa0f62ca 100644 --- a/stubs/error-printf.c +++ b/stubs/error-printf.c @@ -16,8 +16,3 @@ int error_vprintf(const char *fmt, va_list ap) } return vfprintf(stderr, fmt, ap); } - -int error_vprintf_unless_qmp(const char *fmt, va_list ap) -{ - return error_vprintf(fmt, ap); -} --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892059; cv=none; d=zohomail.com; s=zohoarc; b=i+xWbT4Bc97fuXcI+dednC/RXN0t8Ly4F1WPB2wT+t7Kg0BAXUDWJhhRNddggjt6PatNjbGi+YJ5hqxvpjXt+GtTp3OtK+JS6Q4j+rtguStBqdA0w/Cf1W2xOFG6MV4Ti/yejxE/6sJT5QWT0vHDxZOqfEK5BPNnp8ppS56F84E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892059; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8d19vFBRojFtvdIOIQ3lW5BtorD2+Jz3CwhXXu8qa4s=; b=hLjegLb/CqYmfF9KZvEbpOQbuE1X+LSrjM2uGKgnAY59JkBKIv/5nBnXcBSuvYpP1xYGhvy61DclROBfH26mw0AXGJPsTg8Cuy2Rdd9PqFKEAQlojUGYotRCvadr+vQtQN4wtGKskK0kiXX7GxxSzhhXTvKWZSHfdquHwS8GOig= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892059911430.2971701179247; Thu, 8 Jan 2026 09:07:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRV-0005z2-VP; Thu, 08 Jan 2026 12:05:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRN-0005pB-Qn for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:54 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRI-0006z3-Un for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:52 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-411-fgffMLsxMl2sdnJmS-FXAg-1; Thu, 08 Jan 2026 12:04:44 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 3F03419560A7; Thu, 8 Jan 2026 17:04:43 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 3E99919560A2; Thu, 8 Jan 2026 17:04:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891888; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8d19vFBRojFtvdIOIQ3lW5BtorD2+Jz3CwhXXu8qa4s=; b=FGIywSBq125AiJ4dcU6EHfzLY9pcoQ1NpRAjzDOc4w/njEVIvvriw2sw2WbXxKcPAeicGl Sgl8DLWR8vLZDW+64LLQ1lM9OSMSP+Lx2Zz9K00JIAa0L4IgNo/uexp+OlOMLxIc1uWOsg mRhmJRwqgwVKgrAOCd5gGxh9lJ0Tb34= X-MC-Unique: fgffMLsxMl2sdnJmS-FXAg-1 X-Mimecast-MFC-AGG-ID: fgffMLsxMl2sdnJmS-FXAg_1767891883 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 13/24] monitor: refactor error_vprintf() Date: Thu, 8 Jan 2026 17:03:27 +0000 Message-ID: <20260108170338.2693853-14-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892060814158500 The monitor_vprintf() code will return -1 if either the monitor is NULL, or the monitor is QMP. The error_vprintf() code can take advantage of this to avoid having to duplicate the same checks, and instead simply look at the return value. Reviewed-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- monitor/monitor.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/monitor/monitor.c b/monitor/monitor.c index 4d26cd9496..627a59b23e 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -268,17 +268,19 @@ void monitor_printc(Monitor *mon, int c) monitor_printf(mon, "'"); } =20 -/* - * Print to current monitor if we have one, else to stderr. - */ int error_vprintf(const char *fmt, va_list ap) { Monitor *cur_mon =3D monitor_cur(); - - if (cur_mon && !monitor_cur_is_qmp()) { - return monitor_vprintf(cur_mon, fmt, ap); + /* + * This will return -1 if 'cur_mon' is NULL, or is QMP. + * IOW this will only print if in HMP, otherwise we + * fallback to stderr for QMP / no-monitor scenarios. + */ + int ret =3D monitor_vprintf(cur_mon, fmt, ap); + if (ret =3D=3D -1) { + ret =3D vfprintf(stderr, fmt, ap); } - return vfprintf(stderr, fmt, ap); + return ret; } =20 static MonitorQAPIEventConf monitor_qapi_event_conf[QAPI_EVENT__MAX] =3D { --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891926; cv=none; d=zohomail.com; s=zohoarc; b=MPQngvPJew3j7qO/6lzMNUm8PQomc/1YOXaNbuxpZNxylKJCIgwXpZfhSlLn7YBomZNQH5TTBppqN5l2PP1ahHOGTcN6QmSQjp7kDFmZGLig0EJjb8VNTiOlkWheuh7JqoO4020ZIxwpXQzGfeQoHykO8cVjV4x59SPfOGHHNfU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891926; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=M1duE9W+YwZQh+SUbRd4DXBvtZgWpQ2DjJcNRbX6my0=; b=SRXEnByikxRqdiz2BfXCLXxJG9ghkbSabuNxB2IjW6Xa+/dHclDUG13Rt0P1h2BYorntBUUqKHALTWrXcaJX/YT3IY0WOoSmgfAJgWbo6TEjHCgneFwmu9ByhOAzukIxRvlTfPmnQlWWwDTVb/dGvJ44v5sf7oE97693myFElIk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891926012408.0432596431002; Thu, 8 Jan 2026 09:05:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRl-0006XK-V2; Thu, 08 Jan 2026 12:05:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRT-0005zL-Am for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:01 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRR-00070N-2U for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:04:59 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-515-uAE3cU_YNP-fZ63kTUVGig-1; Thu, 08 Jan 2026 12:04:51 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D850519541B3; Thu, 8 Jan 2026 17:04:47 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A15CF19560A2; Thu, 8 Jan 2026 17:04:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891896; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=M1duE9W+YwZQh+SUbRd4DXBvtZgWpQ2DjJcNRbX6my0=; b=e200gPYmmq/kIQWwTs9ZQgzyc7Cva7H3JKbs6rjUrnzZ5W2FBX8r2miNwewqzGTYVZt0sL bpJ8kwcEO0y4mTzGjAwEn49wVnP+bPrI7pNQUz5wX4Y73+G3zBgBuVRPT5DrTU78+sePd+ iek+DHbnaY/ZmZ5/CzutJk2BpD6FRb4= X-MC-Unique: uAE3cU_YNP-fZ63kTUVGig-1 X-Mimecast-MFC-AGG-ID: uAE3cU_YNP-fZ63kTUVGig_1767891888 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson , Eric Blake Subject: [PATCH v5 14/24] monitor: move error_vprintf back to error-report.c Date: Thu, 8 Jan 2026 17:03:28 +0000 Message-ID: <20260108170338.2693853-15-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891928258158500 The current unit tests rely on monitor.o not being linked, such that the monitor stubs get linked instead. Since error_vprintf is in monitor.o this allows a stub error_vprintf impl to be used that calls g_test_message. This takes a different approach, with error_vprintf moving back to error-report.c such that it is always linked into the tests. The monitor_vprintf() stub is then changed to use g_test_message if QTEST_SILENT_ERRORS is set, otherwise it will return -1 and trigger error_vprintf to call vfprintf. The end result is functionally equivalent for the purposes of the unit tests. Reviewed-by: Richard Henderson Reviewed-by: Eric Blake Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- monitor/monitor.c | 15 --------------- stubs/error-printf.c | 18 ------------------ stubs/meson.build | 1 - stubs/monitor-core.c | 14 +++++++++++++- util/error-report.c | 15 +++++++++++++++ 5 files changed, 28 insertions(+), 35 deletions(-) delete mode 100644 stubs/error-printf.c diff --git a/monitor/monitor.c b/monitor/monitor.c index 627a59b23e..6dc5a7016d 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -268,21 +268,6 @@ void monitor_printc(Monitor *mon, int c) monitor_printf(mon, "'"); } =20 -int error_vprintf(const char *fmt, va_list ap) -{ - Monitor *cur_mon =3D monitor_cur(); - /* - * This will return -1 if 'cur_mon' is NULL, or is QMP. - * IOW this will only print if in HMP, otherwise we - * fallback to stderr for QMP / no-monitor scenarios. - */ - int ret =3D monitor_vprintf(cur_mon, fmt, ap); - if (ret =3D=3D -1) { - ret =3D vfprintf(stderr, fmt, ap); - } - return ret; -} - static MonitorQAPIEventConf monitor_qapi_event_conf[QAPI_EVENT__MAX] =3D { /* Limit guest-triggerable events to 1 per second */ [QAPI_EVENT_RTC_CHANGE] =3D { 1000 * SCALE_MS }, diff --git a/stubs/error-printf.c b/stubs/error-printf.c deleted file mode 100644 index 1afa0f62ca..0000000000 --- a/stubs/error-printf.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "qemu/osdep.h" -#include "qemu/error-report.h" -#include "monitor/monitor.h" - -int error_vprintf(const char *fmt, va_list ap) -{ - int ret; - - if (g_test_initialized() && !g_test_subprocess() && - getenv("QTEST_SILENT_ERRORS")) { - char *msg =3D g_strdup_vprintf(fmt, ap); - g_test_message("%s", msg); - ret =3D strlen(msg); - g_free(msg); - return ret; - } - return vfprintf(stderr, fmt, ap); -} diff --git a/stubs/meson.build b/stubs/meson.build index 0b2778c568..3d77458a3f 100644 --- a/stubs/meson.build +++ b/stubs/meson.build @@ -3,7 +3,6 @@ # below, so that it is clear who needs the stubbed functionality. =20 stub_ss.add(files('cpu-get-clock.c')) -stub_ss.add(files('error-printf.c')) stub_ss.add(files('fdset.c')) stub_ss.add(files('iothread-lock.c')) stub_ss.add(files('is-daemonized.c')) diff --git a/stubs/monitor-core.c b/stubs/monitor-core.c index 1894cdfe1f..a7c32297c9 100644 --- a/stubs/monitor-core.c +++ b/stubs/monitor-core.c @@ -18,5 +18,17 @@ void qapi_event_emit(QAPIEvent event, QDict *qdict) =20 int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) { - abort(); + /* + * Pretend 'g_test_message' is our monitor console to + * stop the caller sending messages to stderr + */ + if (g_test_initialized() && !g_test_subprocess() && + getenv("QTEST_SILENT_ERRORS")) { + char *msg =3D g_strdup_vprintf(fmt, ap); + g_test_message("%s", msg); + size_t ret =3D strlen(msg); + g_free(msg); + return ret; + } + return -1; } diff --git a/util/error-report.c b/util/error-report.c index 1b17c11de1..b262ad01cb 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -29,6 +29,21 @@ bool message_with_timestamp; bool error_with_guestname; const char *error_guest_name; =20 +int error_vprintf(const char *fmt, va_list ap) +{ + Monitor *cur_mon =3D monitor_cur(); + /* + * This will return -1 if 'cur_mon' is NULL, or is QMP. + * IOW this will only print if in HMP, otherwise we + * fallback to stderr for QMP / no-monitor scenarios. + */ + int ret =3D monitor_vprintf(cur_mon, fmt, ap); + if (ret =3D=3D -1) { + ret =3D vfprintf(stderr, fmt, ap); + } + return ret; +} + int error_printf(const char *fmt, ...) { va_list ap; --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892059; cv=none; d=zohomail.com; s=zohoarc; b=egjiHk1JmSs9uKpAii4hr6wTx51iTtbdh0H/9Y/XEV5LdpUBStiB7ixosqqVn9Fs0wLcREedB7gcBrIUshHNsF+TJ4ZskxHBchR12wEMv14R2+Tf0oAWwhNDcZPLELJcMbYjoCG5TRpF5Ew0VP3EhmMFu30Ew5xFlgvxZRs3Cdo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892059; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sHfp9koRpKPpUyuiE2GHRdtDltYSxKdLKrgXRYbwQBU=; b=DojIoTQLy1dwROZVb51MsFpqCjjRrbNTtnM1qXsvEEzL7Jvz7oQt3tcRrMXjjPzfw334yPcrCNnx9mG2kVt766wXLcIivYAAr+Y3zBHBcjcG00QhjwNzBXvNfdRzeq4htY79a/+OnEfOWCVnSro5JsKjAl4d1Gsy1MkBttpeXSA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892059728532.0277313008278; Thu, 8 Jan 2026 09:07:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRn-0006ix-HQ; Thu, 08 Jan 2026 12:05:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRX-00062F-A1 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:03 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRT-00070z-UH for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:03 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-496-P4ikxrj8NFKRJ4LaTYsWFg-1; Thu, 08 Jan 2026 12:04:53 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 285BF1955F34; Thu, 8 Jan 2026 17:04:52 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 39ADE19560B4; Thu, 8 Jan 2026 17:04:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891899; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sHfp9koRpKPpUyuiE2GHRdtDltYSxKdLKrgXRYbwQBU=; b=Z5UqNdtS+qw0YuEF+WDzTLIsAX/NJpm6wvA+9f5K6n27xU7d4uUpt3IyR2nw3FOxGzfEUv Z9MxqNTFSdzVKdsFXkFzm6c+/PON3el9WKtZZnp9TeIXX234SqzNz+Riywo5dPM486DgHg 3sYHNYCHjsK9ycsNQBer6EoNF1C8UQA= X-MC-Unique: P4ikxrj8NFKRJ4LaTYsWFg-1 X-Mimecast-MFC-AGG-ID: P4ikxrj8NFKRJ4LaTYsWFg_1767891892 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 15/24] monitor: introduce monitor_cur_is_hmp() helper Date: Thu, 8 Jan 2026 17:03:29 +0000 Message-ID: <20260108170338.2693853-16-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892060915158500 Note that this is not simply the inverse of monitor_cur_is_qmp(), as both helpers require that monitor_cur() is first non-NULL. Reviewed-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 --- include/monitor/monitor.h | 1 + monitor/monitor.c | 10 ++++++++++ stubs/monitor-core.c | 6 ++++++ tests/unit/test-util-sockets.c | 1 + 4 files changed, 18 insertions(+) diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index 296690e1f1..9c71e6cf3c 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -16,6 +16,7 @@ extern QemuOptsList qemu_mon_opts; Monitor *monitor_cur(void); Monitor *monitor_set_cur(Coroutine *co, Monitor *mon); bool monitor_cur_is_qmp(void); +bool monitor_cur_is_hmp(void); =20 void monitor_init_globals(void); void monitor_init_globals_core(void); diff --git a/monitor/monitor.c b/monitor/monitor.c index 6dc5a7016d..b81cc7d2ed 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -116,6 +116,16 @@ bool monitor_cur_is_qmp(void) return cur_mon && monitor_is_qmp(cur_mon); } =20 +/** + * Is the current monitor, if any, a HMP monitor? + */ +bool monitor_cur_is_hmp(void) +{ + Monitor *cur_mon =3D monitor_cur(); + + return cur_mon && !monitor_is_qmp(cur_mon); +} + /** * Is @mon is using readline? * Note: not all HMP monitors use readline, e.g., gdbserver has a diff --git a/stubs/monitor-core.c b/stubs/monitor-core.c index a7c32297c9..674211f48f 100644 --- a/stubs/monitor-core.c +++ b/stubs/monitor-core.c @@ -7,6 +7,12 @@ Monitor *monitor_cur(void) return NULL; } =20 +bool monitor_cur_is_hmp(void) +{ + /* since monitor_cur() above returns NULL, this can't be true */ + return false; +} + Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) { return NULL; diff --git a/tests/unit/test-util-sockets.c b/tests/unit/test-util-sockets.c index ee66d727c3..4b7f408902 100644 --- a/tests/unit/test-util-sockets.c +++ b/tests/unit/test-util-sockets.c @@ -74,6 +74,7 @@ int monitor_get_fd(Monitor *mon, const char *fdname, Erro= r **errp) Monitor *monitor_cur(void) { return cur_mon; } Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) { abort(); } int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) { abort(); } +bool monitor_cur_is_hmp(void) { return false; } =20 #ifndef _WIN32 static void test_socket_fd_pass_name_good(void) --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891958; cv=none; d=zohomail.com; s=zohoarc; b=Uz+PUY9wCLrFIMfUuSgTMA/r3JdhpbpCqoeDk/vWT5esOlIuXF6t0cXhy+RI2wJU1+0IbY4/78OABQznnLx9PHVhZeIZk0Jq09n4vUjh22MEndS1fiNx6aAEUMJ3XUbamF7mfGyqg0D9jsWzrtX0TUfXEe2WSVlIoy5mIXMWpE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891958; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ADQ88xDE2rpP46nxPCt+L4D0RKvsTUELfinlYd9oUZ4=; b=NSb1jYKYQTuaDJKOpLJwdC7gAwnvmp1nHNJb2XyExAdmfRzBhjD/sWimgJKB/xLi1DmjIESkBrA+XYRshCXN2sXRyMf+vpoQLS5fJ5xmuyzkVdf7086XaG0nrr+YrTLxxpjmZnoQ/MsMOSeXON0vDoOf02L3ce9cYPAc8oewAak= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891958497661.7161786327299; Thu, 8 Jan 2026 09:05:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRy-0007T3-HG; Thu, 08 Jan 2026 12:05:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRd-0006Hx-TI for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRb-0007Cy-QE for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:09 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-684-8UCTbOYhMLaThzENuCpmPw-1; Thu, 08 Jan 2026 12:05:01 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C089219560AF; Thu, 8 Jan 2026 17:04:56 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8A39419560A2; Thu, 8 Jan 2026 17:04:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ADQ88xDE2rpP46nxPCt+L4D0RKvsTUELfinlYd9oUZ4=; b=NOufkiitbdz2IBw046ipTf4zx+BMesgf/9QRLnVUu4rKRlTEAgI9+8tWomm7oufacKAHsk cQYI8yfvG0NXEth0mK9afskM7YSl0ImqJ+WE+8U1uvqyNSUN6LmVdaBnEWg33ZlVDj3eHa KOGT1B8wBLxLTp2MmuzAQjiKlwNhwlM= X-MC-Unique: 8UCTbOYhMLaThzENuCpmPw-1 X-Mimecast-MFC-AGG-ID: 8UCTbOYhMLaThzENuCpmPw_1767891896 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 16/24] util: don't skip error prefixes when QMP is active Date: Thu, 8 Jan 2026 17:03:30 +0000 Message-ID: <20260108170338.2693853-17-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891960459158500 The vreport() function will print to HMP if available, otherwise to stderr. In the event that vreport() is called during execution of a QMP command, it will print to stderr, but mistakenly omit the message prefixes (timestamp, guest name, program name). Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster Reviewed-by: Richard Henderson --- util/error-report.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/error-report.c b/util/error-report.c index b262ad01cb..872158ad90 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -159,7 +159,7 @@ static void print_loc(void) int i; const char *const *argp; =20 - if (!monitor_cur() && g_get_prgname()) { + if (!monitor_cur_is_hmp() && g_get_prgname()) { error_printf("%s:", g_get_prgname()); sep =3D " "; } @@ -203,14 +203,14 @@ static void vreport(report_type type, const char *fmt= , va_list ap) { gchar *timestr; =20 - if (message_with_timestamp && !monitor_cur()) { + if (message_with_timestamp && !monitor_cur_is_hmp()) { timestr =3D real_time_iso8601(); error_printf("%s ", timestr); g_free(timestr); } =20 /* Only prepend guest name if -msg guest-name and -name guest=3D... ar= e set */ - if (error_with_guestname && error_guest_name && !monitor_cur()) { + if (error_with_guestname && error_guest_name && !monitor_cur_is_hmp())= { error_printf("%s ", error_guest_name); } =20 --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892121; cv=none; d=zohomail.com; s=zohoarc; b=gsZS9fyumOKX0oyGJmDoPlbNh2SJufniWGD2l3h6f5v+i6yduK4182XrU/oCjrWTdtWJdp/vK41mUGdKufHjHtp9d53dy/WCsB8RUcyBx4xO4sQuKkj/BS+PIYsHaocHoj1AaPIXB7TbfAsv8Lrxtl57OXm5XXVhIlgYDErx+Jo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892121; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yg0zSnEsN3Jfnx2kC4NbneGQBe53c5O0z2x9H+oKOks=; b=mOBIdAah1/pnmgAhfiDdxSE4gRnWVfcf5m4xjLzZqJexD7WlnPkV5/6clRpwSzdkynZFAML8rT9MYBGeF5SVD+xYeQYZmPe2AiaWFgQibF4ueIP0t/VCk2D3/sTwhfGk4g1D7g25owc8GYC2lOxOAkyhhBCpj2TWKEcwaRmtm2U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892121388434.26328152957876; Thu, 8 Jan 2026 09:08:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRo-0006s3-FK; Thu, 08 Jan 2026 12:05:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRj-0006NS-LP for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRd-0007D8-Lz for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:12 -0500 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-112-jv_hIzDlPKGLLROoHcRjwg-1; Thu, 08 Jan 2026 12:05:02 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 18B0F1800342; Thu, 8 Jan 2026 17:05:01 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2B20319560B4; Thu, 8 Jan 2026 17:04:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yg0zSnEsN3Jfnx2kC4NbneGQBe53c5O0z2x9H+oKOks=; b=IKw0UAa4wCDyWFtRIMAp29Whhqf3/1jbU3tEBurKV94tZ0109VB7xdnSID2JCfSjQwOhmQ JQAKbNvUjFNvP7DwwOyfc1XTXx87MaItBjLvpiiqgvcpgRgfVvw4xoyCldEbCt4Q7eP4o0 BNXVuE7HKQR3mKvUnPrswh5RfOodQGo= X-MC-Unique: jv_hIzDlPKGLLROoHcRjwg-1 X-Mimecast-MFC-AGG-ID: jv_hIzDlPKGLLROoHcRjwg_1767891901 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 17/24] util: fix interleaving of error & trace output Date: Thu, 8 Jan 2026 17:03:31 +0000 Message-ID: <20260108170338.2693853-18-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892123441158500 The monitor_cur_hmp() function will acquire/release mutex locks, which will trigger trace probes, which can in turn trigger qemu_log() calls. vreport() calls monitor_cur() multiple times through its execution both directly and indirectly via error_vprintf(). The result is that the prefix information printed by vreport() gets interleaved with qemu_log() output, when run outside the context of an HMP command dispatcher. This can be seen with: $ qemu-system-x86_64 \ -msg timestamp=3Don,guest-name=3Don \ -display none \ -object tls-creds-x509,id=3Df,dir=3Dfish \ -name fish \ -d trace:qemu_mutex* 2025-09-10T16:30:42.514374Z qemu_mutex_unlock released mutex 0x560b0339b= 4c0 (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:30:42.514400Z qemu_mutex_lock waiting on mutex 0x560b03398= 3e0 (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:30:42.514402Z qemu_mutex_locked taken mutex 0x560b033983e0= (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:30:42.514404Z qemu_mutex_unlock released mutex 0x560b03398= 3e0 (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:30:42.516716Z qemu_mutex_lock waiting on mutex 0x560b03398= 560 (../monitor/monitor.c:91) 2025-09-10T16:30:42.516723Z qemu_mutex_locked taken mutex 0x560b03398560= (../monitor/monitor.c:91) 2025-09-10T16:30:42.516726Z qemu_mutex_unlock released mutex 0x560b03398= 560 (../monitor/monitor.c:96) 2025-09-10T16:30:42.516728Z qemu_mutex_lock waiting on mutex 0x560b03398= 560 (../monitor/monitor.c:91) 2025-09-10T16:31:04.842057Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842058Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) 2025-09-10T16:31:04.842055Z 2025-09-10T16:31:04.842060Z qemu_mutex_lock = waiting on mutex 0x564f5e401560 (../monitor/monitor.c:91) 2025-09-10T16:31:04.842061Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842062Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) 2025-09-10T16:31:04.842064Z qemu_mutex_lock waiting on mutex 0x564f5e401= 560 (../monitor/monitor.c:91) 2025-09-10T16:31:04.842065Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842066Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) fish 2025-09-10T16:31:04.842068Z qemu_mutex_lock waiting on mutex 0x564f= 5e401560 (../monitor/monitor.c:91) 2025-09-10T16:31:04.842069Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842070Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) 2025-09-10T16:31:04.842072Z qemu_mutex_lock waiting on mutex 0x564f5e401= 560 (../monitor/monitor.c:91) 2025-09-10T16:31:04.842097Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842099Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) qemu-system-x86_64:2025-09-10T16:31:04.842100Z qemu_mutex_lock waiting o= n mutex 0x564f5e401560 (../monitor/monitor.c:91) 2025-09-10T16:31:04.842102Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842103Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) 2025-09-10T16:31:04.842105Z qemu_mutex_lock waiting on mutex 0x564f5e40= 1560 (../monitor/monitor.c:91) 2025-09-10T16:31:04.842106Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842107Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) Unable to access credentials fish/ca-cert.pem: No such file or directory= 2025-09-10T16:31:04.842109Z qemu_mutex_lock waiting on mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842110Z qemu_mutex_locked taken mutex 0x564f5e401560= (../monitor/monitor.c:91) 2025-09-10T16:31:04.842111Z qemu_mutex_unlock released mutex 0x564f5e401= 560 (../monitor/monitor.c:96) To avoid this interleaving (as well as reduce the huge number of mutex lock/unlock calls) we need to ensure that monitor_cur_is_hmp() is only called once at the start of vreport(), and if no HMP is present, no further monitor APIs can be called. This implies error_[v]printf() cannot be called from vreport(). Instead we must introduce error_[v]printf_mon() which accept a pre-acquired Monitor object. In some cases, however, fprintf can be called directly as output will never be directed to the monitor. $ qemu-system-x86_64 \ -msg timestamp=3Don,guest-name=3Don \ -display none \ -object tls-creds-x509,id=3Df,dir=3Dfish \ -name fish \ -d trace:qemu_mutex* 2025-09-10T16:31:22.701691Z qemu_mutex_unlock released mutex 0x5626fd3b8= 4c0 (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:31:22.701728Z qemu_mutex_lock waiting on mutex 0x5626fd3b5= 3e0 (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:31:22.701730Z qemu_mutex_locked taken mutex 0x5626fd3b53e0= (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:31:22.701732Z qemu_mutex_unlock released mutex 0x5626fd3b5= 3e0 (/var/home/berrange/src/virt/qemu/include/qemu/lockable.h:56) 2025-09-10T16:31:22.703989Z qemu_mutex_lock waiting on mutex 0x5626fd3b5= 560 (../monitor/monitor.c:91) 2025-09-10T16:31:22.703996Z qemu_mutex_locked taken mutex 0x5626fd3b5560= (../monitor/monitor.c:91) 2025-09-10T16:31:22.703999Z qemu_mutex_unlock released mutex 0x5626fd3b5= 560 (../monitor/monitor.c:96) 2025-09-10T16:31:22.704000Z fish qemu-system-x86_64: Unable to access cr= edentials fish/ca-cert.pem: No such file or directory Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Richard Henderson --- util/error-report.c | 67 +++++++++++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/util/error-report.c b/util/error-report.c index 872158ad90..14b170ca4c 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -29,9 +29,12 @@ bool message_with_timestamp; bool error_with_guestname; const char *error_guest_name; =20 -int error_vprintf(const char *fmt, va_list ap) +/* + * Print to current monitor if we have one, else to stderr. + */ +static int G_GNUC_PRINTF(2, 0) +error_vprintf_mon(Monitor *cur_mon, const char *fmt, va_list ap) { - Monitor *cur_mon =3D monitor_cur(); /* * This will return -1 if 'cur_mon' is NULL, or is QMP. * IOW this will only print if in HMP, otherwise we @@ -44,13 +47,30 @@ int error_vprintf(const char *fmt, va_list ap) return ret; } =20 +static int G_GNUC_PRINTF(2, 3) +error_printf_mon(Monitor *cur_mon, const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + ret =3D error_vprintf_mon(cur_mon, fmt, ap); + va_end(ap); + return ret; +} + +int error_vprintf(const char *fmt, va_list ap) +{ + return error_vprintf_mon(monitor_cur(), fmt, ap); +} + int error_printf(const char *fmt, ...) { va_list ap; int ret; =20 va_start(ap, fmt); - ret =3D error_vprintf(fmt, ap); + ret =3D error_vprintf_mon(monitor_cur(), fmt, ap); va_end(ap); return ret; } @@ -153,34 +173,34 @@ void loc_set_file(const char *fname, int lno) /* * Print current location to current monitor if we have one, else to stder= r. */ -static void print_loc(void) +static void print_loc(Monitor *cur) { const char *sep =3D ""; int i; const char *const *argp; =20 - if (!monitor_cur_is_hmp() && g_get_prgname()) { - error_printf("%s:", g_get_prgname()); + if (!cur && g_get_prgname()) { + fprintf(stderr, "%s:", g_get_prgname()); sep =3D " "; } switch (cur_loc->kind) { case LOC_CMDLINE: argp =3D cur_loc->ptr; for (i =3D 0; i < cur_loc->num; i++) { - error_printf("%s%s", sep, argp[i]); + error_printf_mon(cur, "%s%s", sep, argp[i]); sep =3D " "; } - error_printf(": "); + error_printf_mon(cur, ": "); break; case LOC_FILE: - error_printf("%s:", (const char *)cur_loc->ptr); + error_printf_mon(cur, "%s:", (const char *)cur_loc->ptr); if (cur_loc->num) { - error_printf("%d:", cur_loc->num); + error_printf_mon(cur, "%d:", cur_loc->num); } - error_printf(" "); + error_printf_mon(cur, " "); break; default: - error_printf("%s", sep); + error_printf_mon(cur, "%s", sep); } } =20 @@ -201,34 +221,39 @@ real_time_iso8601(void) G_GNUC_PRINTF(2, 0) static void vreport(report_type type, const char *fmt, va_list ap) { + Monitor *cur =3D NULL; gchar *timestr; =20 - if (message_with_timestamp && !monitor_cur_is_hmp()) { + if (monitor_cur_is_hmp()) { + cur =3D monitor_cur(); + } + + if (message_with_timestamp && !cur) { timestr =3D real_time_iso8601(); - error_printf("%s ", timestr); + fprintf(stderr, "%s ", timestr); g_free(timestr); } =20 /* Only prepend guest name if -msg guest-name and -name guest=3D... ar= e set */ - if (error_with_guestname && error_guest_name && !monitor_cur_is_hmp())= { - error_printf("%s ", error_guest_name); + if (error_with_guestname && error_guest_name && !cur) { + fprintf(stderr, "%s ", error_guest_name); } =20 - print_loc(); + print_loc(cur); =20 switch (type) { case REPORT_TYPE_ERROR: break; case REPORT_TYPE_WARNING: - error_printf("warning: "); + error_printf_mon(cur, "warning: "); break; case REPORT_TYPE_INFO: - error_printf("info: "); + error_printf_mon(cur, "info: "); break; } =20 - error_vprintf(fmt, ap); - error_printf("\n"); + error_vprintf_mon(cur, fmt, ap); + error_printf_mon(cur, "\n"); } =20 /* --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892126; cv=none; d=zohomail.com; s=zohoarc; b=ZTDxYOdygT5+YoRGDbBb7Q0Mf5+gFsXL/8y6gbybqvEliVKMiZiyzNzTbEeHqsK3xEzmtT65yGyoui4Hb5sOBY7tIfWQRPkUk3EMsXzboU1QkS+U92ftmFE07l88BByMVYrfKMhgUT9ECFZsb0djswxsb8LFKW2oXfK9fUIGIgg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892126; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YUNxW4PcR6hawl1xpe2B+vmbdO3+qUfJD+dE7lqYFtM=; b=Mp0VuvvOyrl3jfX4aSTjfxhNaTz2jycp9YDrd0+GGixexZKze/yAqbflOVLYN6TvL5DZVg/YdJ4SoP3/GQli9+sYWKeVW9+HZvRvJ5C6vUp0rVM2D0caTGq6GlGXlroxd6GUqr1OQawKctconZ+egEMMl3GSGosh2DTUtNdxl7Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892126244607.3911825214393; Thu, 8 Jan 2026 09:08:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtRn-0006c4-0p; Thu, 08 Jan 2026 12:05:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRf-0006LN-Pi for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRd-0007Da-MB for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:11 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-411-VYdDTknFPbqwgzi_l2-peA-1; Thu, 08 Jan 2026 12:05:07 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id AB5B019560AA; Thu, 8 Jan 2026 17:05:05 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8CDC419560BA; Thu, 8 Jan 2026 17:05:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891908; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YUNxW4PcR6hawl1xpe2B+vmbdO3+qUfJD+dE7lqYFtM=; b=WP1aYrFwqcpcMY40FNqUYJvmcyUnAT4YVGvLtCOfe4MQBvHieJ/qBgUkPQX0O6qs9iu9X6 7iWU32jQh87PfGPfGwZuWOiAspTeXeqfADse4Dc45hCoB3/e7j5NBN+lO0VQ3yjTlxw4Qv tZu5aSSLxoK0rCC93Tv1BbaUTXrMUBQ= X-MC-Unique: VYdDTknFPbqwgzi_l2-peA-1 X-Mimecast-MFC-AGG-ID: VYdDTknFPbqwgzi_l2-peA_1767891905 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 18/24] util: fix interleaving of error prefixes Date: Thu, 8 Jan 2026 17:03:32 +0000 Message-ID: <20260108170338.2693853-19-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892127203158500 The vreport() function will optionally emit an prefix for error messages which is output to stderr incrementally. In the event that two vreport() calls execute concurrently, there is a risk that the prefix output will interleave. To address this it is required to take a lock on 'stderr' when outputting errors. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 Reported-by: Markus Armbruster Reviewed-by: Markus Armbruster --- util/error-report.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/util/error-report.c b/util/error-report.c index 14b170ca4c..46ea9ededa 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -226,6 +226,8 @@ static void vreport(report_type type, const char *fmt, = va_list ap) =20 if (monitor_cur_is_hmp()) { cur =3D monitor_cur(); + } else { + qemu_flockfile(stderr); } =20 if (message_with_timestamp && !cur) { @@ -254,6 +256,10 @@ static void vreport(report_type type, const char *fmt,= va_list ap) =20 error_vprintf_mon(cur, fmt, ap); error_printf_mon(cur, "\n"); + + if (!cur) { + qemu_funlockfile(stderr); + } } =20 /* --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892200; cv=none; d=zohomail.com; s=zohoarc; b=SShP2b3LlEfGH8leadd/+JONwz0yIR1k1gBrLgecTKEsb/BG9v6elI06TxrptrR0mhLzR4bOuMSAgBvyfkux+Y+LqzmUpBL1fpFGz8PKpAG+SSJvNYTLGk6+Ek0d5dL/x3Lb7Mj7rb5kXD81X8lmzyAT7O1U7WcsoaYDIeAWLog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892200; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Y2NaaB/fatahggjusILtNp/PzCGytaPur0JYgjgsj9w=; b=CfwdAbU6WdgUBECbm0lHHY1xewvTYuhhKpfRts1b2Y0oDWcCnZc18pNdgbhazlXK6LQhtXuJWIovPaiBjbTIkeW8B21pjO/KlIrIt5xwNnIIMYObVsKi4DtljVDrkm96+RgTKA32Al9CB1+lR+uAJn6K1csT3hLXm1p1TqLFPyU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892200859936.0745015219879; Thu, 8 Jan 2026 09:10:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtSA-0007ea-CN; Thu, 08 Jan 2026 12:05:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRn-0006iT-69 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:19 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRl-0007Ik-5S for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:18 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-383-aWifNremNumS9q8G7Y7opw-1; Thu, 08 Jan 2026 12:05:11 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B1DF31956063; Thu, 8 Jan 2026 17:05:09 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1530319560A2; Thu, 8 Jan 2026 17:05:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891916; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Y2NaaB/fatahggjusILtNp/PzCGytaPur0JYgjgsj9w=; b=LBBcmkADCbgn+zlZdr3SwWG7cArsiI5D3O587KNcqIBjH9fOICo/mOA+pfkzTjVcsgyN6C w9WoOHTbmxtPX3hc77Fcla/srCXTQXeimNKS8TmrI4+g9igLBnqJK7EdZ56uK+/+iM6gRW j5XEb/Zb2I3x71l5Yaa3BXjlB4bGo9E= X-MC-Unique: aWifNremNumS9q8G7Y7opw-1 X-Mimecast-MFC-AGG-ID: aWifNremNumS9q8G7Y7opw_1767891909 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 19/24] util: introduce common helper for error-report & log code Date: Thu, 8 Jan 2026 17:03:33 +0000 Message-ID: <20260108170338.2693853-20-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892201576158500 The error-report and log code both have a need to add prefixes to messages they are printing, with the current example being a timestamp. The format and configuration they use should be consistent, so providing a common helper will ensure this is always the case. Initially the helper only emits a timestamp, but future patches will expand this. This takes the liberty of assigning the new file to the same maintainer as the existing error-report.c file, given it will be extracting some functionality from the latter. While vreport() dynamically changes between reporting to the monitor vs stderr, depending on whether HMP is active or not, message prefixes are only ever used in the non-HMP case. Thus the helper API can take a FILE * object and not have to deal with the monitor at all. Reviewed-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 --- MAINTAINERS | 2 ++ include/qemu/message.h | 28 ++++++++++++++++++++++++++++ util/meson.build | 1 + util/message.c | 23 +++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 include/qemu/message.h create mode 100644 util/message.c diff --git a/MAINTAINERS b/MAINTAINERS index 9a55b649e8..4d43078fb3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3218,9 +3218,11 @@ M: Markus Armbruster S: Supported F: include/qapi/error.h F: include/qemu/error-report.h +F: include/qemu/message.h F: qapi/error.json F: util/error.c F: util/error-report.c +F: util/message.c F: scripts/coccinelle/err-bad-newline.cocci F: scripts/coccinelle/error-use-after-free.cocci F: scripts/coccinelle/error_propagate_null.cocci diff --git a/include/qemu/message.h b/include/qemu/message.h new file mode 100644 index 0000000000..0a06421f77 --- /dev/null +++ b/include/qemu/message.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef QEMU_MESSAGE_H +#define QEMU_MESSAGE_H + +enum QMessageFormatFlags { + QMESSAGE_FORMAT_TIMESTAMP =3D (1 << 0), +}; + +/** + * qmessage_set_format: + * @flags: the message information to emit + * + * Select which pieces of information to + * emit for messages + */ +void qmessage_set_format(int flags); + +/** + * qmessage_context_print: + * @fp: file to emit the prefix on + * + * Emit a message prefix with the information selected by + * an earlier call to qmessage_set_format. + */ +void qmessage_context_print(FILE *fp); + +#endif /* QEMU_MESSAGE_H */ diff --git a/util/meson.build b/util/meson.build index 35029380a3..f5365e3b4f 100644 --- a/util/meson.build +++ b/util/meson.build @@ -40,6 +40,7 @@ util_ss.add(files('host-utils.c')) util_ss.add(files('bitmap.c', 'bitops.c')) util_ss.add(files('fifo8.c')) util_ss.add(files('cacheflush.c')) +util_ss.add(files('message.c')) util_ss.add(files('error.c', 'error-report.c')) util_ss.add(files('qemu-print.c')) util_ss.add(files('id.c')) diff --git a/util/message.c b/util/message.c new file mode 100644 index 0000000000..99a403f9d0 --- /dev/null +++ b/util/message.c @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "qemu/osdep.h" + +#include "qemu/message.h" +#include "monitor/monitor.h" + +static int message_format; + +void qmessage_set_format(int flags) +{ + message_format =3D flags; +} + +void qmessage_context_print(FILE *fp) +{ + if (message_format & QMESSAGE_FORMAT_TIMESTAMP) { + g_autoptr(GDateTime) dt =3D g_date_time_new_now_utc(); + g_autofree char *timestr =3D g_date_time_format_iso8601(dt); + fputs(timestr, fp); + fputc(' ', fp); + } +} --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892192; cv=none; d=zohomail.com; s=zohoarc; b=VeA/+HiW83i09Ql8QWk1zzSrwbWp+mPxgfoGgiMUL0IsDo0zqKS4mhuN/ah59Ek6LOJBfr0610hx8eCdX4T/XPERPRoKnoPKj+B/WZGf6DRm591pN3UVcd/uTW1TOH4hRXG5DfIpTAtUbzTjhlq4z2h15hn9qDBQWriJedfI/lI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892192; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ElITesBvHnG91wf0vvcybRYKpDNgQUJ4lsL5N7CJHH0=; b=PpoBnP3LaDTwpT7Gv4gcc1eHlKm+pTzl3ut3qIdFhlsTyXwPRugoYt2PRRZDS0HljCGQXSJJ7GP78TsGGCmn8Eu3WvBQ9JLLMUSzBasYXTrJs95JkhrqsFY0iQfBTFYGB+TzwwiYPx3tHTgffw4XHfJtRHMh7nRhBVczqPv/aYA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892192085383.6240556467642; Thu, 8 Jan 2026 09:09:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtSA-0007eU-D1; Thu, 08 Jan 2026 12:05:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRp-000744-U1 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:21 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRn-0007Jk-WD for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:21 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-83-LLlUw6JCMDyPq9HoMtxQAQ-1; Thu, 08 Jan 2026 12:05:15 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 21CF71954B21; Thu, 8 Jan 2026 17:05:14 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2B08D19560A2; Thu, 8 Jan 2026 17:05:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891919; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ElITesBvHnG91wf0vvcybRYKpDNgQUJ4lsL5N7CJHH0=; b=GACrKmPCvz8N44b0xUX2L/b0TVoREk1OUKogBuFak2mOtd/f+Z1j9s3QY/Q/0cwvg1fp0x AZW86nGKds6hoyTra4nQ+OS2xmfHvcHy1W1QGCQRu9Mv7D4BSdOq6b48H1Jqe/jWwU7G0c BTESy9w5C7nE5c1Obq7ToJ/U8e8ZB74= X-MC-Unique: LLlUw6JCMDyPq9HoMtxQAQ-1 X-Mimecast-MFC-AGG-ID: LLlUw6JCMDyPq9HoMtxQAQ_1767891914 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 20/24] util: convert error-report & log to message API for timestamp Date: Thu, 8 Jan 2026 17:03:34 +0000 Message-ID: <20260108170338.2693853-21-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892193498158500 Both the error-report and log APIs can optional emit a timestamp as a prefix on messages, with the '-msg timestamp=3Don' command line flag is set. Convert them to the new message API for formatting the context prefix, guaranteeing they will have matching behaviour going forward. There is no change in output format for either logs or errors with this conversion. There is a slight impact on logging code in that recording the timestamp is now potentially delayed by the need to acquire the logging mutex. Reviewed-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qemu/error-report.h | 1 - system/vl.c | 7 ++++++- tests/unit/test-error-report.c | 3 ++- util/error-report.c | 18 ++---------------- util/log.c | 8 +++----- 5 files changed, 13 insertions(+), 24 deletions(-) diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h index 3ae2357fda..c8000778ec 100644 --- a/include/qemu/error-report.h +++ b/include/qemu/error-report.h @@ -70,7 +70,6 @@ void error_init(const char *argv0); fmt, ##__VA_ARGS__); \ }) =20 -extern bool message_with_timestamp; extern bool error_with_guestname; extern const char *error_guest_name; =20 diff --git a/system/vl.c b/system/vl.c index 60bdd58548..75e2fd310d 100644 --- a/system/vl.c +++ b/system/vl.c @@ -26,6 +26,7 @@ #include "qemu/help-texts.h" #include "qemu/datadir.h" #include "qemu/units.h" +#include "qemu/message.h" #include "qemu/module.h" #include "qemu/target-info.h" #include "exec/cpu-common.h" @@ -818,8 +819,12 @@ static void realtime_init(void) =20 static void configure_msg(QemuOpts *opts) { - message_with_timestamp =3D qemu_opt_get_bool(opts, "timestamp", false); + int flags =3D 0; + if (qemu_opt_get_bool(opts, "timestamp", false)) { + flags |=3D QMESSAGE_FORMAT_TIMESTAMP; + } error_with_guestname =3D qemu_opt_get_bool(opts, "guest-name", false); + qmessage_set_format(flags); } =20 =20 diff --git a/tests/unit/test-error-report.c b/tests/unit/test-error-report.c index a8532fc58f..9c63019694 100644 --- a/tests/unit/test-error-report.c +++ b/tests/unit/test-error-report.c @@ -12,6 +12,7 @@ =20 #include "qemu/error-report.h" #include "qapi/error.h" +#include "qemu/message.h" =20 static void test_error_report_simple(void) @@ -89,7 +90,7 @@ static void test_error_report_timestamp(void) { if (g_test_subprocess()) { - message_with_timestamp =3D true; + qmessage_set_format(QMESSAGE_FORMAT_TIMESTAMP); warn_report("warn"); error_report("err"); return; diff --git a/util/error-report.c b/util/error-report.c index 46ea9ededa..0c39857fc5 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -13,6 +13,7 @@ #include "qemu/osdep.h" #include "monitor/monitor.h" #include "qemu/error-report.h" +#include "qemu/message.h" =20 /* * @report_type is the type of message: error, warning or @@ -24,8 +25,6 @@ typedef enum { REPORT_TYPE_INFO, } report_type; =20 -/* Prepend timestamp to messages */ -bool message_with_timestamp; bool error_with_guestname; const char *error_guest_name; =20 @@ -204,13 +203,6 @@ static void print_loc(Monitor *cur) } } =20 -static char * -real_time_iso8601(void) -{ - g_autoptr(GDateTime) dt =3D g_date_time_new_now_utc(); - return g_date_time_format_iso8601(dt); -} - /* * Print a message to current monitor if we have one, else to stderr. * @report_type is the type of message: error, warning or informational. @@ -222,18 +214,12 @@ G_GNUC_PRINTF(2, 0) static void vreport(report_type type, const char *fmt, va_list ap) { Monitor *cur =3D NULL; - gchar *timestr; =20 if (monitor_cur_is_hmp()) { cur =3D monitor_cur(); } else { qemu_flockfile(stderr); - } - - if (message_with_timestamp && !cur) { - timestr =3D real_time_iso8601(); - fprintf(stderr, "%s ", timestr); - g_free(timestr); + qmessage_context_print(stderr); } =20 /* Only prepend guest name if -msg guest-name and -name guest=3D... ar= e set */ diff --git a/util/log.c b/util/log.c index 2ce7286f31..3b94c6541b 100644 --- a/util/log.c +++ b/util/log.c @@ -22,6 +22,7 @@ #include "qemu/range.h" #include "qemu/error-report.h" #include "qapi/error.h" +#include "qemu/message.h" #include "qemu/cutils.h" #include "trace/control.h" #include "qemu/thread.h" @@ -147,11 +148,8 @@ FILE *qemu_log_trylock(void) FILE *qemu_log_trylock_context(void) { FILE *f =3D qemu_log_trylock(); - if (log_depth =3D=3D 1 && message_with_timestamp) { - g_autofree const char *timestr =3D NULL; - g_autoptr(GDateTime) dt =3D g_date_time_new_now_utc(); - timestr =3D g_date_time_format_iso8601(dt); - fprintf(f, "%s ", timestr); + if (log_depth =3D=3D 1) { + qmessage_context_print(f); } return f; } --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767891991; cv=none; d=zohomail.com; s=zohoarc; b=f7RDdJQr+75KvyWZmjHfRRU9AK3gPj/0pqsaKHssgDeDB7N3gpQi4ZK4cfxC4YZR5FAen2wtQjdSYqz+Ij2HyEAYdcYCfjXOjAjUjWc7Nov1Dm2TxQvSe5baq0lpumSQHsb8S1ttoylx8si58DX3khwoZgwO7xcvsy+9AHpdHSc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767891991; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hxpePEWBvXPkX77Bstam66E8lwSkyfI4Rjt1/RzQqkk=; b=MmuU+w49v2G8psjG/mYNDTrh/UVWk/w9NrAy/yfzPzKLQorea+5L64e7Ra//eUhq1au3K6VX6q270VvMEJzHLEZXS53tO37LheQxUVANvm08Bky63VzKqzFnitbAWbnUopUldU/mUsg3hm3ZSiXiOMSeA0ns3RL7btLddJnlg/Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767891991399198.69616182710308; Thu, 8 Jan 2026 09:06:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtSB-0007lY-LM; Thu, 08 Jan 2026 12:05:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRu-0007QW-Q6 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:29 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtRs-0007L8-NS for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:26 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-513-D9h-JefPNdSU-3rALDKXIg-1; Thu, 08 Jan 2026 12:05:20 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 720DB1956059; Thu, 8 Jan 2026 17:05:18 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8B13619560B4; Thu, 8 Jan 2026 17:05:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hxpePEWBvXPkX77Bstam66E8lwSkyfI4Rjt1/RzQqkk=; b=TdFc5UpOH5kxoKTdR1lQ+xN8CSiVRwZ1kWKQWMZySIOawAegiVeDGJXYUTh4hJoa5jeE5D Oq2dHuwl/NZj2FkZccWzVORAByadV2NGL3SmO/mkbmIj/Sbvv2Hq3iCuSVnAWQ4HKGFLjR W3Grs/cIsoqhb7gc4o583N+s76PStgU= X-MC-Unique: D9h-JefPNdSU-3rALDKXIg-1 X-Mimecast-MFC-AGG-ID: D9h-JefPNdSU-3rALDKXIg_1767891918 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 21/24] util: add support for formatting a workload name in messages Date: Thu, 8 Jan 2026 17:03:35 +0000 Message-ID: <20260108170338.2693853-22-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767891992666158500 The error_report function can include the guest name in any messages it prints. The qemu_log function has no equivalent behaviour. This introduces support for a "workload name" in the new messages API, which in the case of system emulators will be the guest name. The possibility of defining a workload name for other binaries is left as an exercise for the future. This change has no impact on the output of the error_report function, but will change the qemu_log function. This can be easily seen with the 'log' trace backend, and how it is now more closely matching error_report output. Before: # qemu-system-x86_64 -msg guest-name=3Don -name blah -object tls-creds-x5= 09,id=3Dt0,dir=3Dfish -d 'trace:qcrypto*' qcrypto_tls_creds_x509_load TLS creds x509 load creds=3D0x55b3af3fd870 di= r=3Dfish qcrypto_tls_creds_get_path TLS creds path creds=3D0x55b3af3fd870 filename= =3Dca-cert.pem path=3D blah qemu-system-x86_64: Unable to access credentials fish/ca-cert.pem: N= o such file or directory After: # qemu-system-x86_64 -msg guest-name=3Don -name blah -object tls-creds-x5= 09,id=3Dt0,dir=3Dfish -d 'trace:qcrypto*' blah qcrypto_tls_creds_x509_load TLS creds x509 load creds=3D0x55b3af3fd8= 70 dir=3Dfish blah qcrypto_tls_creds_get_path TLS creds path creds=3D0x55b3af3fd870 fil= ename=3Dca-cert.pem path=3D blah qemu-system-x86_64: Unable to access credentials fish/ca-cert.pem: N= o such file or directory Reviewed-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qemu/error-report.h | 3 --- include/qemu/message.h | 10 ++++++++++ system/vl.c | 6 ++++-- util/error-report.c | 7 ------- util/message.c | 12 ++++++++++++ 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h index c8000778ec..ffc305f828 100644 --- a/include/qemu/error-report.h +++ b/include/qemu/error-report.h @@ -70,7 +70,4 @@ void error_init(const char *argv0); fmt, ##__VA_ARGS__); \ }) =20 -extern bool error_with_guestname; -extern const char *error_guest_name; - #endif diff --git a/include/qemu/message.h b/include/qemu/message.h index 0a06421f77..cfc3c92648 100644 --- a/include/qemu/message.h +++ b/include/qemu/message.h @@ -5,6 +5,7 @@ =20 enum QMessageFormatFlags { QMESSAGE_FORMAT_TIMESTAMP =3D (1 << 0), + QMESSAGE_FORMAT_WORKLOAD_NAME =3D (1 << 1), }; =20 /** @@ -16,6 +17,15 @@ enum QMessageFormatFlags { */ void qmessage_set_format(int flags); =20 +/** + * qmessage_set_workload_name: + * @name: the name of the workload + * + * Set the workload name, which for a system emulator + * will be the guest VM name. + */ +void qmessage_set_workload_name(const char *name); + /** * qmessage_context_print: * @fp: file to emit the prefix on diff --git a/system/vl.c b/system/vl.c index 75e2fd310d..5f3b5436a6 100644 --- a/system/vl.c +++ b/system/vl.c @@ -823,7 +823,9 @@ static void configure_msg(QemuOpts *opts) if (qemu_opt_get_bool(opts, "timestamp", false)) { flags |=3D QMESSAGE_FORMAT_TIMESTAMP; } - error_with_guestname =3D qemu_opt_get_bool(opts, "guest-name", false); + if (qemu_opt_get_bool(opts, "guest-name", false)) { + flags |=3D QMESSAGE_FORMAT_WORKLOAD_NAME; + } qmessage_set_format(flags); } =20 @@ -3526,7 +3528,7 @@ void qemu_init(int argc, char **argv) exit(1); } /* Capture guest name if -msg guest-name is used later */ - error_guest_name =3D qemu_opt_get(opts, "guest"); + qmessage_set_workload_name(qemu_opt_get(opts, "guest")); break; case QEMU_OPTION_prom_env: if (nb_prom_envs >=3D MAX_PROM_ENVS) { diff --git a/util/error-report.c b/util/error-report.c index 0c39857fc5..313c2d6055 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -25,8 +25,6 @@ typedef enum { REPORT_TYPE_INFO, } report_type; =20 -bool error_with_guestname; -const char *error_guest_name; =20 /* * Print to current monitor if we have one, else to stderr. @@ -222,11 +220,6 @@ static void vreport(report_type type, const char *fmt,= va_list ap) qmessage_context_print(stderr); } =20 - /* Only prepend guest name if -msg guest-name and -name guest=3D... ar= e set */ - if (error_with_guestname && error_guest_name && !cur) { - fprintf(stderr, "%s ", error_guest_name); - } - print_loc(cur); =20 switch (type) { diff --git a/util/message.c b/util/message.c index 99a403f9d0..fb2c947153 100644 --- a/util/message.c +++ b/util/message.c @@ -6,12 +6,18 @@ #include "monitor/monitor.h" =20 static int message_format; +static char *message_workloadname; =20 void qmessage_set_format(int flags) { message_format =3D flags; } =20 +void qmessage_set_workload_name(const char *name) +{ + message_workloadname =3D g_strdup(name); +} + void qmessage_context_print(FILE *fp) { if (message_format & QMESSAGE_FORMAT_TIMESTAMP) { @@ -20,4 +26,10 @@ void qmessage_context_print(FILE *fp) fputs(timestr, fp); fputc(' ', fp); } + + if ((message_format & QMESSAGE_FORMAT_WORKLOAD_NAME) && + message_workloadname) { + fputs(message_workloadname, fp); + fputc(' ', fp); + } } --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892205; cv=none; d=zohomail.com; s=zohoarc; b=afoOTGenFnE5UKoJoGMAHPbloHznU3IJHptjAOthaw3VC63sW+0XCB3OB1OYwBB9onHTatdwovWp2vF0fXwMx3GRjy8YmrZ1t6Bmuku4owsRWY01tWiJNOm9owAceORfOlTsnnb9k+S0XcQR6SlbI1+uvEIbVBQcvnTsMBXsTYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892205; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hs7w5e8PYkWEToas8zAGloctBGVW9BJyZ/k9qigqvuY=; b=VEMOCoTUmqqdCbvfpnfc8tz5PRqcXFojQUv31q9En6P5cz5NMlb2UBnSnN0Y6JYSoJoGQryAVVLNUP+/49OSh/LGmIbY3EcAZmyMKexMjoMgYMVf4JYznOcy5vaGR+RjcLE1DXh7VWCgMPsO7T1FIqC5DJ+OqnzGtHF8L2+TswE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892205050549.6916056887486; Thu, 8 Jan 2026 09:10:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtSE-000811-7I; Thu, 08 Jan 2026 12:05:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtS2-0007ZP-Ho for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtS0-0007MX-K9 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:34 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-677-XMtLEhKDOjOfc2P8lVtwiw-1; Thu, 08 Jan 2026 12:05:25 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id AB6C21956050; Thu, 8 Jan 2026 17:05:22 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id CB24E19560A2; Thu, 8 Jan 2026 17:05:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hs7w5e8PYkWEToas8zAGloctBGVW9BJyZ/k9qigqvuY=; b=jKa8ppb4HNK4t2pNpM19uFFyxSHcEsebgwRB/CJMA7nuxci07zJXR1ljkuSezjAV6eTYxn XxifYrxMj/rdZXXyYNOQJpsQB4jJVyyy4eVlf8zKDhqac0VILBiw25XAncMqjFwZ5qq+YJ 6/zVW86zJRz6biwTeOxbMlVkJBHbh7o= X-MC-Unique: XMtLEhKDOjOfc2P8lVtwiw-1 X-Mimecast-MFC-AGG-ID: XMtLEhKDOjOfc2P8lVtwiw_1767891922 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 22/24] util: add support for formatting a program name in messages Date: Thu, 8 Jan 2026 17:03:36 +0000 Message-ID: <20260108170338.2693853-23-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892230349158500 The error_report function can include the program name in any messages it prints. The qemu_log function has no equivalent behaviour. This introduces support for a "program name" in the new messages API, which will be included by default for all binaries. This change tweaks the output of the error_report function, adding a space between the program name and the location info. The qemu_log function will gain the program name. This can be easily seen with the 'log' trace backend, and how it is now more closely matching error_report output. Before: # qemu-system-x86_64 -object tls-creds-x509,id=3Dt0,dir=3Dfish -d 'trace:= qcrypto*' qcrypto_tls_creds_x509_load TLS creds x509 load creds=3D0x5584e13937f0 di= r=3Dfish qcrypto_tls_creds_get_path TLS creds path creds=3D0x5584e13937f0 filename= =3Dca-cert.pem path=3D qemu-system-x86_64: Unable to access credentials fish/ca-cert.pem: No suc= h file or directory After: # qemu-system-x86_64 -object tls-creds-x509,id=3Dt0,dir=3Dfish -d 'trace:= qcrypto*' qemu-system-x86_64: qcrypto_tls_creds_x509_load TLS creds x509 load creds= =3D0x5584e13937f0 dir=3Dfish qemu-system-x86_64: qcrypto_tls_creds_get_path TLS creds path creds=3D0x5= 584e13937f0 filename=3Dca-cert.pem path=3D qemu-system-x86_64: Unable to access credentials fish/ca-cert.pem: No suc= h file or directory When adding this the '-msg program-name=3Don|off' option is introduced, so that the program name (which is enabled by default) can be supressed if desired. This could be useful if '-msg guest-name=3Don' is being used as a more informative identifier. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Richard Henderson --- include/qemu/message.h | 1 + qemu-options.hx | 9 +++++++-- system/vl.c | 11 ++++++++++- tests/unit/test-error-report.c | 5 +++-- util/error-report.c | 4 ---- util/message.c | 10 +++++++++- 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/include/qemu/message.h b/include/qemu/message.h index cfc3c92648..b8518d06be 100644 --- a/include/qemu/message.h +++ b/include/qemu/message.h @@ -6,6 +6,7 @@ enum QMessageFormatFlags { QMESSAGE_FORMAT_TIMESTAMP =3D (1 << 0), QMESSAGE_FORMAT_WORKLOAD_NAME =3D (1 << 1), + QMESSAGE_FORMAT_PROGRAM_NAME =3D (1 << 2), }; =20 /** diff --git a/qemu-options.hx b/qemu-options.hx index e8057fdcc9..e58b55d1f7 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -5515,13 +5515,15 @@ ERST =20 DEF("msg", HAS_ARG, QEMU_OPTION_msg, "-msg [timestamp=3Don|off][,guest-name=3Don|off]\n" + " [,program-name=3Don|off]\n" " control error message format\n" " timestamp=3Don enables timestamps (default: off)\n" " guest-name=3Don enables guest name prefix but only if= \n" - " -name guest option is set (default: off= )\n", + " -name guest option is set (default: off= )\n" + " program-name=3Doff disables program name prefix (defa= ult: on)\n", QEMU_ARCH_ALL) SRST -``-msg [timestamp=3Don|off][,guest-name=3Don|off]`` +``-msg [timestamp=3Don|off][,guest-name=3Don|off][,program-name=3Don|off]`` Control error message format. =20 ``timestamp=3Don|off`` @@ -5530,6 +5532,9 @@ SRST ``guest-name=3Don|off`` Prefix messages with guest name but only if -name guest option is = set otherwise the option is ignored. Default is off. + + ``program-name=3Don|off`` + Prefix messages with the program name. Default is on. ERST =20 DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate, diff --git a/system/vl.c b/system/vl.c index 5f3b5436a6..503b0dcc24 100644 --- a/system/vl.c +++ b/system/vl.c @@ -381,6 +381,12 @@ static QemuOptsList qemu_msg_opts =3D { .help =3D "Prepends guest name for error messages but only if " "-name guest is set otherwise option is ignored\n", }, + { + .name =3D "program-name", + .type =3D QEMU_OPT_BOOL, + .help =3D "Prepends program name for error messages (enabled " + "by default)\n", + }, { /* end of list */ } }, }; @@ -819,13 +825,16 @@ static void realtime_init(void) =20 static void configure_msg(QemuOpts *opts) { - int flags =3D 0; + int flags =3D QMESSAGE_FORMAT_PROGRAM_NAME; if (qemu_opt_get_bool(opts, "timestamp", false)) { flags |=3D QMESSAGE_FORMAT_TIMESTAMP; } if (qemu_opt_get_bool(opts, "guest-name", false)) { flags |=3D QMESSAGE_FORMAT_WORKLOAD_NAME; } + if (!qemu_opt_get_bool(opts, "program-name", true)) { + flags &=3D ~QMESSAGE_FORMAT_PROGRAM_NAME; + } qmessage_set_format(flags); } =20 diff --git a/tests/unit/test-error-report.c b/tests/unit/test-error-report.c index 9c63019694..714eafc51e 100644 --- a/tests/unit/test-error-report.c +++ b/tests/unit/test-error-report.c @@ -47,7 +47,7 @@ test_error_report_loc(void) g_test_trap_subprocess(NULL, 0, 0); g_test_trap_assert_passed(); g_test_trap_assert_stderr("\ -test-error-report:some-file.c:7717: test error1*\ +test-error-report: some-file.c:7717: test error1*\ test-error-report: test error2*\ "); } @@ -90,7 +90,8 @@ static void test_error_report_timestamp(void) { if (g_test_subprocess()) { - qmessage_set_format(QMESSAGE_FORMAT_TIMESTAMP); + qmessage_set_format(QMESSAGE_FORMAT_TIMESTAMP | + QMESSAGE_FORMAT_PROGRAM_NAME); warn_report("warn"); error_report("err"); return; diff --git a/util/error-report.c b/util/error-report.c index 313c2d6055..4c82d10a36 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -176,10 +176,6 @@ static void print_loc(Monitor *cur) int i; const char *const *argp; =20 - if (!cur && g_get_prgname()) { - fprintf(stderr, "%s:", g_get_prgname()); - sep =3D " "; - } switch (cur_loc->kind) { case LOC_CMDLINE: argp =3D cur_loc->ptr; diff --git a/util/message.c b/util/message.c index fb2c947153..dd01bf7462 100644 --- a/util/message.c +++ b/util/message.c @@ -5,7 +5,7 @@ #include "qemu/message.h" #include "monitor/monitor.h" =20 -static int message_format; +static int message_format =3D QMESSAGE_FORMAT_PROGRAM_NAME; static char *message_workloadname; =20 void qmessage_set_format(int flags) @@ -32,4 +32,12 @@ void qmessage_context_print(FILE *fp) fputs(message_workloadname, fp); fputc(' ', fp); } + + if (message_format & QMESSAGE_FORMAT_PROGRAM_NAME) { + const char *pgnamestr =3D g_get_prgname(); + if (pgnamestr) { + fputs(pgnamestr, fp); + fputs(": ", fp); + } + } } --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892008; cv=none; d=zohomail.com; s=zohoarc; b=EQMR8KVBcBpQrfaE/+uamJEzUxhkdZ0vot7gfvl1TjTkOg/t+krPgp2qb6FQRnAdGsFQNHdiro/H7sTwzCpWkrPWMFHVe4JQP0faYiSYTNjTJJNn+KayZa9NoZItmFD1fL+Qy4pqb7D3MnaVN2Cu0Qi1nYJ2ZOv08wRWX7Eqrdo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892008; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sMu62/xjp+e0O9ygWO14PiJ61f02blU4geUHOBlKI7Q=; b=k7jNXeimiUVqQnFaiLAz2PYlYU0uyT212b9jLDMZc0pIKi9aRc72Ow/tolhq5wn9AQadRchW5AtrgN3mZy4rh6P6GhtM00tg60WYDH8tirxGLg1BBYP0JSRHyqWxXNU5dVQnlM11rOiLWCTcIsLkljVTbayOgbCqAHDK/XIa5y0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892008312409.52283046983166; Thu, 8 Jan 2026 09:06:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtSB-0007mP-QR; Thu, 08 Jan 2026 12:05:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtS2-0007Zd-QC for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtS1-0007Mh-0m for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:34 -0500 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-331-d-dGYWb8PZiIXLyfhS6Xgg-1; Thu, 08 Jan 2026 12:05:28 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F0D88180044D; Thu, 8 Jan 2026 17:05:26 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 143AE19560BA; Thu, 8 Jan 2026 17:05:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891932; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sMu62/xjp+e0O9ygWO14PiJ61f02blU4geUHOBlKI7Q=; b=OsoX+FnQ9kvpfPXwInYnfwi4UdpkILr7EwubxjuMa3nXjfoFToRUCxLSFmDkD+XsrSNvO+ yNftrV/YWre+m1D2orHdPs9gXZZ47oFbFR4yMKM5L6GLeN7F4jZbySsKT8hMeqQ7gsHSte 8zF0cjwuRkNAgYlWxNCF9gQ+Va9mCkI= X-MC-Unique: d-dGYWb8PZiIXLyfhS6Xgg-1 X-Mimecast-MFC-AGG-ID: d-dGYWb8PZiIXLyfhS6Xgg_1767891927 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 23/24] util: add support for formatting thread info in messages Date: Thu, 8 Jan 2026 17:03:37 +0000 Message-ID: <20260108170338.2693853-24-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892010834158500 The message context is now extended to be able to include the thread ID and thread name, after the program name. On Linux the thread ID will match the process TID visible in /proc, while on other platforms it will merely be an integer repr of the system thread object address/ID. This changes the output for both error_report and qemu_log, when running under the system emulators or the QEMU storage daemon. Other programs omit the thread information since they are largely single threaded, though potentially it would be useful to enable in all of them, given that the RCU thread will always get spawned by a constructor function. Before: # qemu-system-x86_64 -object tls-creds-x509,id=3Dt0,dir=3Dfish -d 'trace:= qcrypto*' qemu-system-x86_64: qcrypto_tls_creds_x509_load TLS creds x509 load creds= =3D0x560db818e080 dir=3Dfish qemu-system-x86_64: qcrypto_tls_creds_get_path TLS creds path creds=3D0x5= 60db818e080 filename=3Dca-cert.pem path=3D qemu-system-x86_64: Unable to access credentials fish/ca-cert.pem: No suc= h file or directory After: # qemu-system-x86_64 -object tls-creds-x509,id=3Dt0,dir=3Dfish -d 'trace:= qcrypto*' qemu-system-x86_64: (772366:main): qcrypto_tls_creds_x509_load TLS creds = x509 load creds=3D0x560db818e080 dir=3Dfish qemu-system-x86_64: (772366:main): qcrypto_tls_creds_get_path TLS creds p= ath creds=3D0x560db818e080 filename=3Dca-cert.pem path=3D qemu-system-x86_64: (772366:main): Unable to access credentials fish/ca-c= ert.pem: No such file or directory The '-msg thread-info=3Don|off' argument is introduced to allow this new default output to be supressed if desired. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Richard Henderson --- include/qemu/message.h | 1 + qemu-options.hx | 10 +++++++--- storage-daemon/qemu-storage-daemon.c | 6 ++++++ system/vl.c | 17 +++++++++++++++-- tests/qemu-iotests/041 | 2 +- tests/qemu-iotests/common.filter | 2 +- util/message.c | 7 +++++++ 7 files changed, 38 insertions(+), 7 deletions(-) diff --git a/include/qemu/message.h b/include/qemu/message.h index b8518d06be..2cc092c993 100644 --- a/include/qemu/message.h +++ b/include/qemu/message.h @@ -7,6 +7,7 @@ enum QMessageFormatFlags { QMESSAGE_FORMAT_TIMESTAMP =3D (1 << 0), QMESSAGE_FORMAT_WORKLOAD_NAME =3D (1 << 1), QMESSAGE_FORMAT_PROGRAM_NAME =3D (1 << 2), + QMESSAGE_FORMAT_THREAD_INFO =3D (1 << 3), }; =20 /** diff --git a/qemu-options.hx b/qemu-options.hx index e58b55d1f7..5c09fd8e36 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -5515,15 +5515,16 @@ ERST =20 DEF("msg", HAS_ARG, QEMU_OPTION_msg, "-msg [timestamp=3Don|off][,guest-name=3Don|off]\n" - " [,program-name=3Don|off]\n" + " [,program-name=3Don|off][,thread-info=3Don|off]\n" " control error message format\n" " timestamp=3Don enables timestamps (default: off)\n" " guest-name=3Don enables guest name prefix but only if= \n" " -name guest option is set (default: off= )\n" - " program-name=3Doff disables program name prefix (defa= ult: on)\n", + " program-name=3Doff disables program name prefix (defa= ult: on)\n" + " thread-info=3Doff disables thread ID and name prefix = (default: on)\n", QEMU_ARCH_ALL) SRST -``-msg [timestamp=3Don|off][,guest-name=3Don|off][,program-name=3Don|off]`` +``-msg [timestamp=3Don|off][,guest-name=3Don|off][,program-name=3Don|off][= ,thread-info=3Don|off]`` Control error message format. =20 ``timestamp=3Don|off`` @@ -5535,6 +5536,9 @@ SRST =20 ``program-name=3Don|off`` Prefix messages with the program name. Default is on. + + ``guest-info=3Don|off`` + Prefix messages with the thread ID and name. Default is on. ERST =20 DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate, diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-sto= rage-daemon.c index eb72561358..cc44ed7848 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -47,6 +47,7 @@ #include "qemu/cutils.h" #include "qemu/config-file.h" #include "qemu/error-report.h" +#include "qemu/message.h" #include "qemu/help_option.h" #include "qemu/job.h" #include "qemu/log.h" @@ -65,6 +66,10 @@ static const char *pid_file; static char *pid_file_realpath; static volatile bool exit_requested =3D false; =20 +#define QMESSAGE_FORMAT_DEFAULT \ + (QMESSAGE_FORMAT_PROGRAM_NAME | \ + QMESSAGE_FORMAT_THREAD_INFO) + void qemu_system_killed(int signal, pid_t pid) { exit_requested =3D true; @@ -399,6 +404,7 @@ int main(int argc, char *argv[]) #endif =20 error_init(argv[0]); + qmessage_set_format(QMESSAGE_FORMAT_DEFAULT); qemu_init_exec_dir(argv[0]); os_setup_signal_handling(); =20 diff --git a/system/vl.c b/system/vl.c index 503b0dcc24..50209e6f4e 100644 --- a/system/vl.c +++ b/system/vl.c @@ -145,6 +145,10 @@ =20 #define MAX_VIRTIO_CONSOLES 1 =20 +#define QMESSAGE_FORMAT_DEFAULT \ + (QMESSAGE_FORMAT_PROGRAM_NAME | \ + QMESSAGE_FORMAT_THREAD_INFO) + typedef struct BlockdevOptionsQueueEntry { BlockdevOptions *bdo; Location loc; @@ -387,6 +391,12 @@ static QemuOptsList qemu_msg_opts =3D { .help =3D "Prepends program name for error messages (enabled " "by default)\n", }, + { + .name =3D "program-name", + .type =3D QEMU_OPT_BOOL, + .help =3D "Prepends current thread ID and name for error messa= ges " + "(enabled by default)\n", + }, { /* end of list */ } }, }; @@ -822,10 +832,9 @@ static void realtime_init(void) } } =20 - static void configure_msg(QemuOpts *opts) { - int flags =3D QMESSAGE_FORMAT_PROGRAM_NAME; + int flags =3D QMESSAGE_FORMAT_DEFAULT; if (qemu_opt_get_bool(opts, "timestamp", false)) { flags |=3D QMESSAGE_FORMAT_TIMESTAMP; } @@ -835,6 +844,9 @@ static void configure_msg(QemuOpts *opts) if (!qemu_opt_get_bool(opts, "program-name", true)) { flags &=3D ~QMESSAGE_FORMAT_PROGRAM_NAME; } + if (!qemu_opt_get_bool(opts, "thread-info", true)) { + flags &=3D ~QMESSAGE_FORMAT_THREAD_INFO; + } qmessage_set_format(flags); } =20 @@ -2903,6 +2915,7 @@ void qemu_init(int argc, char **argv) module_call_init(MODULE_INIT_OPTS); =20 error_init(argv[0]); + qmessage_set_format(QMESSAGE_FORMAT_DEFAULT); qemu_init_exec_dir(argv[0]); =20 os_setup_limits(); diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041 index 8452845f44..dc2666afe7 100755 --- a/tests/qemu-iotests/041 +++ b/tests/qemu-iotests/041 @@ -1102,7 +1102,7 @@ class TestRepairQuorum(iotests.QMPTestCase): self.vm.shutdown() log =3D iotests.filter_qtest(self.vm.get_log()) log =3D re.sub(r'^Formatting.*\n', '', log) - log =3D re.sub(r'^%s: ' % os.path.basename(iotests.qemu_prog), '',= log) + log =3D re.sub(r'^%s: \(\d+:\w+\): ' % os.path.basename(iotests.qe= mu_prog), '', log) =20 self.assertEqual(log, "Can no longer replace 'img1' by 'repair0', becau= se " + diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.f= ilter index 26e6b45b04..c8cb2e860c 100644 --- a/tests/qemu-iotests/common.filter +++ b/tests/qemu-iotests/common.filter @@ -81,7 +81,7 @@ _filter_qemu_io() # replace occurrences of QEMU_PROG with "qemu" _filter_qemu() { - gsed -e "s#\\(^\\|(qemu) \\)$(basename $QEMU_PROG):#\1QEMU_PROG:#" \ + gsed -e "s#\\(^\\|(qemu) \\)$(basename $QEMU_PROG): ([0-9]\+:[-_a-zA-Z= ]\+):#\1QEMU_PROG:#" \ -e 's#^QEMU [0-9]\+\.[0-9]\+\.[0-9]\+ monitor#QEMU X.Y.Z monitor#'= \ -e $'s#\r##' # QEMU monitor uses \r\n line endings } diff --git a/util/message.c b/util/message.c index dd01bf7462..9bf640c8c4 100644 --- a/util/message.c +++ b/util/message.c @@ -40,4 +40,11 @@ void qmessage_context_print(FILE *fp) fputs(": ", fp); } } + + if (message_format & QMESSAGE_FORMAT_THREAD_INFO) { + int thid =3D qemu_get_thread_id(); + const char *thname =3D qemu_thread_get_name(); + + fprintf(fp, "(%d:%s): ", thid, thname); + } } --=20 2.52.0 From nobody Mon Feb 2 07:25:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767892210; cv=none; d=zohomail.com; s=zohoarc; b=QB858yb2xRH7gPohIoLuM/KJyn5QnzxXC1p3QeZTMIJO+INmLWaOu3ZyVTsMcepHINr7aXaBkqOiF2Ay2X1uqqvUtwEAjWyJzJLNNMpsyUd1knYHc8nFbKygKVY6jAXxMFNitoQs5zeW1XN/TAFBR2slqWvvpHiDud7yvkeaT0o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767892210; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=68Kp+6aWoHRH5lpTuDrXemE8tPoiTCechYjeJaXvG8k=; b=nBKdhJZqzHXjtGOaw46IaR0moRYYxXo3vPoo0JSoOecXYVcA8E625XIuM5ydhnf+ipRztQGLdiyMS4lOeA0w9XDJAvuYePynkwPSveEQKUS06uiOqMjqC+ir72tXfBQ8EkTBHmggXeHzyV55fkc05XzkbH0ZFAid42u+MAwjqGs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767892210960898.6169732662808; Thu, 8 Jan 2026 09:10:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdtSE-000897-Uv; Thu, 08 Jan 2026 12:05:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtS9-0007dm-PL for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:41 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdtS8-0007OG-99 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 12:05:41 -0500 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-252-E8iZWTFWPBOQdk7piui9rQ-1; Thu, 08 Jan 2026 12:05:35 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E26311800378; Thu, 8 Jan 2026 17:05:31 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.44]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5DCBB1955F1C; Thu, 8 Jan 2026 17:05:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767891939; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=68Kp+6aWoHRH5lpTuDrXemE8tPoiTCechYjeJaXvG8k=; b=RdXvCVjRtKRXlYhEOjocsp0coQRUE7ZuwFW+a9HLjKSHJ4mBzWuTKAlKn/lzGDGhyiOlCs 3h7ws9KqF8JCHdEOmRS6ffO/DhdptU2VoahTN7cLqchXlnHkOUGKNTRvzcGz0//W9z7ciN QnM+A6g1bFYejqey80rbPaB9VphFZP8= X-MC-Unique: E8iZWTFWPBOQdk7piui9rQ-1 X-Mimecast-MFC-AGG-ID: E8iZWTFWPBOQdk7piui9rQ_1767891932 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Manos Pitsidianakis , Hanna Reitz , Gerd Hoffmann , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Christian Schoenebeck , "Dr. David Alan Gilbert" , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , devel@lists.libvirt.org, qemu-block@nongnu.org, qemu-rust@nongnu.org, Markus Armbruster , Stefan Weil , Kevin Wolf , Richard Henderson Subject: [PATCH v5 24/24] util: add brackets around guest name in message context Date: Thu, 8 Jan 2026 17:03:38 +0000 Message-ID: <20260108170338.2693853-25-berrange@redhat.com> In-Reply-To: <20260108170338.2693853-1-berrange@redhat.com> References: <20260108170338.2693853-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767892211603158500 The message context can optionally include the guest name if the argument '-msg guest-name=3Don' is given. The formatting, however, does not look good if the guest name contains whitespace. Change the output to include square brackets to demarcate the name. Before: # qemu-system-x86_64 -object tls-creds-x509,id=3Dt0,dir=3Dfish -d 'trace:= qcrypto*' -msg guest-name=3Don -name "fish food" fish food qemu-system-x86_64: (1146846:main): qcrypto_tls_creds_x509_load= TLS creds x509 load creds=3D0x55657e94e690 dir=3Dfish fish food qemu-system-x86_64: (1146846:main): qcrypto_tls_creds_get_path = TLS creds path creds=3D0x55657e94e690 filename=3Dca-cert.pem path=3D fish food qemu-system-x86_64: (1146846:main): Unable to access credential= s fish/ca-cert.pem: No such file or directory After: # qemu-system-x86_64 -object tls-creds-x509,id=3Dt0,dir=3Dfish -d 'trace:= qcrypto*' -msg guest-name=3Don -name "fish food" [fish food] qemu-system-x86_64: (1144713:main): qcrypto_tls_creds_x509_lo= ad TLS creds x509 load creds=3D0x5604ada2c950 dir=3Dfish [fish food] qemu-system-x86_64: (1144713:main): qcrypto_tls_creds_get_pat= h TLS creds path creds=3D0x5604ada2c950 filename=3Dca-cert.pem path=3D [fish food] qemu-system-x86_64: (1144713:main): Unable to access credenti= als fish/ca-cert.pem: No such file or directory Reviewed-by: Richard Henderson Signed-off-by: Daniel P. Berrang=C3=A9 --- util/message.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/message.c b/util/message.c index 9bf640c8c4..73af8e8ca4 100644 --- a/util/message.c +++ b/util/message.c @@ -29,8 +29,9 @@ void qmessage_context_print(FILE *fp) =20 if ((message_format & QMESSAGE_FORMAT_WORKLOAD_NAME) && message_workloadname) { + fputc('[', fp); fputs(message_workloadname, fp); - fputc(' ', fp); + fputs("] ", fp); } =20 if (message_format & QMESSAGE_FORMAT_PROGRAM_NAME) { --=20 2.52.0