[{"id":3681349,"web_url":"http://patchwork.ozlabs.org/comment/3681349/","msgid":"<99bde91f-3fd3-4ee4-b6a0-fb87f475beb7@kaod.org>","list_archive_url":null,"date":"2026-04-23T09:09:10","subject":"Re: [PATCH v4 05/17] hw/usb/hcd-ehci.c: Replace fprintf(stderr, ...)\n with qemu_log_mask(LOG_GUEST_ERROR)","submitter":{"id":68548,"url":"http://patchwork.ozlabs.org/api/people/68548/","name":"Cédric Le Goater","email":"clg@kaod.org"},"content":"On 4/23/26 07:18, Jamin Lin wrote:\n> Replace direct fprintf(stderr, ...) calls with qemu_log_mask()\n> using LOG_GUEST_ERROR in the EHCI controller implementation.\n> \n> Direct writes to stderr are discouraged in QEMU as they bypass\n> the logging framework and cannot be filtered or controlled at\n> runtime. Using qemu_log_mask() ensures that guest-visible errors\n> are properly categorized and can be managed via QEMU logging\n> options.\n> \n> All affected messages correspond to guest-triggerable error\n> conditions, so LOG_GUEST_ERROR is used consistently.\n> \n> This change improves integration with QEMU's logging infrastructure\n> and aligns with upstream coding guidelines.\n> \n> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>\n> ---\n>   hw/usb/hcd-ehci.c | 46 +++++++++++++++++++++++++---------------------\n>   1 file changed, 25 insertions(+), 21 deletions(-)\n> \n> diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c\n> index 7e0b767eb9..8acaedeaa9 100644\n> --- a/hw/usb/hcd-ehci.c\n> +++ b/hw/usb/hcd-ehci.c\n> @@ -36,6 +36,7 @@\n>   #include \"qemu/error-report.h\"\n>   #include \"qemu/main-loop.h\"\n>   #include \"system/runstate.h\"\n> +#include \"qemu/log.h\"\n>   \n>   #define FRAME_TIMER_FREQ 1000\n>   #define FRAME_TIMER_NS   (NANOSECONDS_PER_SECOND / FRAME_TIMER_FREQ)\n> @@ -425,7 +426,7 @@ static int ehci_get_pid(EHCIqtd *qtd)\n>       case 2:\n>           return USB_TOKEN_SETUP;\n>       default:\n> -        fprintf(stderr, \"bad token\\n\");\n> +        qemu_log_mask(LOG_GUEST_ERROR, \"bad token\\n\");\n>           return 0;\n>       }\n>   }\n> @@ -532,7 +533,7 @@ static void ehci_free_packet(EHCIPacket *p)\n>       }\n>       if (p->async == EHCI_ASYNC_FINISHED &&\n>               p->packet.status == USB_RET_SUCCESS) {\n> -        fprintf(stderr,\n> +        qemu_log_mask(LOG_GUEST_ERROR,\n>                   \"EHCI: Dropping completed packet from halted %s ep %02X\\n\",\n>                   (p->pid == USB_TOKEN_IN) ? \"in\" : \"out\",\n>                   get_field(p->queue->qh.epchar, QH_EPCHAR_EP));\n> @@ -1042,8 +1043,9 @@ static void ehci_opreg_write(void *ptr, hwaddr addr,\n>   \n>           /* not supporting dynamic frame list size at the moment */\n>           if ((val & USBCMD_FLS) && !(s->usbcmd & USBCMD_FLS)) {\n> -            fprintf(stderr, \"attempt to set frame list size -- value %d\\n\",\n> -                    (int)val & USBCMD_FLS);\n> +            qemu_log_mask(LOG_GUEST_ERROR,\n> +                          \"attempt to set frame list size -- value %\" PRId64\n> +                          \"\\n\", val & USBCMD_FLS);\n>               val &= ~USBCMD_FLS;\n>           }\n>   \n> @@ -1101,7 +1103,7 @@ static void ehci_opreg_write(void *ptr, hwaddr addr,\n>   \n>       case PERIODICLISTBASE:\n>           if (ehci_periodic_enabled(s)) {\n> -            fprintf(stderr,\n> +            qemu_log_mask(LOG_GUEST_ERROR,\n>                 \"ehci: PERIODIC list base register set while periodic schedule\\n\"\n>                 \"      is enabled and HC is enabled\\n\");\n>           }\n> @@ -1109,7 +1111,7 @@ static void ehci_opreg_write(void *ptr, hwaddr addr,\n>   \n>       case ASYNCLISTADDR:\n>           if (ehci_async_enabled(s)) {\n> -            fprintf(stderr,\n> +            qemu_log_mask(LOG_GUEST_ERROR,\n>                 \"ehci: ASYNC list address register set while async schedule\\n\"\n>                 \"      is enabled and HC is enabled\\n\");\n>           }\n> @@ -1200,7 +1202,7 @@ static int ehci_init_transfer(EHCIPacket *p)\n>   \n>       while (bytes > 0) {\n>           if (cpage > 4) {\n> -            fprintf(stderr, \"cpage out of range (%u)\\n\", cpage);\n> +            qemu_log_mask(LOG_GUEST_ERROR, \"cpage out of range (%u)\\n\", cpage);\n>               qemu_sglist_destroy(&p->sgl);\n>               return -1;\n>           }\n> @@ -1306,7 +1308,8 @@ static void ehci_execute_complete(EHCIQueue *q)\n>           break;\n>       default:\n>           /* should not be triggerable */\n> -        fprintf(stderr, \"USB invalid response %d\\n\", p->packet.status);\n> +        qemu_log_mask(LOG_GUEST_ERROR, \"USB invalid response %d\\n\",\n> +                      p->packet.status);\n>           g_assert_not_reached();\n>       }\n>   \n> @@ -1354,7 +1357,7 @@ static int ehci_execute(EHCIPacket *p, const char *action)\n>              p->async == EHCI_ASYNC_INITIALIZED);\n>   \n>       if (!(p->qtd.token & QTD_TOKEN_ACTIVE)) {\n> -        fprintf(stderr, \"Attempting to execute inactive qtd\\n\");\n> +        qemu_log_mask(LOG_GUEST_ERROR, \"Attempting to execute inactive qtd\\n\");\n>           return -1;\n>       }\n>   \n> @@ -1395,7 +1398,8 @@ static int ehci_execute(EHCIPacket *p, const char *action)\n>               p->packet.actual_length);\n>   \n>       if (p->packet.actual_length > BUFF_SIZE) {\n> -        fprintf(stderr, \"ret from usb_handle_packet > BUFF_SIZE\\n\");\n> +        qemu_log_mask(LOG_GUEST_ERROR,\n> +                      \"ret from usb_handle_packet > BUFF_SIZE\\n\");\n>           return -1;\n>       }\n>   \n> @@ -1479,8 +1483,9 @@ static int ehci_process_itd(EHCIState *ehci,\n>               case USB_RET_SUCCESS:\n>                   break;\n>               default:\n> -                fprintf(stderr, \"Unexpected iso usb result: %d\\n\",\n> -                        ehci->ipacket.status);\n> +                qemu_log_mask(LOG_GUEST_ERROR,\n> +                              \"Unexpected iso usb result: %d\\n\",\n> +                              ehci->ipacket.status);\n>                   /* Fall through */\n>               case USB_RET_IOERROR:\n>               case USB_RET_NODEV:\n> @@ -1584,7 +1589,8 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)\n>   \n>       /* section 4.8, only QH in async schedule */\n>       if (async && (NLPTR_TYPE_GET(entry) != NLPTR_TYPE_QH)) {\n> -        fprintf(stderr, \"non queue head request in async schedule\\n\");\n> +        qemu_log_mask(LOG_GUEST_ERROR,\n> +                      \"non queue head request in async schedule\\n\");\n>           return -1;\n>       }\n>   \n> @@ -1606,8 +1612,10 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)\n>   \n>       default:\n>           /* TODO: handle FSTN type */\n> -        fprintf(stderr, \"FETCHENTRY: entry at %X is of type %u \"\n> -                \"which is not supported yet\\n\", entry, NLPTR_TYPE_GET(entry));\n> +        qemu_log_mask(LOG_GUEST_ERROR,\n> +                      \"FETCHENTRY: entry at 0x%x is of type %u \"\n> +                      \"which is not supported yet\\n\",\n> +                      entry, NLPTR_TYPE_GET(entry));\n>           return -1;\n>       }\n>   \n> @@ -2118,13 +2126,13 @@ static void ehci_advance_state(EHCIState *ehci, int async)\n>               break;\n>   \n>           default:\n> -            fprintf(stderr, \"Bad state!\\n\");\n>               g_assert_not_reached();\n>           }\n>   \n>           if (again < 0 || itd_count > 16) {\n>               /* TODO: notify guest (raise HSE irq?) */\n> -            fprintf(stderr, \"processing error - resetting ehci HC\\n\");\n> +            qemu_log_mask(LOG_GUEST_ERROR,\n> +                          \"processing error - resetting ehci HC\\n\");\n>               ehci_reset(ehci);\n>               again = 0;\n>           }\n> @@ -2181,8 +2189,6 @@ static void ehci_advance_async_state(EHCIState *ehci)\n>   \n>       default:\n>           /* this should only be due to a developer mistake */\n> -        fprintf(stderr, \"ehci: Bad asynchronous state %d. \"\n> -                \"Resetting to active\\n\", ehci->astate);\n>           g_assert_not_reached();\n>       }\n>   }\n> @@ -2231,8 +2237,6 @@ static void ehci_advance_periodic_state(EHCIState *ehci)\n>   \n>       default:\n>           /* this should only be due to a developer mistake */\n> -        fprintf(stderr, \"ehci: Bad periodic state %d. \"\n> -                \"Resetting to active\\n\", ehci->pstate);\n>           g_assert_not_reached();\n>       }\n>   }\n\nReviewed-by: Cédric Le Goater <clg@redhat.com>\n\nThanks,\n\nC.","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kaod.org header.i=@kaod.org header.a=rsa-sha256\n header.s=ovhmo393970-selector1 header.b=SdXxV63n;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","garm.ovh; auth=pass\n (GARM-99G00323dac758-f4eb-4e8c-ad42-68824b72ac4a,\n C846149266E0C9F4D826987B86006927C6E58490) smtp.auth=clg@kaod.org"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1Vfl5swLz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 19:10:07 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wFq3r-00024j-UN; Thu, 23 Apr 2026 05:09:28 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <clg@kaod.org>) id 1wFq3o-00024L-Bo\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 05:09:24 -0400","from 11.mo534.mail-out.ovh.net ([46.105.33.174])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <clg@kaod.org>) id 1wFq3i-0007O8-FY\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 05:09:23 -0400","from director3.derp.mail-out.ovh.net\n (director3.derp.mail-out.ovh.net [152.228.215.222])\n by mo534.mail-out.ovh.net (Postfix) with ESMTPS id 4g1Vdj6z9Kz6C7P;\n Thu, 23 Apr 2026 09:09:13 +0000 (UTC)","from director3.derp.mail-out.ovh.net\n (director3.derp.mail-out.ovh.net. [127.0.0.1])\n by director3.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP\n for <jamin_lin@aspeedtech.com>; Thu, 23 Apr 2026 09:09:13 +0000 (UTC)","from mta3.priv.ovhmail-u2.ea.mail.ovh.net (unknown [10.110.37.159])\n by director3.derp.mail-out.ovh.net (Postfix) with ESMTPS id\n 4g1Vdj5XsCz5vLx; Thu, 23 Apr 2026 09:09:13 +0000 (UTC)","from kaod.org (unknown [10.1.6.1])\n (Authenticated sender: clg@kaod.org)\n by mta3.priv.ovhmail-u2.ea.mail.ovh.net (Postfix) with ESMTPSA id\n 98E6912E3ABD;\n Thu, 23 Apr 2026 09:09:11 +0000 (UTC)"],"X-OVh-ClientIp":"82.64.250.170","Message-ID":"<99bde91f-3fd3-4ee4-b6a0-fb87f475beb7@kaod.org>","Date":"Thu, 23 Apr 2026 11:09:10 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 05/17] hw/usb/hcd-ehci.c: Replace fprintf(stderr, ...)\n with qemu_log_mask(LOG_GUEST_ERROR)","To":"Jamin Lin <jamin_lin@aspeedtech.com>,\n \"philmd@linaro.org\" <philmd@linaro.org>,\n \"peterx@redhat.com\" <peterx@redhat.com>,\n Peter Maydell <peter.maydell@linaro.org>,\n Steven Lee <steven_lee@aspeedtech.com>, Troy Lee <leetroy@gmail.com>,\n Kane Chen <kane_chen@aspeedtech.com>,\n Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley <joel@jms.id.au>,\n Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,\n Yanan Wang <wangyanan55@huawei.com>, Zhao Liu <zhao1.liu@intel.com>,\n \"open list:ASPEED BMCs\" <qemu-arm@nongnu.org>,\n \"open list:All patches CC here\" <qemu-devel@nongnu.org>","Cc":"Troy Lee <troy_lee@aspeedtech.com>, \"flwu@google.com\" <flwu@google.com>,\n \"nabihestefan@google.com\" <nabihestefan@google.com>,\n \"farosas@suse.de\" <farosas@suse.de>","References":"<20260423051804.362095-1-jamin_lin@aspeedtech.com>\n <20260423051804.362095-6-jamin_lin@aspeedtech.com>","Content-Language":"en-US, fr","From":"=?utf-8?q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>","Autocrypt":"addr=clg@kaod.org; keydata=\n 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","In-Reply-To":"<20260423051804.362095-6-jamin_lin@aspeedtech.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","x-ovh-tracer-id":"16265031531562839085","X-VR-SPAMSTATE":"OK","X-VR-SPAMSCORE":"-100","X-VR-SPAMCAUSE":"\n dmFkZTF1BgfI+RMK4QQMmuVi4smpDE0Oq6a6EHDHWJYBwyVTS18sGWpDs+/4vZN1qwZX4X/pVdJX+m144wWEdCmbag8Wnl2x/cZif6VMkUPCxXUVAR0zr8YdcN4jFyw01M8SK7oV14H6ZUke/RzRgWS/RKgGXsauu39oNoXe0FB4Ro8U3naaA2v6GndaV7pYJFKn04S8GN3+pWzJbGlMvdvfw+AW5uq364vM0goQO/ViH5tMlZrivTvf4H928OplsbgDtUtW7hRNxmjQ/1K83XD0tBFY3b+3DejR2vmYL7gRBsEmv/nVA7IaewwpahKeW0ksc0vu3VnYOwrFnE8dcWIEXSPmRnG9wQvHiJ8p0E87xtINJx1hluDujKezc467Wz7e3efEK8uULsUqIGaL+eeilfPNwbv+atho/MQgHgnFCyQqDawvKpSzi3g2C0Ed6IC5bLSvRBuHkqKwYyKg2HCl4bi57Onbhzx45CMOxlPTsi7vyTX54RJ4pSWmiUiyN4hjeEiwuM3ghSoEEECfjcCKg7cPAruLb+uBOQXgTUHP2kazIm8DiwC9XtdjCitIMMiY70564l3nGrnRSn1IcvuFbS+XZKqFa7f/LxK8EgfTk4BhIcaVnsrJb7deuh22mor9Gxcu6JRTgTZTSxo1lHfdAO9r1MBtUWSXoN0lyAlMsnT9WQ","DKIM-Signature":"a=rsa-sha256; bh=TkTUP6p2Z6fnkDKBXsguBiUQ34+T7ASm+4iEVFva1Q8=;\n c=relaxed/relaxed; d=kaod.org; h=From; s=ovhmo393970-selector1;\n t=1776935354; v=1;\n b=SdXxV63nSZjltHKmcZXqkyF2t4PDNMVxRA35kooylwzvJN/zkyChyqkgSCbIX6GaRzOeLayh\n 4KqORc73FOXlDA9o3828z4HY1+qYH4yuobOmgr0+vuXMnzRxB0RR3OmKdQ1hRPfAHJAmKJiNyZj\n Tmro9ZHX4hwCfVYEzod1gFLLZlFHq/NZLopxTxMD0AkvLrsJW4BMfwVKOLw/vcjkZW/W49Pe9op\n DWpVFK+asQNUkssMXDek+Me1ctIBe0NufjRkjaq4776YyAbA4RXr6cGQpx4Bi3iRWeDW75FymZb\n tOXUQaUnQVyDgcvumtFFOQS0rr5kHMUSCGG+dhPHcgyig==","Received-SPF":"pass client-ip=46.105.33.174; envelope-from=clg@kaod.org;\n helo=11.mo534.mail-out.ovh.net","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,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,\n 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]