From nobody Mon Sep 28 01:15:13 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786376146; cv=none; d=zohomail.com; s=zohoarc; b=IK4jk/iJsaL42Xh1dO9yU8OMnxLXMQaeBwjc7bay1KORyI1qs3OychkT+V33vz225Ydf2TQ/Eqxhu0C4ignW3EUz6BqKXFkosC0FaVNfgiIe8Lz4T3T6rJONnlSarGYfdStHTQea2r26zUHo9PB71MC3f9lZ8LXohxuKbQqX0zU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786376146; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=evoH7tn9HwlReMqq40LV/1k6FhTDd6/nIyj6oxDghDo=; b=bn5+AHgoIyOiTKjC7JYNta5Juw6kX7ROXFE+nWcWyonShJsnuaWxJba02SpNQmbkSxx0+J5R06jHjzaO89j+wO6mVmQuDo5r6xKaCniuvkm1yQhLAePo58+zrtmWg//EoQfulsMRDC8KX0/0BWCSjZcFodJD3cz1kXlpVw2fDrk= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786376146544408.13760482187877; Mon, 10 Aug 2026 08:35:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtS27-0001I7-9k; Mon, 10 Aug 2026 11:35:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtS20-0001Gx-16 for qemu-devel@nongnu.org; Mon, 10 Aug 2026 11:35:16 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtS1y-0005BX-8J for qemu-devel@nongnu.org; Mon, 10 Aug 2026 11:35:15 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-495590dde14so25474215e9.0 for ; Mon, 10 Aug 2026 08:35:12 -0700 (PDT) Received: from draig.lan ([185.124.0.156]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48002150952sm31646699f8f.15.2026.08.10.08.35.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Aug 2026 08:35:10 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 5A0FE5F83B; Mon, 10 Aug 2026 16:35:09 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786376111; x=1786980911; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=evoH7tn9HwlReMqq40LV/1k6FhTDd6/nIyj6oxDghDo=; b=OyawgGg4YLBxK7TbR2a6sra1r/Mih502xxF1tCwNL6KRGDhTNM3CXHY3MF9qA9yb+l mLX76eahxc9qkzUgTP7rtFVBE0/BiRQy2iGF6ifTbGX1tkryKmOHVpij4TGsmMCG953o WZhX+5+j8J7E7HqlwIWOhK4ZQ7/KBQ3iJyqx0ITTBU10hNksm5sPn2q7XM6VHl20dIIs +eL/ZTyANJSpSMlBwke1It8dj947YGtA2zVXEMpNeiCwn5RyAI4Lyt56Ql5Ll/DPlLZm KaXBbUA652v7yni+TCB00bz0iIt12IoLyF6/3P1d6MBu0eW2k3yXt7klMXA45WBdTx1G gnxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786376111; x=1786980911; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=evoH7tn9HwlReMqq40LV/1k6FhTDd6/nIyj6oxDghDo=; b=UcY7li4bwUfo2tKK+YU0W1311C4SPWUEQnWBQBOXVz5TSCF5qz3fJMdXc6dSmjQcxl ZKwSME7KnxwlUjIS0Mvigteo2+z75j4TXdSPmOePCEhpALUkuoR9hx8sHbElI3uFkaSO z4TmMfrNtbwkzOkydshQ/xzga4OUs/R1P0laWd3hxcr+hiO2OCy1U+7IhWooJjFKTESY TdOlB7zTdeYrgnGaXxIuMPMfQugqW7t+twb78TQ+SQIFM7e7N8+kLuJ7Rh0Xr70UBWrZ JEPQbqmJGYqxrMzAqH7X1JaK7zvbT0wf7Kup7OXQkK5c2BNNJ1yqwi/ORq+9jJhmLtUs wafQ== X-Gm-Message-State: AOJu0Yx8cxqy/nk+I9do7fgMzbbF0ejOycjiRj/kGa5jlpohUqDapg0s qwB9uuJwjT0cf1mispYjaF6X7hbOhtmO9lC7BzzI35F6FQai0+sJiBoeSjpbQs0aEhM= X-Gm-Gg: AR+sD11/iubqvEG7XDhX0DJv6jJFrtfQcJARawO3kgihNgy7BD+wYqnLaeJLttBLCCo hkXw9ffDwk5ED+8sWEkqVpxX0Fua7Zce5btWvqJLss0YW7bUCKK6lJIeLxu6QSiL4GNzr9VRyoQ HvPiPeP5vXwWC55LN1dqYD0AOi0r9+Fwe6a0Cq31s1ScVX+4KXsovgnhgH0GV0XveXXxU7wJkL8 a/lbR/qeIvDwct1MroU4yYVDMLjsJpqALsQJrLmyOO23QG8Og7kPx5w7PKKIWo15w6HDnh1+5++ 3y2CTK+GNucb3ZhR7JzQEpXphuuwfe9efi1na4lZD+IykKFOgPqypBrkP7bM1WikjGm/IQdOX7d V6pA9jbazzTZVsIOL3J0qzjsgL+MKVoJJAbW6dmLp65npb5UprZkrzI3ui1RbhsM7FFbP3f6cxg iSwBLnpJ89ETaKBwYPeSOT4CgeJMI/tnzSGcqh8buZC9YOgGAduG3syttLT2Am X-Received: by 2002:a05:600c:474a:b0:496:c361:fb96 with SMTP id 5b1f17b1804b1-4994e6db5aemr522903295e9.0.1786376111158; Mon, 10 Aug 2026 08:35:11 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Peter Maydell , "Michael S. Tsirkin" , Stefano Garzarella , "Gonglei (Arei)" , zhenwei pi , Laurent Vivier , Amit Shah , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini , qemu-arm@nongnu.org (open list:i.MX31 (kzm)) Subject: [RFC PATCH] char-fe: implement qemu_chr_fe_backend_name Date: Mon, 10 Aug 2026 16:35:02 +0100 Message-ID: <20260810153503.2652324-1-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x32f.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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: qemu development 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 @linaro.org) X-ZM-MESSAGEID: 1786376148533158500 A number of chardev users where calling qemu_chr_fe_get_driver() which is discouraged as it blocks backend hotswap. As the pattern is common and need for the string is transitory add a helper and keep qemu_chr_fe_get_driver() for those that really need the funkiness of poking around the backend setup. Signed-off-by: Alex Benn=C3=A9e Suggested-by: Peter Maydell Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/chardev/char-fe.h | 13 ++++++++++++- backends/cryptodev-vhost-user.c | 8 +------- backends/rng-egd.c | 8 +------- backends/vhost-user.c | 8 +------- hw/char/imx_serial.c | 4 ++-- 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h index 5f8a6df17dc..13218d04c8d 100644 --- a/include/chardev/char-fe.h +++ b/include/chardev/char-fe.h @@ -52,7 +52,8 @@ void qemu_chr_fe_deinit(CharFrontend *c, bool del); * associated Chardev. * Note: avoid this function as the driver should never be accessed direct= ly, * especially by the frontends that support chardevice hotswap. - * Consider qemu_chr_fe_backend_connected() to check for driver exis= tence + * Consider qemu_chr_fe_backend_connected() to check for driver + * existence or qemu_chr_fe_backend_name() if you need the name. */ Chardev *qemu_chr_fe_get_driver(CharFrontend *c); =20 @@ -70,6 +71,16 @@ bool qemu_chr_fe_backend_connected(CharFrontend *c); */ bool qemu_chr_fe_backend_open(CharFrontend *c); =20 +/** + * qemu_chr_fe_backend_name: + * + * Returns: caller freeable string or NULL + */ +static inline char * qemu_chr_fe_backend_name(CharFrontend *c) +{ + return (c->chr && c->chr->label) ? g_strdup(c->chr->label) : NULL; +} + /** * qemu_chr_fe_set_handlers_full: * @c: a CharFrontend diff --git a/backends/cryptodev-vhost-user.c b/backends/cryptodev-vhost-use= r.c index cc478d9902d..3334e280a27 100644 --- a/backends/cryptodev-vhost-user.c +++ b/backends/cryptodev-vhost-user.c @@ -373,13 +373,7 @@ cryptodev_vhost_user_get_chardev(Object *obj, Error **= errp) { CryptoDevBackendVhostUser *s =3D CRYPTODEV_BACKEND_VHOST_USER(obj); - Chardev *chr =3D qemu_chr_fe_get_driver(&s->chr); - - if (chr && chr->label) { - return g_strdup(chr->label); - } - - return NULL; + return qemu_chr_fe_backend_name(&s->chr); } =20 static void cryptodev_vhost_user_finalize(Object *obj) diff --git a/backends/rng-egd.c b/backends/rng-egd.c index 1d92bd71cf7..c2207f40c5c 100644 --- a/backends/rng-egd.c +++ b/backends/rng-egd.c @@ -126,13 +126,7 @@ static void rng_egd_set_chardev(Object *obj, const cha= r *value, Error **errp) static char *rng_egd_get_chardev(Object *obj, Error **errp) { RngEgd *s =3D RNG_EGD(obj); - Chardev *chr =3D qemu_chr_fe_get_driver(&s->chr); - - if (chr && chr->label) { - return g_strdup(chr->label); - } - - return NULL; + return qemu_chr_fe_backend_name(&s->chr); } =20 static void rng_egd_finalize(Object *obj) diff --git a/backends/vhost-user.c b/backends/vhost-user.c index 380d8250233..46dadb74800 100644 --- a/backends/vhost-user.c +++ b/backends/vhost-user.c @@ -152,13 +152,7 @@ static void set_chardev(Object *obj, const char *value= , Error **errp) static char *get_chardev(Object *obj, Error **errp) { VhostUserBackend *b =3D VHOST_USER_BACKEND(obj); - Chardev *chr =3D qemu_chr_fe_get_driver(&b->chr); - - if (chr && chr->label) { - return g_strdup(chr->label); - } - - return NULL; + return qemu_chr_fe_backend_name(&b->chr); } =20 static void vhost_user_backend_class_init(ObjectClass *oc, const void *dat= a) diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c index fb41ee2ac50..8ac4efbb5e9 100644 --- a/hw/char/imx_serial.c +++ b/hw/char/imx_serial.c @@ -278,10 +278,10 @@ static void imx_serial_write(void *opaque, hwaddr off= set, uint64_t value, unsigned size) { IMXSerialState *s =3D (IMXSerialState *)opaque; - Chardev *chr =3D qemu_chr_fe_get_driver(&s->chr); + g_autofree char *label =3D qemu_chr_fe_backend_name(&s->chr); unsigned char ch; =20 - trace_imx_serial_write(chr ? chr->label : "NODEV", offset, value); + trace_imx_serial_write(label ? label : "NODEV", offset, value); =20 switch (offset >> 2) { case 0x10: /* UTXD */ --=20 2.47.3