Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2227752/?format=api
{ "id": 2227752, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2227752/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260424080508.53992-7-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-7-jamin_lin@aspeedtech.com>", "date": "2026-04-24T08:05:17", "name": "[v5,06/18] hw/usb/hcd-ehci: Replace DPRINTF debug logs with trace events", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "9b76643968f0cc9912afe985d74fbebfb3fc9f54", "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-7-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/2227752/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2227752/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=byajdaLY;\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 4g25JK4G5vz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 18:11:13 +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 1wGBXv-0005Da-D6; Fri, 24 Apr 2026 04:05:55 -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 1wGBXd-00051U-8Y; Fri, 24 Apr 2026 04:05:38 -0400", "from mail-japaneastazlp170130007.outbound.protection.outlook.com\n ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wGBXa-0001Eb-RE; Fri, 24 Apr 2026 04:05:36 -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:17 +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:17 +0000" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=HGnbn5sFb8TsxYoq3MOPbSbns1wTbiYpHfeVre+pJW/jdl+KKfpOkI4dORbBz4Z/lz/IU/pYDUFq/BRQ9YC9Al4sofC9fR7GPOK0YWmh8Q4NEOYpQsAAUcMV97SIqqHj/8RMxfMMZ1Tyomzhc2Fe+hs03cskOSAQttH0WWyI2EmcrAa7GllcoNQUgcvgJycdbAga00tOZ1WFBo/2uF1wpsOOo8JkZIYvbcnyyU/XpVwWSuUYC626yCAMIdWphuNe1BqFDFSM178906f/+3CsXAlvCCcTK3ob1u/BJB3UFe9ikwwJDCmcQGZN7brV9/bftRCA1rqCaQKm4THSKXLV4A==", "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=GIY1fG4h3zp2izRpjJocKSCoNpoYrGe5n8/GcTDKgfA=;\n b=DvmJvFbL6wWzFPFUoPWlII2c3z8CNt/9eH0xqPRYi0Hbr8+Z15vo1y71XMpjeMWIa6NaSg7ugBSHkLHjI9r/8YI1r2ET46mprggAyvAIonrNSRQbATnYQRftHVMRXhA4XfUj750o8FWxQ8m86s/6b4ocr2FmwxCvu6NSKAEF0jbvHa4XECtGBw2G4gEXb7z4Was/nfPhQwOTM/uxIAZqdSHahp8TJkkqamdqkDfc8doPK03W3uECtPeMyMSVgv0ckLSL6kY5LyFEMomUufKrBVfPjDLzXDvJT1eJtlk5N/P3sx6GzqgrHJCuOX6/ncrGukzaQj0eocMjWSUTEl4kgA==", "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=GIY1fG4h3zp2izRpjJocKSCoNpoYrGe5n8/GcTDKgfA=;\n b=byajdaLYe6m17ORLV5VNu2U6+nLXaRnYNWzx/uTNeycbh9W9caT5GyOxlCBF/JypzneQY3dz+Us96ePBZB5k7IdiaImSdgzf+5/GZnSouKXxVr+0YgxwCsDga4Er2CEtA1bX9OLGxwTWg05l0KQ38EDp6wBm1Jl0bgv9997xbzjGJsWWxOUSmZ+zY8bIuFtjAEUZSXKRDRnHMrhGn8gUQQg7XyuleaevopF+ZOWm/DtB64+E71gR7qTvVW66Y0p5VBRyN074cY4WYBBuLvcUa1wKygKhvc/rPOOm+P1Mv8/6UoFdvQxRiVzZjVCYxjyky7xcieJW3v76EtzGSVWqdA==", "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 \"Michael S. Tsirkin\" <mst@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Laurent Vivier <laurent@vivier.eu>, 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 Cornelia Huck <cohuck@redhat.com>, Eric Farman <farman@linux.ibm.com>,\n Matthew Rosato <mjrosato@linux.ibm.com>, Halil Pasic <pasic@linux.ibm.com>,\n Christian Borntraeger <borntraeger@linux.ibm.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>", "Subject": "[PATCH v5 06/18] hw/usb/hcd-ehci: Replace DPRINTF debug logs with\n trace events", "Thread-Topic": "[PATCH v5 06/18] hw/usb/hcd-ehci: Replace DPRINTF debug logs\n with trace events", "Thread-Index": "AQHc08EW2owNv3gcH06vbnzuE3Wtzg==", "Date": "Fri, 24 Apr 2026 08:05:17 +0000", "Message-ID": "<20260424080508.53992-7-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=byajdaLY;\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": "242703fe-d2e1-45c2-e7a0-08dea1d8391a", "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 3hEeS/RHMxA4s5bMJjqY0X6e/SfQWSHGzT+mjGw0oQwzVY2ndu6xrl9Kfy2yW+RnFE3dHfw/1yEbV4XlT312diLFXROr+TAcv/g7CLYXwYhAgPKdwLEFOtplmcOvlmnZpFI5bPiRrWCSE2FPi4hcdhRO9nog6obVJXE2Bo3Z6ZEwygQwGsqnJPhOqw+MtSbMdlYkSXInbqdoKAv4OwNxlm5qVnxuMVJ6D8griU3sYrIOAJCu3eB2xV5iIIbrKVdhc+KRzB2loL+F+AKYddc8V0wd7UTJ0wG94eDpK8aZAUKh++wp+a2w3HJi+gCTWZR8AZMHVFa5kVW5ttwn0Nvwp/LLluVyfmx4S5dGpawQVJf7/ABpC63zFNQSdCA2x87SSF9ia88DJfukWN4foiCxjMfgtl9vUkR+274LMmQXWCdyOdPJTP7HYZCAGweUmdDoLWuK9CtJ04WLT7iO4/KJBdGGtftrXu2MzX0zT16odiCCZSbyA/K3fLWwnMvL45oSvAAaiLO9Jl+sRXY0Hry01XhI+npr8s0WDpJOspsYmI3wrKc+7dNzV0qA2vz72+fg4gPu67mSQ51eDSx93OPk67QjGNMD76l4aiFPTte3MqNn7i8juMepGF+oR5Dkll4elF50V0FGMRUNTuBqffWN9QLmm0vBmJ2LVd0n8DDO/CyOSPNd/n8jISn4cLwHfP5WJqhnreymqx81bwKCQBSN+9H9VRSOITIeZXj8pCPnLLoUiZPwCHdaXyIzp/ggPpY6wRrY/9DnsT6LEpku4Ja5HXv8CC52aaEX7s+GEQG8R3IcP2aE0A24WeutBfmKx8pZ", "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?xA/1kVKT4Z1z2GDiX9HQntK?=\n\t=?iso-8859-1?q?BhYFEeI6wECyT+VDQM9yKc1Crb4o1zlCzSbobYJHUFRRku9Fa9Z67DcpMXyg?=\n\t=?iso-8859-1?q?JGC4VmW2eTf+QX2xcFZf0atT3VIqzAJjbZs+tUHEVfIE3sGn968M1T9wUIev?=\n\t=?iso-8859-1?q?J40w8P4uYgckmdI5bX3c3cH+mqTbcyLCPSZCEQF2TPzrYmEtr9HCauNNsNNi?=\n\t=?iso-8859-1?q?4HwCqjt3T1Yr0Y2L5aetcdgZrRg/IivzVDC+rqO8bxBAcghcLTO/ld8/Nxtw?=\n\t=?iso-8859-1?q?FUNzJnPEMxNfx2DY50772/2FJKf2viNj+KN5f6Onisw522NG5LgXhU4ApL/A?=\n\t=?iso-8859-1?q?Mk11aSWi3zIi3P57vtzxkgsey/ysC5ZCPpnAF1FlIZS33R2NKg/WGEVXg2/i?=\n\t=?iso-8859-1?q?fNNhgv/yVII29X0vpV1AjuUUiHDtmJQQoy/IeOiKeuizw7ine+9XfqG87cbp?=\n\t=?iso-8859-1?q?vtd8OVXgMtEIC0q2MTc/wgz3WfLbz1N6fouseJjnhSAgWs8RnnsW4shFJlze?=\n\t=?iso-8859-1?q?IkT5zd+PFSmkBtcZjbEjm29yGv+iAmwjYvfDcXAE3iWYHkjz7vqzDWQd4LrV?=\n\t=?iso-8859-1?q?OoMPa9Yz7lH1HKKURGUFEdPW/hfXbwMxkmkaWMVhhPc87sS60bXjM/zj3WX9?=\n\t=?iso-8859-1?q?JtssiAax4LaL4QmkxUSKQruHQP6q7AyWWdtIiNpNnY13AEhKo8UG7Fd3MXj5?=\n\t=?iso-8859-1?q?c6zLnkbhrCCO9oKlwCdHfCqgtR3kr0vY3PXtSX3BqEcQ4GeGjTpZ3wlywfWq?=\n\t=?iso-8859-1?q?C9v8IJBktHdWbbHXJrUgXUFW1CbQWPMlMxLJvzevjqrXxORs1HbbN3no7g90?=\n\t=?iso-8859-1?q?S5xnLfzIuRQjS+sHqgPQR5253QSNKjeyI+MYiZw6UkIumJKxFRQzWItnxy9A?=\n\t=?iso-8859-1?q?2+bvM60IQq9KZzFOrljAjY4z0y01iEUJvISvizhcUBD7wBnf6KoasruDXeXK?=\n\t=?iso-8859-1?q?xOseHVQl2KU3EZajEIyOd9PH/+btbyDW7xcnE9JXcgKbptv9RLAvp3ZIJ01T?=\n\t=?iso-8859-1?q?bzNboCN+DxZ8XOY7iKj+GAFv6s6dIVFNCe3ebpvMISaQVlQ/x4qwB+crFWrn?=\n\t=?iso-8859-1?q?jmzMTvuba1+NpHqX7do9uUQPrLyOfK8dA4giC95oJLGoCgFL+7pGEpZ57DQa?=\n\t=?iso-8859-1?q?w80sWaTMAGOx0fCfKuFTgou3NWSiIYks+3l3ePowgCi3+N6/3x1m3ZKLM1zR?=\n\t=?iso-8859-1?q?zIMnVKCSCLp9qSaqtHy33UOF0q7X9ZwLNROEQtjmLRQNiQS/5rwKkkCpF4fy?=\n\t=?iso-8859-1?q?fkzeSTNDZ0tN4ssa7iYInBIITZLva6pZPH1sUp+BbZjyQHwrZPZQBlX43f6z?=\n\t=?iso-8859-1?q?H+WiNStwIX9Bjuz5MsvZKrWVN2aJjtWerCITkQqd3XpMhnudocnRWxWSEPEx?=\n\t=?iso-8859-1?q?vu2TcuDPlFWP1NajNUBEwIV7ALvEypYP8O9yZLq8XFGT6MG/5Lh7h/+QpAAa?=\n\t=?iso-8859-1?q?iRY60CQ+A0G/tSJRCdaK41ozmeKofdvggKm4gpc9h5BWhYaqPKlDtdUyHUiO?=\n\t=?iso-8859-1?q?WduSHTjM1zbyvysOfwpc5BRcRRmpatPCufeaY+61ntkY/16t9gLaZ/A8LFzD?=\n\t=?iso-8859-1?q?1A2EikwRFYvhXt2Higx0pEjWi48DeFywCFbcAv5u7GdjIY9/scepoXc/x+/Z?=\n\t=?iso-8859-1?q?lTgnLWjJvLFB7NkUP719VEG5clGY09DPVe0ylrDFnTmz5Bi1FV6mJ1IsuS/v?=\n\t=?iso-8859-1?q?RlGgRXl/6k0kUId9Lvb2aAnRHPvqmc5JGglXtf/24esdGEmf07ztoaBRuX3+?=\n\t=?iso-8859-1?q?txt/9Td3jy7A/gJVFsklq11xRwhjH2nER6za49lOQL6Z/Sg=3D=3D?=", "Content-Type": "text/plain; charset=\"iso-8859-1\"", "Content-Transfer-Encoding": "quoted-printable", "MIME-Version": "1.0", "X-Exchange-RoutingPolicyChecked": "\n RLAYCqm28rNHUpkK5tQf/j8sE2zVDogZPRS3YI2Jkjkq6sW+DBauYbm0IB9JC2XC7nv1BevfOr91NP9HQjp2soWTWoVH+B5QCFYdXT8iCm9chlgQxGZTbmQuiEdvo/2Sh7fIOqe77fhHQjbXqAbioXewL/zBAgk+xamjW63s49BHeBTkxPNPqjHNGp/kqkASnQIQbNtcbmFmLoJN5nM2u03tRhrHrTR5y/FB6O2wuGg5oG/gB6FzwsGDsaqCaFN57M/zg/KGDZkqNzEme3Stv5wDvbK+3PiP3A2r+O6ACbzaxtoKwgOAA4cbF5dITOGptvWMrQpvclrgKbhLh4ntFQ==", "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 242703fe-d2e1-45c2-e7a0-08dea1d8391a", "X-MS-Exchange-CrossTenant-originalarrivaltime": "24 Apr 2026 08:05:17.6191 (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 MNYsPucNxeil6VYzaxB+dpMEx8L9T13LbiSZTHBP5dDSRxD9LFeIyeKYvD/zAyH6ClV21bJtZfPSte4d5bqhnMNixCRJclZAY+73Hw8Un4A=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SEYPR06MB5790", "Received-SPF": "pass client-ip=2a01:111:f403:c405::7;\n envelope-from=jamin_lin@aspeedtech.com;\n helo=TYDPR03CU002.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, SPF_HELO_NONE=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 legacy DPRINTF() debug logging in the EHCI host controller\nimplementation with QEMU trace events.\n\nThe EHCI_DEBUG macro and associated DPRINTF() definitions are\nremoved as they are no longer needed.\n\nTrace events are added for:\n- packet submission and completion\n- queue head execution state\n- periodic schedule advancement\n- ITD error conditions\n- port state handling\n- skipped microframes\n\nNo functional change.\n\nSigned-off-by: Jamin Lin <jamin_lin@aspeedtech.com>\nReviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>\n---\n hw/usb/hcd-ehci.h | 10 ---------\n hw/usb/hcd-ehci.c | 49 +++++++++++++++++++--------------------------\n hw/usb/trace-events | 9 +++++++++\n 3 files changed, 30 insertions(+), 38 deletions(-)", "diff": "diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h\nindex 736407fd52..4234591cb4 100644\n--- a/hw/usb/hcd-ehci.h\n+++ b/hw/usb/hcd-ehci.h\n@@ -24,16 +24,6 @@\n #include \"hw/pci/pci_device.h\"\n #include \"hw/core/sysbus.h\"\n \n-#ifndef EHCI_DEBUG\n-#define EHCI_DEBUG 0\n-#endif\n-\n-#if EHCI_DEBUG\n-#define DPRINTF printf\n-#else\n-#define DPRINTF(...)\n-#endif\n-\n #define MMIO_SIZE 0x1000\n #define CAPA_SIZE 0x10\n \ndiff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c\nindex 8acaedeaa9..28a60e4c1a 100644\n--- a/hw/usb/hcd-ehci.c\n+++ b/hw/usb/hcd-ehci.c\n@@ -839,7 +839,7 @@ static USBDevice *ehci_find_device(EHCIState *ehci, uint8_t addr)\n for (i = 0; i < EHCI_PORTS; i++) {\n port = &ehci->ports[i];\n if (!(ehci->portsc[i] & PORTSC_PED)) {\n- DPRINTF(\"Port %d not enabled\\n\", i);\n+ trace_usb_ehci_port_disable(i);\n continue;\n }\n dev = usb_find_device(port, addr);\n@@ -1281,10 +1281,8 @@ static void ehci_execute_complete(EHCIQueue *q)\n assert(p->async == EHCI_ASYNC_INITIALIZED ||\n p->async == EHCI_ASYNC_FINISHED);\n \n- DPRINTF(\"execute_complete: qhaddr 0x%x, next 0x%x, qtdaddr 0x%x, \"\n- \"status %d, actual_length %d\\n\",\n- q->qhaddr, q->qh.next, q->qtdaddr,\n- p->packet.status, p->packet.actual_length);\n+ trace_usb_ehci_execute_complete(q->qhaddr, q->qh.next, q->qtdaddr,\n+ p->packet.status, p->packet.actual_length);\n \n switch (p->packet.status) {\n case USB_RET_SUCCESS:\n@@ -1327,7 +1325,7 @@ static void ehci_execute_complete(EHCIQueue *q)\n } else {\n tbytes = 0;\n }\n- DPRINTF(\"updating tbytes to %d\\n\", tbytes);\n+ trace_usb_ehci_qh_tbytes(tbytes);\n set_field(&q->qh.token, tbytes, QTD_TOKEN_TBYTES);\n \n ehci_finish_transfer(q, p->packet.actual_length);\n@@ -1392,10 +1390,9 @@ static int ehci_execute(EHCIPacket *p, const char *action)\n \n trace_usb_ehci_packet_action(p->queue, p, action);\n usb_handle_packet(p->queue->dev, &p->packet);\n- DPRINTF(\"submit: qh 0x%x next 0x%x qtd 0x%x pid 0x%x len %zd endp 0x%x \"\n- \"status %d actual_length %d\\n\", p->queue->qhaddr, p->qtd.next,\n- p->qtdaddr, p->pid, p->packet.iov.size, endp, p->packet.status,\n- p->packet.actual_length);\n+ trace_usb_ehci_packet_submit(p->queue->qhaddr, p->qtd.next, p->qtdaddr,\n+ p->pid, p->packet.iov.size, endp,\n+ p->packet.status, p->packet.actual_length);\n \n if (p->packet.actual_length > BUFF_SIZE) {\n qemu_log_mask(LOG_GUEST_ERROR,\n@@ -1472,7 +1469,8 @@ static int ehci_process_itd(EHCIState *ehci,\n usb_handle_packet(dev, &ehci->ipacket);\n usb_packet_unmap(&ehci->ipacket, &ehci->isgl);\n } else {\n- DPRINTF(\"ISOCH: attempt to address non-iso endpoint\\n\");\n+ trace_usb_ehci_log(\"ISOCH: \"\n+ \"attempt to address non-iso endpoint\");\n ehci->ipacket.status = USB_RET_NAK;\n ehci->ipacket.actual_length = 0;\n }\n@@ -1677,24 +1675,22 @@ static EHCIQueue *ehci_state_fetchqh(EHCIState *ehci, int async)\n if (ehci->usbsts & USBSTS_REC) {\n ehci_clear_usbsts(ehci, USBSTS_REC);\n } else {\n- DPRINTF(\"FETCHQH: QH 0x%08x. H-bit set, reclamation status reset\"\n- \" - done processing\\n\", q->qhaddr);\n+ trace_usb_ehci_fetchqh_reclaim_done(q->qhaddr);\n ehci_set_state(ehci, async, EST_ACTIVE);\n q = NULL;\n goto out;\n }\n }\n \n-#if EHCI_DEBUG\n- if (q->qhaddr != q->qh.next) {\n- DPRINTF(\"FETCHQH: QH 0x%08x (h %x halt %x active %x) next 0x%08x\\n\",\n- q->qhaddr,\n- q->qh.epchar & QH_EPCHAR_H,\n- q->qh.token & QTD_TOKEN_HALT,\n- q->qh.token & QTD_TOKEN_ACTIVE,\n- q->qh.next);\n+ if (trace_event_get_state_backends(TRACE_USB_EHCI_FETCHQH_DBG)) {\n+ if (q->qhaddr != q->qh.next) {\n+ trace_usb_ehci_fetchqh_dbg(q->qhaddr,\n+ q->qh.epchar & QH_EPCHAR_H,\n+ q->qh.token & QTD_TOKEN_HALT,\n+ q->qh.token & QTD_TOKEN_ACTIVE,\n+ q->qh.next);\n+ }\n }\n-#endif\n \n if (q->qh.token & QTD_TOKEN_HALT) {\n ehci_set_state(ehci, async, EST_HORIZONTALQH);\n@@ -2161,7 +2157,7 @@ static void ehci_advance_async_state(EHCIState *ehci)\n /* make sure guest has acknowledged the doorbell interrupt */\n /* TO-DO: is this really needed? */\n if (ehci->usbsts & USBSTS_IAA) {\n- DPRINTF(\"IAA status bit still set.\\n\");\n+ trace_usb_ehci_log(\"IAA status bit still set.\");\n break;\n }\n \n@@ -2226,9 +2222,7 @@ static void ehci_advance_periodic_state(EHCIState *ehci)\n if (get_dwords(ehci, list, &entry, 1) < 0) {\n break;\n }\n-\n- DPRINTF(\"PERIODIC state adv fr=%d. [%08X] -> %08X\\n\",\n- ehci->frindex / 8, list, entry);\n+ trace_usb_ehci_periodic_state_advance(ehci->frindex / 8, list, entry);\n ehci_set_fetch_addr(ehci, async, entry);\n ehci_set_state(ehci, async, EST_FETCHENTRY);\n ehci_advance_state(ehci, async);\n@@ -2294,8 +2288,7 @@ static void ehci_work_bh(void *opaque)\n ehci_update_frindex(ehci, skipped_uframes);\n ehci->last_run_ns += UFRAME_TIMER_NS * skipped_uframes;\n uframes -= skipped_uframes;\n- DPRINTF(\"WARNING - EHCI skipped %\"PRIu64\" uframes\\n\",\n- skipped_uframes);\n+ trace_usb_ehci_skipped_uframes(skipped_uframes);\n }\n \n for (i = 0; i < uframes; i++) {\ndiff --git a/hw/usb/trace-events b/hw/usb/trace-events\nindex dd04f14add..0d4318dcf1 100644\n--- a/hw/usb/trace-events\n+++ b/hw/usb/trace-events\n@@ -89,6 +89,7 @@ usb_ehci_state(const char *schedule, const char *state) \"%s schedule %s\"\n usb_ehci_qh_ptrs(void *q, uint32_t addr, uint32_t nxt, uint32_t c_qtd, uint32_t n_qtd, uint32_t a_qtd) \"q %p - QH @ 0x%08x: next 0x%08x qtds 0x%08x,0x%08x,0x%08x\"\n usb_ehci_qh_fields(uint32_t addr, int rl, int mplen, int eps, int ep, int devaddr) \"QH @ 0x%08x - rl %d, mplen %d, eps %d, ep %d, dev %d\"\n usb_ehci_qh_bits(uint32_t addr, int c, int h, int dtc, int i) \"QH @ 0x%08x - c %d, h %d, dtc %d, i %d\"\n+usb_ehci_qh_tbytes(uint32_t tbytes) \"updating tbytes to %d\"\n usb_ehci_qtd_ptrs(void *q, uint32_t addr, uint32_t nxt, uint32_t altnext) \"q %p - QTD @ 0x%08x: next 0x%08x altnext 0x%08x\"\n usb_ehci_qtd_fields(uint32_t addr, int tbytes, int cpage, int cerr, int pid) \"QTD @ 0x%08x - tbytes %d, cpage %d, cerr %d, pid %d\"\n usb_ehci_qtd_bits(uint32_t addr, int ioc, int active, int halt, int babble, int xacterr) \"QTD @ 0x%08x - ioc %d, active %d, halt %d, babble %d, xacterr %d\"\n@@ -100,13 +101,21 @@ usb_ehci_port_reset(uint32_t port, int enable) \"reset port #%d - %d\"\n usb_ehci_port_suspend(uint32_t port) \"port #%d\"\n usb_ehci_port_wakeup(uint32_t port) \"port #%d\"\n usb_ehci_port_resume(uint32_t port) \"port #%d\"\n+usb_ehci_port_disable(uint32_t port) \"port #%d\"\n usb_ehci_queue_action(void *q, const char *action) \"q %p: %s\"\n usb_ehci_packet_action(void *q, void *p, const char *action) \"q %p p %p: %s\"\n+usb_ehci_packet_submit(uint32_t qhaddr, uint32_t next, uint32_t qtdaddr, int pid, size_t len, int endp, int status, int actual_length) \"qh=0x%x, next=0x%x, qtd=0x%x, pid=0x%x, len=%zd, endp=0x%x, status=%d, actual_length=%d\"\n usb_ehci_irq(uint32_t level, uint32_t frindex, uint32_t sts, uint32_t mask) \"level %d, frindex 0x%04x, sts 0x%x, mask 0x%x\"\n usb_ehci_guest_bug(const char *reason) \"%s\"\n usb_ehci_doorbell_ring(void) \"\"\n usb_ehci_doorbell_ack(void) \"\"\n usb_ehci_dma_error(void) \"\"\n+usb_ehci_execute_complete(uint32_t qhaddr, uint32_t next, uint32_t qtdaddr, int status, int actual_length) \"qhaddr=0x%x, next=0x%x, qtdaddr=0x%x, status=%d, actual_length=%d\"\n+usb_ehci_fetchqh_reclaim_done(uint32_t qhaddr) \"QH 0x%08x H-bit set, reclamation status reset - done processing\"\n+usb_ehci_fetchqh_dbg(uint32_t qhaddr, uint32_t h, uint32_t halt, uint32_t active, uint32_t next) \"QH 0x%08x (h 0x%x halt 0x%x active 0x%x) next 0x%08x\"\n+usb_ehci_periodic_state_advance(uint32_t frame, uint32_t list, uint32_t entry) \"frame=%d, list=0x%x, entry=0x%x\"\n+usb_ehci_skipped_uframes(uint64_t skipped_uframes) \"skipped %\" PRIu64 \" uframes\"\n+usb_ehci_log(const char *msg) \"%s\"\n \n # hcd-uhci.c\n usb_uhci_reset(void) \"=== RESET ===\"\n", "prefixes": [ "v5", "06/18" ] }