From nobody Sat Apr 11 21:30:04 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; arc=pass (i=1 dmarc=pass fromdomain=aspeedtech.com); dmarc=pass(p=quarantine dis=none) header.from=aspeedtech.com ARC-Seal: i=2; a=rsa-sha256; t=1773214197; cv=pass; d=zohomail.com; s=zohoarc; b=VX/cMtc72FgWQOYk9z97KroTO022Q3NWDUBhqRswJIz8G0w8SWjEfhHdxYWxp4p1mKP5QAFMJkO04gFiZ7nC2xhj4xDvaTzL/MiK8JLbUDPlCr63ROIybJPVil7o9wBV+lWfUmE1d0SHJ7CuUVYImUbwItkMYP3P4GfJ3jPvwEc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773214197; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fJBCA5XwgfK4rDNiNu9bZxoB9aW6F7TGCk+QpvErKjI=; b=cTvtgjhWQjYOM2zuUm1XoLxVVTOSt0w4i8N59mcanslUzQRDKYm6iPrK4I/4N58GJi+NTQCcZv3S55oLODTgIyCtZ1ncEBakUS2VDBmGlCnlUmqmCet62KvmzfbGbwQ4IXSeC7PVaDYD8hOYTKJTgNbrsH07VCo5liJcTiyxo9M= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=aspeedtech.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177321419792877.20953011045378; Wed, 11 Mar 2026 00:29:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w0Dyq-0003xH-0Y; Wed, 11 Mar 2026 03:27:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w0Dxy-00033z-8z; Wed, 11 Mar 2026 03:26:54 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w0Dxv-00052E-QR; Wed, 11 Mar 2026 03:26:49 -0400 Received: from TYPPR06MB8206.apcprd06.prod.outlook.com (2603:1096:405:383::19) by SE2PPFD6A65AC07.apcprd06.prod.outlook.com (2603:1096:108:1::7ee) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.20; Wed, 11 Mar 2026 07:26:24 +0000 Received: from TYPPR06MB8206.apcprd06.prod.outlook.com ([fe80::e659:1ead:77cb:f6d3]) by TYPPR06MB8206.apcprd06.prod.outlook.com ([fe80::e659:1ead:77cb:f6d3%3]) with mapi id 15.20.9700.010; Wed, 11 Mar 2026 07:26:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IfGBSjOE35ENfzGwjUSZ/Dq5e4UdhgcmP/t7QuDIyszKaQhoWcbWPgXc33dZ/zt9oY8hyejzYFHokNe4+Uwx3Yix8qSk8UtDdAy4Gx/vt7C4uQfRonlKiJ0Qs1JYnMna4E8eDvi5rKHe8iLcDWxmKsqjeeGfAllVHWULWdU+kyysOWPW3zUzV0NZyXA/c2iwyHN1x1gOgdG3jpNAw4tCpButSSSU/pYgu/UDn6zy5Dfd5qCBPls3Cm6iO1kLfRdrYARRmY8TS8pAudPC1ArUeIFOk3P+5cz3WE4iFalkdkIhXkpSAI4MHokJ5PAFZr4PFvBTJj2NmN27PMKZ5a4iyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=fJBCA5XwgfK4rDNiNu9bZxoB9aW6F7TGCk+QpvErKjI=; b=boeyCQObRM8hu8bTJ0WMJN6m0hWZFa1haVUNPMwpL8MZc7P1YU3+2tEf2/eI0hi8dajfMjN8Kcg2nHosqpYg0xxCzraMI7XWtIZtJUivXq4iZCHNXLf688pspYk5iLc3vUtJJ//A4qVoFdGOotZIPkHL5LLfxOPUdDgrVlZvyjltm6syVOGHiKMBLFTlvUEw0wp7WRdRtLnPYOxY2xsqLl0vHcRK7PDBJBt9aX9ANUZzA8U1usIfv5vlEO2X0IrAxdDWMKOj7Sjv1jgtrENnuqWVl7Rb5tWHHCbs8L2H0LnsQC9+6IedS+FtWuXB0N0hqmyJ2QgqW6X4d441yNT2FQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fJBCA5XwgfK4rDNiNu9bZxoB9aW6F7TGCk+QpvErKjI=; b=JY2h882U6BSXJjtjL997DONe+I/NVHlQNZNUVcoJ0n1+XszFfNOmBALXtijnU4Y0rtm+jAf9q6Qjbnsmr2tZCc8UsOLfzHnADvbrMxxcEAjr7q5pi7mj2PmmUl3rMoXRs0OCT6LAxn/iTTar+fv3U8Zglu/8RHONgAGLs9lO4TsxZ/NWGEflfRzYuBGJ+d0lL3ai9SbWErQzcGvl78XPLrVxwA2hLl7gJ66TcrEby1Xw7tiUvVm52L+QWVR/ZEIlPb4f+hy7ysFtYZUi19Slr9zGgpT7HYb78XcprIz+s7+7B7x6EcA9obzEqVlZQR0YaowzrzXBLhzJCF5WZGWpPA== From: Jamin Lin To: =?iso-8859-1?Q?C=E9dric_Le_Goater?= , Peter Maydell , Steven Lee , Troy Lee , Andrew Jeffery , Joel Stanley , "open list:ASPEED BMCs" , "open list:All patches CC here" CC: Jamin Lin , Troy Lee , Kane Chen , "flwu@google.com" , "nabihestefan@google.com" Subject: [PATCH v1 07/13] hw/usb/hcd-ehci: Implement 64-bit QH descriptor addressing Thread-Topic: [PATCH v1 07/13] hw/usb/hcd-ehci: Implement 64-bit QH descriptor addressing Thread-Index: AQHcsShdtlTDceAZ10KDqmxaDHilIQ== Date: Wed, 11 Mar 2026 07:26:24 +0000 Message-ID: <20260311072614.1095587-8-jamin_lin@aspeedtech.com> References: <20260311072614.1095587-1-jamin_lin@aspeedtech.com> In-Reply-To: <20260311072614.1095587-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: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=aspeedtech.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYPPR06MB8206:EE_|SE2PPFD6A65AC07:EE_ x-ms-office365-filtering-correlation-id: de64abc3-e6fd-422b-bf1c-08de7f3f8039 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|38070700021|7142099003|56012099003|22082099003|18002099003; x-microsoft-antispam-message-info: Im2axwB7v3Ix8SCYM3GIZLS5r8l39MJZwoBPVOKt5Bl5hntXBYCWr3x5Az8OGdqN+4ORbOnu6BPYT9oL6hdsZJyT4VHOh56vK+Tu5N+ROC9Vctsrf4pxfu4bnIe6AGHwiZ1sfWwuIVx3rJqrB57BelvaI+kEyvQtNgKii9YEHvXIsNUJgzBfHoBieTfPKVoTthaLRmwzK5AYKref9cGXjga8ewfI5wBiHdA6HlWZcoL3cAyLlLUh7vB4blJ10+j5C11I0DhFFhT5uDFm64rHdypZPvIAPtimQWanWh7d11x8BKWYrXDPyOrMF2mzerDZvXiru0xCf6zZ9xnVNtJBB1t1o9HX/AR3ZAtxYT1MPOdbOn/auwSM4sZI3as35INjCDksucd4j5PBR4DyYLOYZ9gMU31oIqiqK5QRgpxtn97LBn898JgxxT29YVYf5/4758kS3PWTzr2oeVdTywY+/n1UYIWQYhJgH7ZvR5iBtJxZvuGUlrr7NQN8xgSOxaiKFF43NdX7vdndTeRvvm3mS6I+mbGy48cdDMqLjaZ7VxQFtucSrhKENfoumd4jjCrFxbY7B7sEuOCsYgAf5J41l/DHpUHe5lFi6kKVs7DBc6/wm7mY82QXFHJAZRmQ898vYlztqnIZ/cKbw5zKSs38BRB1PEqgkyGDaFu5TH92HbJYRSEsBK3QkeBUwCxZ5NxBNN1902p6OLj3Ej06kP9sx3CIm3ZOLjmVmgyrZxwLCc/htxFfOtgBZ+5PMyGrMm1kFkI2or1RcKzmIwar1ytCl2Jl1NQpVeYv7NB02o42EFw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYPPR06MB8206.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(38070700021)(7142099003)(56012099003)(22082099003)(18002099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Syrypo/XNqT67Ial6GQlOuz9vSOA/gnHUquxf0nk7nwMHumT9gceQrrVF9?= =?iso-8859-1?Q?9QC0fRj6cwI7Ffxn5+SdBViyi9MarH6rJeMoJpnL0VQEPRRSu9WZT8qlbc?= =?iso-8859-1?Q?WcUrgs3768aUiFBM1gt19UG1gghU8MesomvJ+GN5+MhcIrPD0AC9rUXP2e?= =?iso-8859-1?Q?6HJLCQWOAmpoJMYVgzLM4YAQl5AT3dTG0R2tosWUNGrAbculSuH8uFEwdW?= =?iso-8859-1?Q?nfQnu54wWdu6Hxl5MGIewmmUd9eUnMQrG/jxWru1/LCs4gf15UO/Am7CiE?= =?iso-8859-1?Q?PNX7TaMLLevJv8/wWdduiMvkR5YWZoRztMPlHN9eNO1nTK/fwOiokC/uuS?= =?iso-8859-1?Q?op5fE2xuODY87sLtb2u6ItNSLLPCI+EA7uQHbE37/IPK50BdKlwTDpZGLs?= =?iso-8859-1?Q?LS5zNRaFZfi+Ct+mjMGduB0p1ioYtOypBsHE2C2gCwdWIdwYoP9wj8M0/B?= =?iso-8859-1?Q?wODJgcjy8EnJIOs1gIdzgAP7rQNorK5ClEFfyd/Kex1T6A4HIiwZXxjpYE?= =?iso-8859-1?Q?Y3NOo/SOOGCYNmSnopSO/A5EAJSPSEAHtYtrWsto9SGMhxULSt5Spl64Qk?= =?iso-8859-1?Q?bbJ8h1HU3GhPpKopEC9guad+XYmpR+zo8w0EdAdNNFZGJeyec/UV74+Q7F?= =?iso-8859-1?Q?wq/t+CXSMld1y1G2DRim+GulKWYmxbFKUR9rSdcFBfyI3+ADAt0jqOaAxl?= =?iso-8859-1?Q?3ZCQDx5ODCQTe2Z2HbB/oSioG2iOwyFIUhzZ8u5x0+cZW+JB2Tabm0rZjr?= =?iso-8859-1?Q?jk7BQ0fQw1InHvTH2sicQWJ4v6hsbP/pDgYb3LqUav1bWDfKU17gzimzME?= =?iso-8859-1?Q?i6xmOHtAK5aanLRtoyyllvDC3A06ng4+KgAb1ziRAEAl1Mgh8+uMYKETuA?= =?iso-8859-1?Q?mPdsAIEFnn5Hau54oRNVk85KKZ5Pq3y8468aLy7+fMs57DnclWFUhJnDkN?= =?iso-8859-1?Q?U24b3Bf/86a/lTbqlS7G4eTPh8N/flQPjTu54BoxXmh25luWI4m2uxdqEa?= =?iso-8859-1?Q?lWMh7SWZT62RjLemfDJr30st2emgcsiv7nYJiiFGnwgvG/fmpZccBZj/4i?= =?iso-8859-1?Q?Z3EHSQ+2S0VbLjnh1VsYwc1zpdlMWho/U42nQd+lNhRlfOQRtJ9qMKjfmR?= =?iso-8859-1?Q?leamoVXr+x8pTO5HmK2BC7/Xc0zUcTmR9n297O+1mgA/NI/D1TK3gtUZei?= =?iso-8859-1?Q?yPZ7ayyScWKmSNLzNhQucezX7VMCa4eRZKCinaz9phX3oMuwNiQrHJhKij?= =?iso-8859-1?Q?Bk3dmJKgOWrQU3Wm8Bh+iP7HFUtp5kusfxxOxUp/O2kM1o5NR2sS5EUO8y?= =?iso-8859-1?Q?F472YoprfyWpa4jnVbiFWsKsvqDyjGQ1KUddwKqg+wPlr4VvHVkDaXA7Ol?= =?iso-8859-1?Q?wnpK/6W48Uy2crf/MT+ZesQdfHLztfRLfwns8vrQGyWCR9CgbtizaWJECM?= =?iso-8859-1?Q?a7ArXuRApujSHKCPuDz9RNpclM1+HOnQzwHwEXCgBE3tOCChEc2CP5tOnf?= =?iso-8859-1?Q?YJRPKrtr7IGuGOI4WTXbwOJN9SScdHkHHZWKqnGZO5wpdgxgvMefC/XXZZ?= =?iso-8859-1?Q?2m6tAoiXz7GWCT4NU4Vt1b9juoDkul/TVxy3Vyb++TbzuTnsziLUe1C9t3?= =?iso-8859-1?Q?sYSDywlzZGwMEpnSanoh7+kBm+mgTjvgTXml+S5F0MHX0s6p2dPnF3hhaU?= =?iso-8859-1?Q?GQw7E+XL8kOYAMw+zN4rIv3MJc4XqhtVc+invKt7uiI1APogUjEIKODMb7?= =?iso-8859-1?Q?R6CkJ1aORNmsVgVsCssf2VQeLK+CJyKY49Gc+ZCosOgDsBAURaAHkv3nKL?= =?iso-8859-1?Q?VfzacN8qKw=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: ca30z3JRpuPqplGJ9rQV+mRB+wcbWNuCdcGVPobZj6G7jvHHzS+2x9wSSJCLZfaGjyShwJfjvUrkbxLtLRVwzyp/MlxdcShB1imvOZvLsjiNv1CQteinwa2flix4zekApOb/IIHDDNuPUU4pH5yksPXR/C/BitJb/tGUk+zOWaYQPB72jGC3EpVYUKXQcXTSGzjlDJw9QMAmyrShTqnSvj4u4633EmlesrX3FR1iO6HiudlfGup+s6M8oEeUs8VigHUf9RrpNg4+3d2kxecsDwcfsxY5oEYRgHYEguoChOHEmHcaAVb9ru4Mln/FJxJN47z/08YQdOBAGaYd8BeccA== 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: de64abc3-e6fd-422b-bf1c-08de7f3f8039 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Mar 2026 07:26:24.4011 (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: Af20WYfx+VyCbdkk1dKuSV6Xk/he3KY2sCVUVFcPVhrBEDn7Jnm57+d1oHBal5OKx6XGnoTUogfRCFIfHMqnlumRFZK3QfC4XuHqRfvLU0M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SE2PPFD6A65AC07 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=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=jamin_lin@aspeedtech.com; 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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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 @aspeedtech.com) X-ZM-MESSAGEID: 1773214199496158501 Content-Type: text/plain; charset="utf-8" EHCI supports 64-bit control data structure addressing when the 64-bit Addressing Capability bit in HCCPARAMS is set. In that mode, the CTRLDSSEGMENT register supplies the upper 32 bits which are concatenated with 32-bit link pointer fields to form full 64-bit descriptor addresses (EHCI 1.0, section 2.3.5 and Appendix B). The current implementation assumes 32-bit QH descriptor addresses and directly uses link pointer values without applying the CTRLDSSEGMENT upper dword. Introduce a helper, ehci_get_desc_addr(), to construct full 64-bit descriptor addresses when 64-bit capability is enabled. Update QH traversal paths (async list walk, horizontal QH link, and periodic schedule entry handling) to use the translated 64-bit addresses. Also add bufptr_hi[5] to EHCIqh to support 64-bit buffer pointer fields as defined in Appendix B. When 64-bit capability is disabled, descriptor addresses remain 32-bit and existing behaviour is unchanged. Signed-off-by: Jamin Lin --- hw/usb/hcd-ehci.h | 1 + hw/usb/hcd-ehci.c | 45 ++++++++++++++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h index 7dc6d151cc..f18150c352 100644 --- a/hw/usb/hcd-ehci.h +++ b/hw/usb/hcd-ehci.h @@ -204,6 +204,7 @@ typedef struct EHCIqh { #define BUFPTR_FRAMETAG_MASK 0x0000001f #define BUFPTR_SBYTES_MASK 0x00000fe0 #define BUFPTR_SBYTES_SH 5 + uint32_t bufptr_hi[5]; } EHCIqh; =20 /* diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index d7a0917caf..8fd3fd60c4 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -146,6 +146,18 @@ static const char *addr2str(hwaddr addr) return nr2str(ehci_mmio_names, ARRAY_SIZE(ehci_mmio_names), addr); } =20 +static uint64_t ehci_get_desc_addr(EHCIState *s, uint32_t low) +{ + uint64_t addr; + + addr =3D (uint64_t)low; + if (s->caps_64bit_addr) { + addr |=3D (uint64_t)s->ctrldssegment << 32; + } + + return addr; +} + static void ehci_trace_usbsts(uint32_t mask, int state) { /* interrupts */ @@ -438,8 +450,9 @@ static bool ehci_verify_qh(EHCIQueue *q, EHCIqh *qh) (endp !=3D get_field(q->qh.epchar, QH_EPCHAR_EP)) || (qh->current_qtd !=3D q->qh.current_qtd) || (q->async && qh->next_qtd !=3D q->qh.next_qtd) || + /* 1 altnext_qtd + 1 token + 5 bufptr + 5 bufptr_hi */ (memcmp(&qh->altnext_qtd, &q->qh.altnext_qtd, - 7 * sizeof(uint32_t)) !=3D 0) || + 12 * sizeof(uint32_t)) !=3D 0) || (q->dev !=3D NULL && q->dev->addr !=3D devaddr)) { return false; } else { @@ -1534,7 +1547,9 @@ static int ehci_state_waitlisthead(EHCIState *ehci, = int async) EHCIqh qh; int i =3D 0; int again =3D 0; - uint64_t entry =3D ehci->asynclistaddr; + uint64_t entry =3D 0; + + entry =3D ehci_get_desc_addr(ehci, ehci->asynclistaddr); =20 /* set reclamation flag at start event (4.8.6) */ if (async) { @@ -1562,8 +1577,8 @@ static int ehci_state_waitlisthead(EHCIState *ehci, = int async) goto out; } =20 - entry =3D qh.next; - if (entry =3D=3D ehci->asynclistaddr) { + entry =3D ehci_get_desc_addr(ehci, qh.next); + if (entry =3D=3D ehci_get_desc_addr(ehci, ehci->asynclistaddr)) { break; } } @@ -1688,7 +1703,7 @@ static EHCIQueue *ehci_state_fetchqh(EHCIState *ehci,= int async) } =20 #if EHCI_DEBUG - if (q->qhaddr !=3D q->qh.next) { + if (q->qhaddr !=3D ehci_get_desc_addr(ehci, q->qh.next)) { DPRINTF("FETCHQH: QH 0x%" PRIx64 " (h %x halt %x active %x) next 0x%08x\n", q->qhaddr, @@ -1879,10 +1894,12 @@ static int ehci_state_fetchqtd(EHCIQueue *q) =20 static int ehci_state_horizqh(EHCIQueue *q) { + uint64_t addr; int again =3D 0; =20 - if (ehci_get_fetch_addr(q->ehci, q->async) !=3D q->qh.next) { - ehci_set_fetch_addr(q->ehci, q->async, q->qh.next); + addr =3D ehci_get_desc_addr(q->ehci, q->qh.next); + if (ehci_get_fetch_addr(q->ehci, q->async) !=3D addr) { + ehci_set_fetch_addr(q->ehci, q->async, addr); ehci_set_state(q->ehci, q->async, EST_FETCHENTRY); again =3D 1; } else { @@ -2210,6 +2227,8 @@ static void ehci_advance_periodic_state(EHCIState *eh= ci) uint32_t entry; uint32_t list; const int async =3D 0; + uint64_t entry64; + uint64_t list64; =20 /* 4.6 */ =20 @@ -2234,14 +2253,14 @@ static void ehci_advance_periodic_state(EHCIState *= ehci) break; } list |=3D ((ehci->frindex & 0x1ff8) >> 1); - - if (get_dwords(ehci, list, &entry, 1) < 0) { + list64 =3D ehci_get_desc_addr(ehci, list); + if (get_dwords(ehci, list64, &entry, 1) < 0) { break; } - - DPRINTF("PERIODIC state adv fr=3D%d. [%08X] -> %08X\n", - ehci->frindex / 8, list, entry); - ehci_set_fetch_addr(ehci, async, entry); + entry64 =3D ehci_get_desc_addr(ehci, entry); + DPRINTF("PERIODIC state adv fr=3D%d. %" PRIx64 " -> %" PRIx64 "\n= ", + ehci->frindex / 8, list64, entry64); + ehci_set_fetch_addr(ehci, async, entry64); ehci_set_state(ehci, async, EST_FETCHENTRY); ehci_advance_state(ehci, async); ehci_queues_rip_unused(ehci, async); --=20 2.43.0