get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2227737/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2227737,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2227737/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260424080508.53992-6-jamin_lin@aspeedtech.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260424080508.53992-6-jamin_lin@aspeedtech.com>",
    "date": "2026-04-24T08:05:16",
    "name": "[v5,05/18] hw/usb/hcd-ehci.c: Replace fprintf(stderr, ...) with qemu_log_mask(LOG_GUEST_ERROR)",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "445bb0025185483a3a855b02c1f178bff2e5875b",
    "submitter": {
        "id": 81768,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/81768/?format=api",
        "name": "Jamin Lin",
        "email": "jamin_lin@aspeedtech.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260424080508.53992-6-jamin_lin@aspeedtech.com/mbox/",
    "series": [
        {
            "id": 501315,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/501315/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501315",
            "date": "2026-04-24T08:05:08",
            "name": "hw/usb/ehci: Add 64-bit descriptor addressing support",
            "version": 5,
            "mbox": "http://patchwork.ozlabs.org/series/501315/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2227737/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2227737/checks/",
    "tags": {},
    "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=aspeedtech.com header.i=@aspeedtech.com\n header.a=rsa-sha256 header.s=selector1 header.b=TfnBO/M/;\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)",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=aspeedtech.com;"
        ],
        "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 4g25Bv3p2sz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 18:06:31 +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 1wGBXt-0005BY-Ba; Fri, 24 Apr 2026 04:05:53 -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 <jamin_lin@aspeedtech.com>)\n id 1wGBXa-0004wy-RT; Fri, 24 Apr 2026 04:05:34 -0400",
            "from mail-koreacentralazlp170130006.outbound.protection.outlook.com\n ([2a01:111:f403:c40f::6] helo=SEYPR02CU001.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <jamin_lin@aspeedtech.com>)\n id 1wGBXY-0001Fe-Mj; Fri, 24 Apr 2026 04:05:34 -0400",
            "from TYPPR06MB8206.apcprd06.prod.outlook.com (2603:1096:405:383::19)\n by SEYPR06MB5790.apcprd06.prod.outlook.com (2603:1096:101:b9::12)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr\n 2026 08:05:16 +0000",
            "from TYPPR06MB8206.apcprd06.prod.outlook.com\n ([fe80::e659:1ead:77cb:f6d3]) by TYPPR06MB8206.apcprd06.prod.outlook.com\n ([fe80::e659:1ead:77cb:f6d3%3]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026\n 08:05:16 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=RLjIiFtwa5kLPczz9Wb69x2IwIYyVBPXXqSG4Z//fSRh1qze6qbE92cqV6XIopKlMa4+Zso96zqaLN5azW4jvirFdtIfWWJLc9ylfzepVBC0SuQ8K/fVsVFXayF+yQ+PDr5TFjQe1vgHaLMqfNuQ5D0UNsMdP0+mRDhJRhnk9t7qDyxdw+on0E4o3JxFFSGdkywFr7OI4XZfXblO/2hrtCzYyZBSd0sDOoYD2X/iV5emlPEMrZyWecwksQICMOqBc2ABU6Uel7WeFoM8a3Lx7xUuhkcWTHEx8GawxPEJ39/VjlHmP69PVk+0+dbvITZTa4bHonu4deiul/W+GCv5EQ==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=Wf/rspbizfO8S2VdtP+UJa/82oa/vwofXBGb6mH0/F8=;\n b=hjh18yApknhQ2aHT8npe0fzAmLJKu/wE9iYb8Qr0S5oVETFIqNLMueaLDdI0OKfCJghGx8+BNzdrukow9shCjjgZEhnL90bt+uXxJVyHPhnDVWGDRs5NkICg8fRFRWDSxVIxF4DEY4Yd+HtpxQ8OhPaffZ/FdNBIGbrU162RSMq57b64fJ6nwJkqwx9r/Y6EGLWjNw1brw/+bo9on1vww/iJozFDMSi0z6wSS+9KaW7WhpqwtAlQTM/I9uV6ushHscqOd+/P4d+pO/BQrFJ9XzB/G7vRg0Ui3i8GGmVycphlim7aUeRkX1VkrrDggaICyNkd3XI4RBSfRgmuYCgM3A==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=aspeedtech.com; dmarc=pass action=none\n header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Wf/rspbizfO8S2VdtP+UJa/82oa/vwofXBGb6mH0/F8=;\n b=TfnBO/M/yv7vX/gE8ww8cC+1p6M1M3nWsWKllVIWc2IJj8ilAaoCSRetaqtpcs9wBxFom8AhAYWqLZfgmCPNelOlER+ePGwBNBgytLFVjgSqgV7e0GfPOZdfTzQnvrWADx8IO6KqfdaWeBZuFGHrt6zvxd6Qp5J68qJMMDiSfD8pucSpbQaMGEVR4B4qJsJW8ev8aORD+FUs9x7HjZqzNPj9fzk5zUPocLRLVXQ2Yawq+0xybKH1c3hNfOPK3DCK9a91aAQgU0ZPZypsywIAqFcTC73zy9L0pqQSkdlCa/AsnUC7nY53+aaAhHJf7Z2ynwLKsW2wAntyRGzQb229qw==",
        "From": "Jamin Lin <jamin_lin@aspeedtech.com>",
        "To": "\"peterx@redhat.com\" <peterx@redhat.com>,\n \"philmd@linaro.org\" <philmd@linaro.org>,\n =?iso-8859-1?q?C=E9dric_Le_Goater?= <clg@kaod.org>,\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 Paolo Bonzini <pbonzini@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n \"Michael S. Tsirkin\" <mst@redhat.com>, Laurent Vivier <laurent@vivier.eu>,\n Nicholas Piggin <npiggin@gmail.com>,\n Harsh Prateek Bora <harshpb@linux.ibm.com>,\n Ilya Leoshkevich <iii@linux.ibm.com>, David Hildenbrand <david@kernel.org>,\n Halil Pasic <pasic@linux.ibm.com>,\n Christian Borntraeger <borntraeger@linux.ibm.com>,\n Eric Farman <farman@linux.ibm.com>, Matthew Rosato <mjrosato@linux.ibm.com>,\n Cornelia Huck <cohuck@redhat.com>,\n \"open list:ASPEED BMCs\" <qemu-arm@nongnu.org>,\n \"open list:All patches CC here\" <qemu-devel@nongnu.org>,\n \"open list:sPAPR pseries\" <qemu-ppc@nongnu.org>,\n \"open list:S390 TCG CPUs\" <qemu-s390x@nongnu.org>",
        "CC": "Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>,\n  \"farosas@suse.de\" <farosas@suse.de>, \"flwu@google.com\" <flwu@google.com>,\n  \"nabihestefan@google.com\" <nabihestefan@google.com>, =?iso-8859-1?q?C=E9dr?=\n\t=?iso-8859-1?q?ic_Le_Goater?= <clg@redhat.com>",
        "Subject": "[PATCH v5 05/18] hw/usb/hcd-ehci.c: Replace fprintf(stderr, ...) with\n qemu_log_mask(LOG_GUEST_ERROR)",
        "Thread-Topic": "[PATCH v5 05/18] hw/usb/hcd-ehci.c: Replace fprintf(stderr, ...)\n with qemu_log_mask(LOG_GUEST_ERROR)",
        "Thread-Index": "AQHc08EVcDl4XXqFDEishnwsa0W49Q==",
        "Date": "Fri, 24 Apr 2026 08:05:16 +0000",
        "Message-ID": "<20260424080508.53992-6-jamin_lin@aspeedtech.com>",
        "References": "<20260424080508.53992-1-jamin_lin@aspeedtech.com>",
        "In-Reply-To": "<20260424080508.53992-1-jamin_lin@aspeedtech.com>",
        "Accept-Language": "zh-TW, en-US",
        "Content-Language": "en-US",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "authentication-results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=aspeedtech.com header.i=@aspeedtech.com\n header.a=rsa-sha256 header.s=selector1 header.b=TfnBO/M/;\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)",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=aspeedtech.com;"
        ],
        "x-ms-publictraffictype": "Email",
        "x-ms-traffictypediagnostic": "TYPPR06MB8206:EE_|SEYPR06MB5790:EE_",
        "x-ms-office365-filtering-correlation-id": "2e186251-dea5-41ec-d66b-08dea1d8383f",
        "x-ms-exchange-senderadcheck": "1",
        "x-ms-exchange-antispam-relay": "0",
        "x-microsoft-antispam": "BCL:0;\n ARA:13230040|1800799024|366016|376014|7416014|921020|38070700021|22082099003|18002099003|56012099003;",
        "x-microsoft-antispam-message-info": "\n MgBqwsqPfU54mwyVoPO0PkxxyvuROyAfly6NyGc9qz/vn5pNw098zoHkDUs5BLQ59WUNvHgNrfk2PD5FBMEiLGccxGK485sXTmQK60X0sJJJYVT4QVJUVhnqgkQv5fDKFYd7zAMTwJtgWKnUlLKka8ZFUOAuv5SgnXUznMDw0PVeyGqbDgjHqm3nlHxN1qsZvU3bTJ5oqPMdqPU7ijHvUPKrPG5mMjXcNJQGEtjTuZFh4tx1Oiq79Pq5hagHIAbdtMLgl2HENFPp1vONgATm+/mw0/Cah8CJd1eB/TM8sM8pI+Pu4Tp2CiARSU6bxN4M0EQ8Nlu0Gs9mTd/gbGPXj3fgnauawZHkLb9XOtidrEasgirOCjNKTgza+FDHoEtM6+DbTek7uwR6gLayL855IMvmzJa0YcO3h6tqpDKJY5A+vQMvWHVCJZwrj3j/N7aGR4IXUsJKWfQBlH/qRrHJ0y5HQ7uSB9hFyZ8I9oTOWqlGC/toB/ZCrgkeGYI2MpNHSDO/uExvyMdE3eN+/a38i7OsEd4eYefqOZFms8UCA78mWtdPwizl0WgZuY8vG5XfSfJO47IYNjmLqTGDKtkbiwHnqZsyTrKjfMS83jiH9VrrboGBQ5U0G5+IixZOmWO5mqyqLBZC7DofEpNsyc5vZaSrQu978drovuFsrPwmRUL0VscNSoUjnG+aHV0x75dzQZX53Sku8d0q3Z+5sCGvZzNHsz6qJHS5Rh06CL22DhF8q200RV3yBRX3YDLGDPGXExN32jL6X6yKpCB0KMexZ5XVw2Kcyuz23/g1D3i00Toam3rYbF+LSN0UUazd8JHk",
        "x-forefront-antispam-report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:TYPPR06MB8206.apcprd06.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(1800799024)(366016)(376014)(7416014)(921020)(38070700021)(22082099003)(18002099003)(56012099003);\n DIR:OUT; SFP:1102;",
        "x-ms-exchange-antispam-messagedata-chunkcount": "1",
        "x-ms-exchange-antispam-messagedata-0": "=?iso-8859-1?q?0Q5CRuun9PDWRb/3NydtqLN?=\n\t=?iso-8859-1?q?mHjGWv89W9NhIPuQ56qEDMHnrR8OfZmK9CYgHcivKdGG54WeWRib9k2a82DP?=\n\t=?iso-8859-1?q?SLj3yh2AjFRTsfibVP8OnfUUNQfPJc3B5yYDvA85/kCZBlqqTVWwSIaa1a4D?=\n\t=?iso-8859-1?q?n4nasnZJG1Bq5ZhhW/oSgVMGAsU9YNkP11wwzU1eCP6YjiEDLMCcY1Fqn+Ds?=\n\t=?iso-8859-1?q?TQjNAC5JyKXyIxMrn8DvVIjs01a75BvpVWAgYVs47b1uvJXARj7uhxJZm7fZ?=\n\t=?iso-8859-1?q?IFWQ/3JGRILD5tmNtiGHTqCaOwpgpz6M6xPnEEC7DG1qhM+kvKqkK128xm2d?=\n\t=?iso-8859-1?q?R13u16e2D3iiY0OO5k5/prfLjX3AAk1opQ4Ta6xBdGNiPVigLVqtL2iv9rVD?=\n\t=?iso-8859-1?q?ToRzhg7IfCOPPPd25JUVb3e2DqMDTJBmLn4RdrvqU7VBlbQut0T7eZQ1MsbO?=\n\t=?iso-8859-1?q?G12E9YUtidqFWFUl8hYaJo2DJo+97vZXRnlTSt0V73V/MOK3pG88XpUc+iac?=\n\t=?iso-8859-1?q?YY7hdUZ72J8e4N70QC8LDsqXuBf1U4G83tECQq+PNNpE8P9Q7oJLAD6vpPHj?=\n\t=?iso-8859-1?q?Ym/bOymeU1vP2xfVB6d5aZS6g7dGxKPAAPYa0qfyB94ZGNC4adN5yLvh63x1?=\n\t=?iso-8859-1?q?o0KkNVLVYo8DqChktXc8GU4BBtG9NKVv0VJPyqoT+E9DdGdtqvE9RK9hjf+G?=\n\t=?iso-8859-1?q?7EsH+ot2OjZE7xSnJe/OiJy1BsPG+0yOX5Y9QU1zNqME/Ly5NIR3ctSBQaxd?=\n\t=?iso-8859-1?q?5rfjq27eeL+ymSLFgYVOdqHdwIy+7sV5zVUTUGX8LOcOx4RYlI/cO8IkQN2A?=\n\t=?iso-8859-1?q?c5W3y/ZjAe4+w+SO+C6hKUglUuLgqqCTp3X68Q1mXQY0SEZKgHBGJid/fF5s?=\n\t=?iso-8859-1?q?nYXtU5WWzYhaQZ1n5AE+2XrTTaLgTKWALm7keZ16OcJu+Brq/+we8yMOm0m7?=\n\t=?iso-8859-1?q?9X51ZF7JEZhabNGmXUUt8c2IGHb/1nFiTTyaPcRPN4Ugu27DdcK71TI05+2Y?=\n\t=?iso-8859-1?q?W0HKMGEhzdRbke6IcHVF0hDsIMgYcCqKuMmHbE8SvXCZmPRvG93Fvw41hebf?=\n\t=?iso-8859-1?q?IGNJFFEvqpkXvcNT9LfngSk8nYgiVxD7Ng5N/9J2Mv2LpYKMs9+KO6wMbLL+?=\n\t=?iso-8859-1?q?GmMya0xxoQVk1xUSiSVGgQW8NQwlewK0euG6xwR7WAsgUUWmj8sTF6e1zfYQ?=\n\t=?iso-8859-1?q?GfbRSX/wyZ9JM47HmCWDaK4cB9P1OrDRZXdn0pRu+TGbD2Vqo+yHrn9EYoE0?=\n\t=?iso-8859-1?q?zJB6FDe2dK2rgA4YSTsyl3CcEcbKkx0J5pYGoNkv3S5wiGy8VkCWnmbJEMqU?=\n\t=?iso-8859-1?q?bgp7iP/1WWqQbiG/53zm2cMjmdSPDWXCLrDUIqZNsEq/a0vUyLzC+ds/Dzyf?=\n\t=?iso-8859-1?q?iA2zfyyH8ID891yMMhB/+2R1zbEAkA42xpQijf3zRVwi24S0wU6PghKMsgfT?=\n\t=?iso-8859-1?q?Igsy2/hmK/Qtsd5yJLJ9x8DQD30gINBH1eXv1KauCCNOW7ofoF3wb5bFL9h/?=\n\t=?iso-8859-1?q?NrVujYX2BbXPK3l7ti+zT5upD87yXUa7ndVzgp2gPliXIBUfS6n0/6USik9f?=\n\t=?iso-8859-1?q?O3Ipb1ce2sKUmXQ4LWfljlN+dxNeHwajPmRhE67FsaAfiZ4zprR3JKzS5+gu?=\n\t=?iso-8859-1?q?2XzbCP1ODOPoCy+nsbQYOQkURKB6qaVmGqeAsUp2bBJvYUZ1tXURiDQOi4FR?=\n\t=?iso-8859-1?q?U2B5KJnejeOBlsZ3H8fcI6lMV7hrdN2+armCzIYoV9X36bbzt1mqtDfjJLFX?=\n\t=?iso-8859-1?q?d1ffS36wfOL6E7qVPlspBJrTkrQpgjWt73ZazVoKhUyisug=3D=3D?=",
        "Content-Type": "text/plain; charset=\"iso-8859-1\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-Exchange-RoutingPolicyChecked": "\n Ixajn8xVZMfCfxyTl1meNVuSnNUrRZRHAvI8XOg0jdQya5ITzFTnJpbXlAk/GGj4Uyc3PGT0/vuOkdWsKO3BouaJYR3Zu+51G4cga8ZFELmwTOM+AOQDcfXVS0dEXSbUV59oizGLJykUJdmhF1UNDqEC5Ln7QPd58i/dWqJ9lVwX5iXIFwCVaSfE+U1YEsnISwGj1OgcLXdpqVVS3jl03eTJn+kHRRBmhjKHJxFUaHGylNTfeqlMabnVHW2/GMsAiSP2A7HA71C7OeiU1YMt8Eb5m+lZ+SneBCHdpQ9pF+0A6sYuQBDHVvnbSdWYuO6btVOEBXJ+/opja6sJK0NmSQ==",
        "X-OriginatorOrg": "aspeedtech.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-AuthSource": "TYPPR06MB8206.apcprd06.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 2e186251-dea5-41ec-d66b-08dea1d8383f",
        "X-MS-Exchange-CrossTenant-originalarrivaltime": "24 Apr 2026 08:05:16.1286 (UTC)",
        "X-MS-Exchange-CrossTenant-fromentityheader": "Hosted",
        "X-MS-Exchange-CrossTenant-id": "43d4aa98-e35b-4575-8939-080e90d5a249",
        "X-MS-Exchange-CrossTenant-mailboxtype": "HOSTED",
        "X-MS-Exchange-CrossTenant-userprincipalname": "\n Cc+NMDXx0yma+OzxXslOFwqbME+UBu1fb2oDU63YgIeG0Lo9wNSR+xKruhRIX60By6+vVSwQNdyo0Ly7EhCzzN3aBDupUJrmqmsioUs7LMg=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SEYPR06MB5790",
        "Received-SPF": "pass client-ip=2a01:111:f403:c40f::6;\n envelope-from=jamin_lin@aspeedtech.com;\n helo=SEYPR02CU001.outbound.protection.outlook.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,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n SPF_HELO_PASS=-0.001,\n 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"
    },
    "content": "Replace direct fprintf(stderr, ...) calls with qemu_log_mask()\nusing LOG_GUEST_ERROR in the EHCI controller implementation.\n\nDirect writes to stderr are discouraged in QEMU as they bypass\nthe logging framework and cannot be filtered or controlled at\nruntime. Using qemu_log_mask() ensures that guest-visible errors\nare properly categorized and can be managed via QEMU logging\noptions.\n\nAll affected messages correspond to guest-triggerable error\nconditions, so LOG_GUEST_ERROR is used consistently.\n\nThis change improves integration with QEMU's logging infrastructure\nand aligns with upstream coding guidelines.\n\nSigned-off-by: Jamin Lin <jamin_lin@aspeedtech.com>\nReviewed-by: Cédric Le Goater <clg@redhat.com>\n---\n hw/usb/hcd-ehci.c | 46 +++++++++++++++++++++++++---------------------\n 1 file changed, 25 insertions(+), 21 deletions(-)",
    "diff": "diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c\nindex 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",
    "prefixes": [
        "v5",
        "05/18"
    ]
}