get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2227044,
    "url": "http://patchwork.ozlabs.org/api/patches/2227044/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260423051804.362095-12-jamin_lin@aspeedtech.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/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": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260423051804.362095-12-jamin_lin@aspeedtech.com>",
    "list_archive_url": null,
    "date": "2026-04-23T05:18:19",
    "name": "[v4,11/17] hw/usb/hcd-ehci: Implement 64-bit qTD descriptor addressing",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "96ec54cffae83be300ce789f86c80f4e6523d07e",
    "submitter": {
        "id": 81768,
        "url": "http://patchwork.ozlabs.org/api/people/81768/?format=api",
        "name": "Jamin Lin",
        "email": "jamin_lin@aspeedtech.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260423051804.362095-12-jamin_lin@aspeedtech.com/mbox/",
    "series": [
        {
            "id": 501145,
            "url": "http://patchwork.ozlabs.org/api/series/501145/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501145",
            "date": "2026-04-23T05:18:08",
            "name": "hw/usb/ehci: Add 64-bit descriptor addressing support",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/501145/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2227044/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2227044/checks/",
    "tags": {},
    "related": [],
    "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=mDau36gO;\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 4g1PZ35zbkz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 15:20:43 +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 1wFmSz-0007yp-Gf; Thu, 23 Apr 2026 01:19:09 -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 1wFmSl-0007ec-FW; Thu, 23 Apr 2026 01:18:57 -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 1wFmSi-0003Bi-Mn; Thu, 23 Apr 2026 01:18:54 -0400",
            "from TYPPR06MB8206.apcprd06.prod.outlook.com (2603:1096:405:383::19)\n by KUXPR06MB8534.apcprd06.prod.outlook.com (2603:1096:d10:9d::22)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Thu, 23 Apr\n 2026 05:18:19 +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; Thu, 23 Apr 2026\n 05:18:19 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=brToAyJLlW3cejg+WiLB96rE2MBf1a/YDvvEUifD7sy+XtdJGWU5B1SQTNBeqbE5SNRJ9S22Cvf5m6luTVzBJIGnc1IglXxU/pEnWSZ05wlzj+vh1GCgzNsTwpaL4PuiOnmbP8y2q+KtisY7cb/CsgSW+s/MpZNoCBs/tXc3eWegRtuAq0L7Eg+0Z+fTSgICCIMmgefI7ElxZ5svD2B9KfzZbVpfsp7DTEckJzNlNeuKkVdI4GXxyyyRaY4ixXSaM30a8zh6CgJKxPdurAXXZWUcp8Yn0qJ9bT5z9WQhoHp8amXKEa/KZezCCKBU2yrOd8qyagY25YAyUWT0bYyLfw==",
        "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=9rRaAH+M0gmGI75Fu9T+UdOCeNggmfgzhvnjrKg1krs=;\n b=JzxVkmEIKQwRoT2zqeuyu0yxrthTGwbkfvuwkWiPkugEPR/hPm3lbJzhXF9zX3goJ3FzLAXyvODjf0Ih0lsGL4Qq5s+Jkaibm3bBVH/kN+1Jztw7dHJ2RC4Dh4MMOI/qh+COogHArCrYB8jc+7wUjClgYORUvPn2OER+TsElYBEbqdNHCH+1FJfhOVSn6KAQnHMBV1sdZGS3GMHZ3W7FWyLKNzAUrPn1wmOZjyCmnlLcW9KwzkuzY1ioVdCc+vkyWJMoZgV5LhtJHiGvCtMjwMdm4+26D0Zy5yp1xZaRttkUiR7uICQTcQ8SI9UQJKG04y61gHm5oyzWvnwcYtG+Ng==",
        "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=9rRaAH+M0gmGI75Fu9T+UdOCeNggmfgzhvnjrKg1krs=;\n b=mDau36gO6PBsHN4FotY6z1172hlCGnix1rCfMuTX3vGDDI8juRn5fDWL5Iimn8ENRUlm0LLQrCEx1so3AoFHDlA0z21kgIIydIfmmUclPjITFaUVufBELSQGe4/psLE+yKmxogMUC58L1dG1RBHyimyp6K74Q4fxToX04x1L/bVZkRg8uSENYsbBH2hFivVlMZ+1six7uqIz6o52B+d/Oy51hfTOZc6XiFxIen9jxukWzw7eGbzvmWfa7i+VSDKS0fE3LJ//fyxRhokXDy0KEItiYHT0/fTouz5lA/R7ps2V81w/ID+rH3cKedNXzcaLEkEKpD6fGaShxnFCu85FXQ==",
        "From": "Jamin Lin <jamin_lin@aspeedtech.com>",
        "To": "\"philmd@linaro.org\" <philmd@linaro.org>,\n \"peterx@redhat.com\" <peterx@redhat.com>,\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 \"open list:ASPEED BMCs\" <qemu-arm@nongnu.org>,\n \"open list:All patches CC here\" <qemu-devel@nongnu.org>",
        "CC": "Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>,\n \"flwu@google.com\" <flwu@google.com>, \"nabihestefan@google.com\"\n <nabihestefan@google.com>, \"farosas@suse.de\" <farosas@suse.de>",
        "Subject": "[PATCH v4 11/17] hw/usb/hcd-ehci: Implement 64-bit qTD descriptor\n addressing",
        "Thread-Topic": "[PATCH v4 11/17] hw/usb/hcd-ehci: Implement 64-bit qTD\n descriptor addressing",
        "Thread-Index": "AQHc0uCYq6WxQ7L2K0eBau4NvrkAqA==",
        "Date": "Thu, 23 Apr 2026 05:18:19 +0000",
        "Message-ID": "<20260423051804.362095-12-jamin_lin@aspeedtech.com>",
        "References": "<20260423051804.362095-1-jamin_lin@aspeedtech.com>",
        "In-Reply-To": "<20260423051804.362095-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=mDau36gO;\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_|KUXPR06MB8534:EE_",
        "x-ms-office365-filtering-correlation-id": "42e7a575-c727-4365-9476-08dea0f7bb33",
        "x-ms-exchange-senderadcheck": "1",
        "x-ms-exchange-antispam-relay": "0",
        "x-microsoft-antispam": "BCL:0;\n ARA:13230040|376014|7416014|1800799024|366016|38070700021|921020|18002099003|22082099003|56012099003;",
        "x-microsoft-antispam-message-info": "\n 2kD+IP7QU2zPPR+tLLhzkAhOasYfWdOPVMEZqE+eS/f9TBb9ckCgtHKG9a52+HNp3D3tgtadU6bbjkoUnqH+SV6lNM7dw4X7Bc6v6XZ66xnKHtoHRm1tDm8PV60Vp3q3bPgsAlmFEQLUgIFY5p7Yo9GM4MzvZuWxbOJABdQzGRuf6BMKVjeGgSxmIp3WgNCvOjBdxLvpUBoXQuBT49y5Ndchgw+cBq3lXlxxC1KLDu4ZaUXFW9LeMtR9ubPoyFHOHXxE9bOJ7yLKCr8gfgRrbpmsEyx/2kZxn3bUyJwwxi9wCOq8psBLmopYh4cXadwXF0x0yquaQn2KDH4LPsLLxzYgNRCeXnBtnnsCREM+uV6k3v55/LhEXBQobor+CCSRURzJdjSudZOUC/A/Wux8Yk+szap4zDPYU/HR4XAq/7pjIrqUByWXl87JXMjFOBHBkCSKnHZk9p6p6EsM4pyrr7QapjUT3gqdSPC8GklGKxVuFP8IO/9iT2NX55fwLAv7Cckk/HUvpkOQglKd5uw25ifHsZRTCQkg5lEZVeoCA2I6biK5MbDswK68Q7obR4x6q3xJ1eG11m0ykpNK+Kq75VM3TU0pIpSEkZp3xn1V0cxvJGfcTWHphlyyGeR1fYnV/thiUv2z6eR8yOxn5lpVl3mXdpy8IkeBz1CvSMcfXYFarb6sz5PH+QlUunrpJzdpvBlpyU6T2XN9uhUmdEkko+HM3CwLblRTDaUCXnEfrLGI/hU9MeNpYInPgaEBFan9rQIpXiUeIOxkhh3R1B+rANt/LtzT/QSMfF+ahSk60KVPpu0XvZmBYx/jc7DIY0wU",
        "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)(376014)(7416014)(1800799024)(366016)(38070700021)(921020)(18002099003)(22082099003)(56012099003);\n DIR:OUT; SFP:1102;",
        "x-ms-exchange-antispam-messagedata-chunkcount": "1",
        "x-ms-exchange-antispam-messagedata-0": "=?iso-8859-1?q?T3dg9r6qqG6xHFQ1+IP+4ZS?=\n\t=?iso-8859-1?q?QWXZ9jnYpZQSx3NKCjqloSmivtOj6a/8Usv9TkY8oYtV2IHkNgDBymeRzRBB?=\n\t=?iso-8859-1?q?VkIinMD09bBx3k4069rhgqV24O+a2UWYvRV0m6Yi3KD5D5lWhAAHKP5NGE4u?=\n\t=?iso-8859-1?q?2EdS5XJ9LD6gKSUdZ4fOHZZYhRCArm3/VN1ZeHErV9YfFUoYIT3x7RZbLVnn?=\n\t=?iso-8859-1?q?P9LfmVSHBxzA1nZxG3j/aUmJ45fgUzPVMASYpCExqxqC201g9CbMnuOsXeO5?=\n\t=?iso-8859-1?q?7CC9qysCAUGeIcBrntse8LkMYPIU/FiwbpghhOg3uFUaGZjg6p5Z49UMyWcu?=\n\t=?iso-8859-1?q?SPXWiMUIo4yOAAgzqYpdTC2sG6/C5H5SLDiyLg6fkqI2PT1jkuOl02rbRN+I?=\n\t=?iso-8859-1?q?vcRYpYSf7mbySHDUW1W6a/0mDNMzRoberS3nAS8aMaC42s0pURUc/SzDQkYE?=\n\t=?iso-8859-1?q?Ju/3wKNeGte+SFyxwGGTWnTEfpGAzq73T4Mf5ToMul0/kTNCukRIax9J5wIn?=\n\t=?iso-8859-1?q?ALQIL1oxuhYgRrDZFqJup+O5zJxUSKLCS2OMceP/IOtHLe8EzU39nsNUivza?=\n\t=?iso-8859-1?q?thxZ/O+ukdrTcHwsUi5dKYGQRh8cEbsbg8lEIz5novzp/zL6qnLSObgnjL2m?=\n\t=?iso-8859-1?q?G2twOasochUKcJnuA+/tUxYu4QW20Iuvx9UbEZa6kBAqFj0eNwSAxb0ZC5BZ?=\n\t=?iso-8859-1?q?aj9WqfbdVerEcNxSSaBFpTOSnU0ouu8dTO5gkV+9TSoZpeypKfQ55fC/cwEM?=\n\t=?iso-8859-1?q?4wthkjefs3ydIyXwp13PGwrGqBUsIfD1HUOk/FRsUE4kGwcVFHPZTH083hU3?=\n\t=?iso-8859-1?q?EK0ce9JPZRDT93hbeuF+D88J59wsDEw/WigoNwbcG3tq6HsC8XKbFTFPyntv?=\n\t=?iso-8859-1?q?cL06D/TWuzNgv9XoPZApV+YkeLdNaz+90MJ4C54ilex04t9Z4fy3ETQi86ks?=\n\t=?iso-8859-1?q?7+wj09z9AvBjx0vC7Mt//Rb733u6BxIcWgmxJp+bykIhAAsoeMLpLqINRl7p?=\n\t=?iso-8859-1?q?ApK7yxf/uRywbpSQlPImGnV3lQlZ8eqDvSRn3ddKJx3lI+thq+cvlbeYr0BY?=\n\t=?iso-8859-1?q?lf3HKe1IWTyd40v6VrRMZhUblC82rNMZx8Q52Gp07XN1q/GFx3araRTMgL3z?=\n\t=?iso-8859-1?q?4Qfj1GoB+gKgjWY4Dv6UCb+1e7H1QQZR8JCHQLLIzVomaqoVSTaxU2i2JwoV?=\n\t=?iso-8859-1?q?8/TJd/CbzooaUWeH5e/z/TZOhrgYoDIQ7K3TVp+M4H0ae0CNcI70Z4WmoApy?=\n\t=?iso-8859-1?q?usUJx/e/pdD0kMAnCODNV9FZHiRGFhs6QM+m7hZSGKNuU8mXX6VPUOrzihZI?=\n\t=?iso-8859-1?q?NpQy5m72/Ynz5XrdY7ZeQbwwuHIcswxVWzrjzvFPPifS2GFZTbTGqfD2zRuN?=\n\t=?iso-8859-1?q?yXibwKYy6R7OELsH95pxytaEtdFE2SwLlejosiP4gsaGFxD5aFYZTPdZUdSs?=\n\t=?iso-8859-1?q?tsX8gsmQG4k90sBcFBevBnbzG4U0PJalTa+3+IHdQeGV2DOH7pTzkn7glDn6?=\n\t=?iso-8859-1?q?mltNc7XJyYFIMU8R9L9TO9ad6VuaffrAhzU5nv9lO0ev980WxNeEb+p7nGNg?=\n\t=?iso-8859-1?q?TuJF3yAoIvUPNOZ9k4rf3pWkj50FYEAt005EToP0qafVtODwtv0oFeMigutV?=\n\t=?iso-8859-1?q?MI/pzFhSo3tOfhuBj35YtRfhhONsRZCaK5mLv2Y8yi8YyAbX++0LvuKUZXXQ?=\n\t=?iso-8859-1?q?DZSY3QyF2IifnG36R5JK79T09DC0qjq7bE1qXu8fmgslGlVvScOPCx2+XC7m?=\n\t=?iso-8859-1?q?FLRPl+x9eFpMvyGwa5i7jnkz2bYyz2+D3YlyeSlOCNxykQg=3D=3D?=",
        "Content-Type": "text/plain; charset=\"iso-8859-1\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-Exchange-RoutingPolicyChecked": "\n m4toN6JUfe9XDLWjoOcGjQRTaiOMfMP4e3EOuQLD14eSWrRBBBnIGmFxZFnh5NbTneYgD/FYqKxAfGOyadCJAlLpUP5FF0shQNrITA0xhNtwXtwMmKJlGy+ogqFoCkGQODc1xOy9BUlM1IYxhYaH+fjmoy1Rbi/8HkmYTEoSIn9n8/k7zarhbng6jmyUkfdgg/qlPlLrTs47rmMFqEMXBOcSPiblHvgE1JTUJNF2MiGNwTlKTMa6Nvj/TeKMTC/lbcfdtrfgYlts08xHTKHkE/9pcrhN6yyg8FjqqpO3wK6GhlFZ7CvYd7h1L5vF8touFLOKaMNsXjlymUB7f1kpKQ==",
        "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 42e7a575-c727-4365-9476-08dea0f7bb33",
        "X-MS-Exchange-CrossTenant-originalarrivaltime": "23 Apr 2026 05:18:19.0096 (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 70LPUF6374XUpme07KqrzNRZOz5Dd6c4SJaiTkVen4vP7uxJZQfZu4v9B/aZstUdoOuRF4twTRwshM+/wXp+CiRxg5ZxLvDwvssGtKjN5cQ=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "KUXPR06MB8534",
        "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": "EHCI supports 64-bit addressing when the 64-bit Addressing Capability\nbit in HCCPARAMS is set. In that mode, the CTRLDSSEGMENT register\nprovides the upper 32 bits that are concatenated with 32-bit link\npointer values to form 64-bit control data structure addresses\n(EHCI 1.0, section 2.3.5 and Appendix B).\n\nqTD link pointers (current_qtd/next_qtd/altnext_qtd and qTD.next)\nare stored as 32-bit values in the data structures and must be\nexpanded to full 64-bit descriptor addresses when 64-bit mode is\nenabled. Update the qTD traversal paths to use ehci_get_desc_addr()\nwhen following link pointers.\n\nAppendix B also defines high dword fields for qTD buffer pointers.\nAdd bufptr_hi[5] to EHCIqtd and extend qTD fetch and QH overlay\nhandling to load and propagate the high buffer pointer fields.\n\nWhen 64-bit capability is disabled, descriptor and buffer addresses\nremain 32-bit and existing behaviour is unchanged.\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 |  1 +\n hw/usb/hcd-ehci.c | 19 ++++++++++++-------\n 2 files changed, 13 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h\nindex 3428839ec6..fc66aacd9f 100644\n--- a/hw/usb/hcd-ehci.h\n+++ b/hw/usb/hcd-ehci.h\n@@ -139,6 +139,7 @@ typedef struct EHCIqtd {\n     uint32_t bufptr[5];               /* Standard buffer pointer */\n #define QTD_BUFPTR_MASK               0xfffff000\n #define QTD_BUFPTR_SH                 12\n+    uint32_t bufptr_hi[5];\n } EHCIqtd;\n \n /* QH overlay: altnext_qtd, token, bufptr[5], bufptr_hi[5] */\ndiff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c\nindex 5ffd4c9885..e82e0f625c 100644\n--- a/hw/usb/hcd-ehci.c\n+++ b/hw/usb/hcd-ehci.c\n@@ -472,7 +472,8 @@ static bool ehci_verify_qtd(EHCIPacket *p, EHCIqtd *qtd)\n             (p->qtd.next != qtd->next)) ||\n         (!NLPTR_TBIT(p->qtd.altnext) && (p->qtd.altnext != qtd->altnext)) ||\n         p->qtd.token != qtd->token ||\n-        p->qtd.bufptr[0] != qtd->bufptr[0]) {\n+        p->qtd.bufptr[0] != qtd->bufptr[0] ||\n+        p->qtd.bufptr_hi[0] != qtd->bufptr_hi[0]) {\n         return false;\n     } else {\n         return true;\n@@ -1200,6 +1201,7 @@ static int ehci_qh_do_overlay(EHCIQueue *q)\n \n     for (i = 0; i < 5; i++) {\n         q->qh.bufptr[i] = p->qtd.bufptr[i];\n+        q->qh.bufptr_hi[i] = p->qtd.bufptr_hi[i];\n     }\n \n     if (!(q->qh.epchar & QH_EPCHAR_DTC)) {\n@@ -1233,7 +1235,8 @@ static int ehci_init_transfer(EHCIPacket *p)\n             return -1;\n         }\n \n-        page  = p->qtd.bufptr[cpage] & QTD_BUFPTR_MASK;\n+        page = ehci_get_buf_addr(p->queue->ehci, p->qtd.bufptr_hi[cpage],\n+                                 p->qtd.bufptr[cpage], QTD_BUFPTR_MASK);\n         page += offset;\n         plen  = bytes;\n         if (plen > 4096 - offset) {\n@@ -1727,7 +1730,7 @@ static EHCIQueue *ehci_state_fetchqh(EHCIState *ehci, int async)\n     } else if ((q->qh.token & QTD_TOKEN_ACTIVE) &&\n                (NLPTR_TBIT(q->qh.current_qtd) == 0) &&\n                (q->qh.current_qtd != 0)) {\n-        q->qtdaddr = q->qh.current_qtd;\n+        q->qtdaddr = ehci_get_desc_addr(ehci, q->qh.current_qtd);\n         ehci_set_state(ehci, async, EST_FETCHQTD);\n \n     } else {\n@@ -1805,14 +1808,14 @@ static int ehci_state_advqueue(EHCIQueue *q)\n      */\n     if (((q->qh.token & QTD_TOKEN_TBYTES_MASK) != 0) &&\n         (NLPTR_TBIT(q->qh.altnext_qtd) == 0)) {\n-        q->qtdaddr = q->qh.altnext_qtd;\n+        q->qtdaddr = ehci_get_desc_addr(q->ehci, q->qh.altnext_qtd);\n         ehci_set_state(q->ehci, q->async, EST_FETCHQTD);\n \n     /*\n      *  next qTD is valid\n      */\n     } else if (NLPTR_TBIT(q->qh.next_qtd) == 0) {\n-        q->qtdaddr = q->qh.next_qtd;\n+        q->qtdaddr = ehci_get_desc_addr(q->ehci, q->qh.next_qtd);\n         ehci_set_state(q->ehci, q->async, EST_FETCHQTD);\n \n     /*\n@@ -1841,7 +1844,9 @@ static int ehci_state_fetchqtd(EHCIQueue *q)\n     if (get_dwords(q->ehci, addr +  0, &qtd.next,    1) < 0 ||\n         get_dwords(q->ehci, addr +  4, &qtd.altnext, 1) < 0 ||\n         get_dwords(q->ehci, addr + 12, qtd.bufptr,\n-                   ARRAY_SIZE(qtd.bufptr)) < 0) {\n+                   ARRAY_SIZE(qtd.bufptr)) < 0 ||\n+        get_dwords(q->ehci, addr + 32, qtd.bufptr_hi,\n+                   ARRAY_SIZE(qtd.bufptr_hi)) < 0) {\n         return 0;\n     }\n     ehci_trace_qtd(q, NLPTR_GET(q->qtdaddr), &qtd);\n@@ -1922,7 +1927,7 @@ static int ehci_fill_queue(EHCIPacket *p)\n         if (NLPTR_TBIT(qtd.next) != 0) {\n             break;\n         }\n-        qtdaddr = qtd.next;\n+        qtdaddr = ehci_get_desc_addr(q->ehci, qtd.next);\n         /*\n          * Detect circular td lists, Windows creates these, counting on the\n          * active bit going low after execution to make the queue stop.\n",
    "prefixes": [
        "v4",
        "11/17"
    ]
}