{"id":2223721,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2223721/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260416014928.1279360-11-jamin_lin@aspeedtech.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.1/projects/14/?format=json","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":"<20260416014928.1279360-11-jamin_lin@aspeedtech.com>","date":"2026-04-16T01:49:53","name":"[v3,10/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/1.1/people/81768/?format=json","name":"Jamin Lin","email":"jamin_lin@aspeedtech.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260416014928.1279360-11-jamin_lin@aspeedtech.com/mbox/","series":[{"id":500066,"url":"http://patchwork.ozlabs.org/api/1.1/series/500066/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=500066","date":"2026-04-16T01:49:32","name":"hw/usb/ehci: Add 64-bit descriptor addressing support","version":3,"mbox":"http://patchwork.ozlabs.org/series/500066/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2223721/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2223721/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=bfbcbfq/;\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 4fx1J43YK9z1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 11:53:24 +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 1wDBsM-0008I1-TV; Wed, 15 Apr 2026 21:50:38 -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 1wDBrt-0007x8-3M; Wed, 15 Apr 2026 21:50:15 -0400","from mail-japaneastazlp170120005.outbound.protection.outlook.com\n ([2a01:111:f403:c405::5] helo=TYPPR03CU001.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 1wDBrq-0007Ut-Fj; Wed, 15 Apr 2026 21:50:08 -0400","from TYPPR06MB8206.apcprd06.prod.outlook.com (2603:1096:405:383::19)\n by SEYPR06MB6202.apcprd06.prod.outlook.com (2603:1096:101:c7::12)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Thu, 16 Apr\n 2026 01:49:54 +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.9818.017; Thu, 16 Apr 2026\n 01:49:53 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=gvL8ohI71zBiyrV8kp9/JlOhH4zrbWjpmlkDSW/srL7JSz+5Hhfyp5WjOrV3iqiNvFHEpTDbik6p11iS+G5rKRpY/tZwWLCNLiUlDG/oFzOldXVjwqeuMXXQ0gCpZ3KI86FWmDqtN2xdaIjKX2n7EEzXvQqfnO46jSsr0TcREXxf5IT4zkgBulTTBc2+fsVCVrMNA5Je10FZxq2TpfLqijJohhoXBYKl90Ot4cv3SFz8USs5RT/tlp8ZT3Lt9vYARV7jYzEHNH/zzCfnAu04N91x7CuRlRNPa9ne2HrrcD3swDSPBZfeR2saGAPaKNpz8dMxKqekOhnO84eLYGBQQA==","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=IPhEhpq+DhJQDsAJX7pRkTya1i1/friyIRpgRGF/I7s=;\n b=XzdTc+lcjz0xln/0FBOzzlcZDf3yUnj5NhMLFHsjXgtfkGIVdPTXSDTZtqA2kPfjlw7Z69frd7KF+aUwawmp4HYEi8nC55jbzyvy07PIc07nXWqDt0NejBhog15KlW2HG3ygNcf/QnVf2EchNjzjV0zNFWwVae6v3RIWEcucxzUU0zbvLkz5BoAuwZ3IoekwGZtsrBpONsin5YRYdMeo42Ufa/UmFrMgfJ9W5CvhsGdPrdcQOAJm61q9CfezEXtpgT8uhodAs3Ew84M+PG8PxcxIr2ts4cNm82Eku2yOh+OG6rMksgcnLtmPqNTB+qXbSVsLGOSCG7V3tZ7lEQaCYg==","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=IPhEhpq+DhJQDsAJX7pRkTya1i1/friyIRpgRGF/I7s=;\n b=bfbcbfq/pnW5GP41pcOnESIw+jNxPCyK9fbTy6Kizj9IDPjU3A6nFMegtaLfrdb+nRYNkxbs3R01zfXR24srY+6ZK+YxMD43fOWVGqM9hOecJE6gtfcAVg0Q25/jwkzG+PXqbgM5mhDRu4xq9ca7tY/oC8fcvAAXr75RQAs220FoY2Lx6KHF0L6yleSAXgj3BO8qzMLfg6i59S9GZ7ctsgcI2ng4bv82vIR7L+s6hLnPGG2oNi4A2SjUqHz8mhS91ZzNBeHBOg9O1coMtiO6EZpSYVTjbQwzLeMkrjZaYuWjWm2Ur/jiEjGv6Q7SFnEMN9A43AFUUm1dzuo34uynjQ==","From":"Jamin Lin <jamin_lin@aspeedtech.com>","To":"\"philmd@linaro.org\" <philmd@linaro.org>, =?iso-8859-1?q?C=E9dric_Le_Goat?=\n\t=?iso-8859-1?q?er?= <clg@kaod.org>, 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 \"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>","Subject":"[PATCH v3 10/17] hw/usb/hcd-ehci: Implement 64-bit qTD descriptor\n addressing","Thread-Topic":"[PATCH v3 10/17] hw/usb/hcd-ehci: Implement 64-bit qTD\n descriptor addressing","Thread-Index":"AQHczUNSBpnWfju2SUWu/W6t8ouqgw==","Date":"Thu, 16 Apr 2026 01:49:53 +0000","Message-ID":"<20260416014928.1279360-11-jamin_lin@aspeedtech.com>","References":"<20260416014928.1279360-1-jamin_lin@aspeedtech.com>","In-Reply-To":"<20260416014928.1279360-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=bfbcbfq/;\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_|SEYPR06MB6202:EE_","x-ms-office365-filtering-correlation-id":"5d1cda28-fa1e-4e04-4113-08de9b5a749e","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 N6cuoNI1yBSx/raL4JFpMcE77V51Y0poxkvPkukK9X/YhxtHfhv/MWJ04cBcXy/Jrtc8lwHkArKmcBfQtryzXG/ClM72i5abJVuNS3ztppSCQ33K4IuQ2B1yfd2ZFFCMqR+cwtqGJSZ9hjbmhFEX+HdfpwxHiDQqUpPVOWb8eQUpPK2j7Hcb83pBRCUBWB8SWe2oUSCMki5MGq/VFLzyjrz2UpVeGz2CN8gpj0MdCKi28frS+GYd2I2HpfA6aWyCFO69B0zkBaIIo4XtLwOvROh0QYhydXb+uaYHTFhDSj1XAizmPFwTNiSFq+SHXxlbizNe4/B6GkekalLKI+UUOs6nU9wc74k9kvnfJONCJogbCmJzXR4OmsnPZsGcDe4QNuC2o/T0+kc2NZKxOhbtI6spvT2AVfGjf6yF6C+Ek/GJLDYU9S0+sbKLOHZA/qlVwZqhBkskyj48z4e5dyW/fjOFvfLfpmocBqzEFZ6hnGLEypyhxDQCksIXHW/KeYoWjlskiuk8ODOtTMNbDE03Kgr7UJz1HGytK7LglABs2CcJcFx89Ry4l4/ki6SA8lt5H3sqITbqUrjvLRHSmFbWQbSxomMVOlY31aeEa25B3Pum4jo/Fv28v6EFXJxW4Vbaa7MZNyr0XZVQaDrRXUxPszSMuQaEa1jRvklSfoHBKA2G4Y9Gq15k9BCoDFqRYq7tdYT4Q2bZ7yH91jOf2FhscOD93K9LFgqQ+9WtKTXu0SRoMqMVi0p4Ov2zh8LwWMF96iyJaVMweewLg9IvUssGRUqiOaGRLKmXwZuBteqQqdMrNysblullJ2eS2RH+sJbM","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?04MYQ2VEJllpwggz29oFuts?=\n\t=?iso-8859-1?q?twX2WQAfidqUkRjCAIyUfif7YHBAID/fYafzYdbk0WnQj86M+dDj6iu7nP0b?=\n\t=?iso-8859-1?q?u34NrDKG4Mom7NQ6Q/ONG9McCKrA2PwxNVaX0LlJ+4QUPwowjE8Ga9JDkaWw?=\n\t=?iso-8859-1?q?YCGl6tvT5z52manD9NJZTdcolXuISjlQJLVblh4gKa3zMj7awbN1khh2ziRk?=\n\t=?iso-8859-1?q?GutJnyexseww788I+1XH8V4ykHM9LWMphtpI3eJ41KwpcerRoZkkhAOMyVVu?=\n\t=?iso-8859-1?q?GzPL20kGu4KWm4A/+AXQnyiJ4LL/tRd6ull1rui7oQRXx8K9rEEfcEuMMQWY?=\n\t=?iso-8859-1?q?WT4tAbyiyg7L7BOesmBqLMHcuEg+L1vlos1So1OapCYYY3M3D98LZcerRKwI?=\n\t=?iso-8859-1?q?UQOUd/bSqmk6thPqgt0SXG2m90NVIODS7RyyTmg1MZ9jaw840ni2FZcFDNw/?=\n\t=?iso-8859-1?q?zNM6Kppcoa2bNR44NRUKrvpHpRmJ+XvmV/+6nNwxr1IYgz4LdA0928CxanUW?=\n\t=?iso-8859-1?q?BCHjk1PL6dsOle6mP8j7vBnBFj7NrK8hAasSODeojfKAxFSRwt7AneIJ+tdX?=\n\t=?iso-8859-1?q?3lKApU+YQKnfRB5OljmmX9dEEiPSkmf2W+wbVXspFidFxyfyORlWu+SXgYLb?=\n\t=?iso-8859-1?q?DUqIE8H7kH3DmOzP+XjLqYrZpmDHPq6FNitdjgRGO76QT4D7F2QTwb97gtMp?=\n\t=?iso-8859-1?q?wUCJIK6yWbmdGDoab+ckFxlnvcO6y5ebNYudnsjCeagQXDIidgoKMYf/gngN?=\n\t=?iso-8859-1?q?4WI0QxBdxt+RRjBcTLN5DCxB85l+gjWP4ZLboDkTGAw71T1JywXDI7YLIIXb?=\n\t=?iso-8859-1?q?EyrWErxC0tT1gP7WJuB0Kr85s8bFAV8TIZPH6UkUIT774AWJPNX0q3BwrkGs?=\n\t=?iso-8859-1?q?ewyOU4OxSboZq+wcUrD364vCh9dVx80SIEBvBfDkZvO/edPotGQobKjyR+v6?=\n\t=?iso-8859-1?q?BheB+XeENWDl1i2ag3+g7PWvg9PK3YTHmr3HKugTw6pZlYCR1tuaqGD1ZXiC?=\n\t=?iso-8859-1?q?f8oiGAyPjoALIRBpoSgUidmFx15rBL2PqOjntE51xsfHWL0C9NuLTUdQQYDe?=\n\t=?iso-8859-1?q?roRytXckTGvThZ8BrcbkjnSZLPdiBuqo1Iscyyi660bEitL06FCd7hLzOgDL?=\n\t=?iso-8859-1?q?yUAxQ83FUIDVO9Og06MD5c/J7THDoyM1ba7rVs5ndANlzMJWCPwjV63bJWsz?=\n\t=?iso-8859-1?q?dKfZ+xkd84nJmEVfMvN5hmehxpKbzt0WFjriKwv8V/XM5+1LOoO+ekMTFqxP?=\n\t=?iso-8859-1?q?ZcpcySFRkAE3UHN+pO9vvP6jabCKbIvH1gFAs0LXIyKHfRR+RkKhTtHHLKMu?=\n\t=?iso-8859-1?q?61IDbwZ1hliafKaQ+DRPLO4S79JNpZp5QYEZoRYXuE3vofF733NtHSXTF+yz?=\n\t=?iso-8859-1?q?bCYmLn3PeBceY6pU8KfB3XesqendcZCwQnN6o1T36oS/uPG59x/2H4gYOJJR?=\n\t=?iso-8859-1?q?fPyPs2Y4T+M9pyIP5L+7ADgcNvgf7GQ5p/DNmSVrRNuxmXUQ1a4POAcMp6+u?=\n\t=?iso-8859-1?q?4K01Ss5gGsRa12iDVzkvN8Oa0pwEZh9pM05IPVkHw2WHyujkW78cWThSjFHX?=\n\t=?iso-8859-1?q?gnH042lyNfz68LRFUSSioaMa1rheZvDTtqgTfbSXavNyqOh6HkVT271LwjEm?=\n\t=?iso-8859-1?q?ia5ZRx0HD6JUtTZDPci7rwD3L2WnfoTAcPK18DUNGZ4nSQiOGZ4K3Jl/rcmI?=\n\t=?iso-8859-1?q?AyZ2GwhP5y5sqdYmFHCgHQ88rzcpN/2FHW84KiKimGSAJbXsTdbOFlEwFCzy?=\n\t=?iso-8859-1?q?n+Be6rM/dWg8Sw7EXsB+5OG2s+Dmh5mQg3FW4n2Gf7Ue79A=3D=3D?=","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n i1Fj0iBm3KCFwOEuRNCPGl5UhwaOkF8RC1dXZBulglxEUGLgI53VCrmtTV329TSVAOTQLQlsPQXDP2o54k/ygBI5Cud6oJGTwpHjxMowphJcrP1DD6FQIkRWUrDX9bWxWQvpHSUfYkPIqnphMFMNCO8Wtr1yEqE6ADhALor5XT3t4zrDes5WwzxKkHleUg6BMyusOkP0qAjXJYOXr/mNg37Tx61HvsOxg4lNqGMlq8UupzA49xbsgsMq3TBsX0OKaZMCmDX0Yyd4TwazHFWkD9dyGaDp5nuXZz0X0oMUHYphm5XperDp3LLxAHkEUvDKyiM7/bEtMh9tpM4/xtGcjA==","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 5d1cda28-fa1e-4e04-4113-08de9b5a749e","X-MS-Exchange-CrossTenant-originalarrivaltime":"16 Apr 2026 01:49:53.8640 (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 9jBb2h0rPlg/tlmb4IFX0AYCqsrB6Nund+piyAkAsAj3zkq6n3YHKIq/L7HQv3+qlyCmZxiP5S5CFHzfralVSZG4oxKwxB7bwSR2Vy7r7Y4=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"SEYPR06MB6202","Received-SPF":"pass client-ip=2a01:111:f403:c405::5;\n envelope-from=jamin_lin@aspeedtech.com;\n helo=TYPPR03CU001.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":"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>\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 773f376834..712de9d50e 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 37ae637e08..d93d227e6f 100644\n--- a/hw/usb/hcd-ehci.c\n+++ b/hw/usb/hcd-ehci.c\n@@ -473,7 +473,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@@ -1199,6 +1200,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@@ -1232,7 +1234,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@@ -1726,7 +1729,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@@ -1798,14 +1801,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@@ -1834,7 +1837,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@@ -1915,7 +1920,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":["v3","10/17"]}