[{"id":3678481,"web_url":"http://patchwork.ozlabs.org/comment/3678481/","msgid":"<c03af2eb-c7e9-4954-9a53-b1575c7073f6@linaro.org>","list_archive_url":null,"date":"2026-04-17T05:03:17","subject":"Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","submitter":{"id":85046,"url":"http://patchwork.ozlabs.org/api/people/85046/","name":"Philippe Mathieu-Daudé","email":"philmd@linaro.org"},"content":"On 16/4/26 03:49, Jamin Lin wrote:\n> EHCI supports 64-bit control data structure addressing when the\n> 64-bit Addressing Capability bit in HCCPARAMS is set. In that mode,\n> the CTRLDSSEGMENT register supplies the upper 32 bits which are\n> concatenated with 32-bit link pointer fields to form full 64-bit\n> descriptor addresses (EHCI 1.0, section 2.3.5 and Appendix B).\n> \n> The current implementation assumes 32-bit QH descriptor addresses\n> and directly uses link pointer values without applying the\n> CTRLDSSEGMENT upper dword.\n> \n> Introduce a helper, ehci_get_desc_addr(), to construct full 64-bit\n> descriptor addresses when 64-bit capability is enabled. Update QH\n> traversal paths (async list walk, horizontal QH link, and periodic\n> schedule entry handling) to use the translated 64-bit addresses.\n> \n> EHCI 64-bit buffer pointer fields are defined in Appendix B as\n> split 32-bit low/high parts located at separate offsets, rather\n> than a single contiguous 64-bit field. Therefore, the buffer\n> pointers cannot be represented as uint64_t bufptr[5] without\n> violating the descriptor layout defined by the specification.\n> \n> Introduce ehci_get_buf_addr() to construct full 64-bit buffer\n> addresses from bufptr[] and bufptr_hi[] fields. Use this helper\n> when calculating transfer buffer addresses so that data buffers\n> above 4GB are correctly handled.\n> \n> Also add bufptr_hi[5] to EHCIqh to support 64-bit buffer pointer\n> fields as defined in Appendix B.\n> \n> When 64-bit capability is disabled, descriptor addresses remain\n> 32-bit and existing behaviour is unchanged.\n> \n> Note: Similar split 64-bit buffer pointer handling is required for\n> qTD, iTD and siTD descriptors, which will be addressed in follow-up\n> changes.\n> \n> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>\n> ---\n>   hw/usb/hcd-ehci.h   |  4 ++++\n>   hw/usb/hcd-ehci.c   | 48 ++++++++++++++++++++++++++++++++++-----------\n>   hw/usb/trace-events |  2 +-\n>   3 files changed, 42 insertions(+), 12 deletions(-)\n> \n> diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h\n> index fe4c508c32..773f376834 100644\n> --- a/hw/usb/hcd-ehci.h\n> +++ b/hw/usb/hcd-ehci.h\n> @@ -141,6 +141,9 @@ typedef struct EHCIqtd {\n>   #define QTD_BUFPTR_SH                 12\n>   } EHCIqtd;\n>   \n> +/* QH overlay: altnext_qtd, token, bufptr[5], bufptr_hi[5] */\n> +#define EHCI_QH_OVERLAY_COUNT 12\n> +\n>   /*\n>    * EHCI spec version 1.0 Section 3.6\n>    */\n> @@ -194,6 +197,7 @@ typedef struct EHCIqh {\n>   #define BUFPTR_FRAMETAG_MASK          0x0000001f\n>   #define BUFPTR_SBYTES_MASK            0x00000fe0\n>   #define BUFPTR_SBYTES_SH              5\n> +    uint32_t bufptr_hi[5];\n>   } EHCIqh;\n>   \n>   enum async_state {\n> diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c\n> index b9e4251d62..37ae637e08 100644\n> --- a/hw/usb/hcd-ehci.c\n> +++ b/hw/usb/hcd-ehci.c\n> @@ -147,6 +147,24 @@ static const char *addr2str(hwaddr addr)\n>       return nr2str(ehci_mmio_names, ARRAY_SIZE(ehci_mmio_names), addr);\n>   }\n>   \n> +static uint64_t ehci_get_buf_addr(EHCIState *s, uint32_t hi, uint32_t low,\n> +                                  uint32_t mask)\n\nRename @mask as @low_mask? Or directly use 64-bit?\n\nstatic uint64_t ehci_get_buf_addr(const EHCIState *s,\n                                   uint32_t hi, uint32_t lo,\n                                   uint64_t mask)\n{\n     uint64_t addr = s->caps_64bit_addr ? deposit64(lo, 0, 32, hi): lo;\n\n     return addr & mask;\n}\n\n> +{\n> +    uint64_t addr;\n> +\n> +    addr = (uint64_t)(low & mask);\n> +    if (s->caps_64bit_addr) {\n> +        addr |= (uint64_t)hi << 32;\n> +    }\n> +\n> +    return addr;\n> +}\n> +\n> +static uint64_t ehci_get_desc_addr(EHCIState *s, uint32_t low)\n> +{\n> +    return ehci_get_buf_addr(s, s->ctrldssegment, low, UINT32_MAX);\n> +}","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=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=xHs17Qy5;\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)"],"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 4fxjVw4Q7Cz1yHp\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 15:05:10 +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 1wDbNj-00051e-LS; Fri, 17 Apr 2026 01:04:43 -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 <philmd@linaro.org>) id 1wDbMR-0004o4-Qz\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 01:03:28 -0400","from mail-wm1-x330.google.com ([2a00:1450:4864:20::330])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wDbMP-0007zw-Cp\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 01:03:23 -0400","by mail-wm1-x330.google.com with SMTP id\n 5b1f17b1804b1-488b150559bso2012055e9.1\n for <qemu-devel@nongnu.org>; Thu, 16 Apr 2026 22:03:20 -0700 (PDT)","from [192.168.69.228] (88-187-86-199.subs.proxad.net.\n [88.187.86.199]) by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-488fc18bccfsm13144545e9.8.2026.04.16.22.03.18\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 16 Apr 2026 22:03:19 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776402200; x=1777007000; darn=nongnu.org;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=pvb3bNG08lnpUPao/ej6REPgY4ZlsumcDKfgpuSmjHs=;\n b=xHs17Qy53Jt1UAq1MiEArFc2biJ6xTQBl/qfqwLn1EbQ6WFSnO5erGmioRJDGh/kbp\n BzSOMSB4Nl2Mer+t6XEbDicrHrz8sOUxA7VDZDVbvZyonKB1RlGdAQegne2eRGJ94qD3\n ncu71ZL4KWIdcVUuRsYJANgMMgs/fdEVwSHvsgRnyCdcYvALeUfDyJ5LEdx4sQEPnyLD\n Ce4L/PTFua0AfqFIRRdLNKeH7Sl75fZQDxTqVh4XKLEdSTrkqxwNaPXbnAF0kgCMhImr\n J/rN5oGdN4WKwYUi5fMdL+ytrRcmXe8/hkWlDt5Qut81rqoKuULmNps2Clp6VuzZ1Ims\n s/pw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776402200; x=1777007000;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=pvb3bNG08lnpUPao/ej6REPgY4ZlsumcDKfgpuSmjHs=;\n b=ZM+nWLHysGgzzzM5WqPl8Psck9OyfY9CMiKTmPXIjvMnhfTcmt4zF2aIynsQNlESF4\n 1+It6ORchwv3kM0Z8nrm779jw709rqGPy3gM0P7QHCk53creSUNPKbSi9yd7P3llI2BM\n xm/SiXZ7lOTK67n9hwrZJLrzGi+SYbPUaCE/vb23EyShkWXhtgCPrldCTs1rVU2FyUQ/\n nhnzMrJgmVWJ+HlBkxRjYzXIMAt09ycrejkqLZE56mI6roUhv8iFuymo8ZdeTXqrcF3M\n HEMHmUOIsbvDxCWwG3HOW22oWkqjNIm+x/A1H3Xkg2fASlSlAHlbWmGyMqnjVHCK+B4Q\n IGdA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ9CAK/v2+MbFOFRdDFqP3daa+llleybcPAw9xcIP+T3982Q1ouDUJBVMzScNgAe6QU2NKuqvbDajBOU@nongnu.org","X-Gm-Message-State":"AOJu0YwdpzCraoMFjaPVcdkwncA/p8J6+e6tJsGZLxvRmGMTbZvOP3P6\n Gfylo4RXjiMKUS/Jm14JEXiQ22FggGAIsz5zqyad5IPnH9XSzjPxu9zAOJdGGno99EU=","X-Gm-Gg":"AeBDievFIzVWDSgwRwrlYwEZrQgIbE5Nulr0+bFGVfYA+S0zb4ggPdHl6EBUpF6xCwd\n tOV2w/cYQssWVynn9LmLUrLDJkH+TS9AvlrfUCE6SvVk6EbLIgYPRmHhMJlBoib91aAlW9ENlwA\n Ralc+qNQ7QSplbwMbJ659INEFIoahtpJHK5WAu2UxaszQL3nnLy1MKqijog/OrGKh+6H6mMIOA5\n oWvlrCg5xDc8Tig+IzPCSnQucp+g3jAdO9A2hfuhheRYjjhDFZodyX/CTmD4HQMALVvFI5g63k6\n pEolPpbaThH4ylWp9FHUCVk9h6ORsBoZScZDBM0T50Y0T86M4voQmUSEkeLf0pLH9MXwDNblYTF\n 2aBTB9jn1WEskChctkTtxurBruryl9ccE9VoURZBVj9WMdlefgCU9Bpp6meo/kATHv+3H3VUyj2\n T97XAvsuvoHB9O2xiDmAobmHjpWtw13ZaJUXq+QzoDJrh6ub2Kz3ifL2+fl58rX6JXlKCb1gLID\n cQA","X-Received":"by 2002:a05:600d:8408:b0:486:ff92:63e5 with SMTP id\n 5b1f17b1804b1-488fb73dc6fmr13087135e9.6.1776402199616;\n Thu, 16 Apr 2026 22:03:19 -0700 (PDT)","Message-ID":"<c03af2eb-c7e9-4954-9a53-b1575c7073f6@linaro.org>","Date":"Fri, 17 Apr 2026 07:03:17 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","Content-Language":"en-US","To":"Jamin Lin <jamin_lin@aspeedtech.com>,\n =?utf-8?q?C=C3=A9dric_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 \"open list:ASPEED BMCs\" <qemu-arm@nongnu.org>,\n \"open list:All patches CC here\" <qemu-devel@nongnu.org>","Cc":"Troy Lee <troy_lee@aspeedtech.com>, \"flwu@google.com\" <flwu@google.com>,\n \"nabihestefan@google.com\" <nabihestefan@google.com>","References":"<20260416014928.1279360-1-jamin_lin@aspeedtech.com>\n <20260416014928.1279360-10-jamin_lin@aspeedtech.com>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","In-Reply-To":"<20260416014928.1279360-10-jamin_lin@aspeedtech.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::330;\n envelope-from=philmd@linaro.org; helo=mail-wm1-x330.google.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 RCVD_IN_DNSWL_NONE=-0.0001, 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"}},{"id":3678486,"web_url":"http://patchwork.ozlabs.org/comment/3678486/","msgid":"<TYPPR06MB82062B89BEDF49BA637CDC02FC202@TYPPR06MB8206.apcprd06.prod.outlook.com>","list_archive_url":null,"date":"2026-04-17T05:40:10","subject":"RE: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","submitter":{"id":81768,"url":"http://patchwork.ozlabs.org/api/people/81768/","name":"Jamin Lin","email":"jamin_lin@aspeedtech.com"},"content":"Hi Philippe,\n\n> Subject: Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH\n> descriptor addressing\n> \n> On 16/4/26 03:49, Jamin Lin wrote:\n> > EHCI supports 64-bit control data structure addressing when the 64-bit\n> > Addressing Capability bit in HCCPARAMS is set. In that mode, the\n> > CTRLDSSEGMENT register supplies the upper 32 bits which are\n> > concatenated with 32-bit link pointer fields to form full 64-bit\n> > descriptor addresses (EHCI 1.0, section 2.3.5 and Appendix B).\n> >\n> > The current implementation assumes 32-bit QH descriptor addresses and\n> > directly uses link pointer values without applying the CTRLDSSEGMENT\n> > upper dword.\n> >\n> > Introduce a helper, ehci_get_desc_addr(), to construct full 64-bit\n> > descriptor addresses when 64-bit capability is enabled. Update QH\n> > traversal paths (async list walk, horizontal QH link, and periodic\n> > schedule entry handling) to use the translated 64-bit addresses.\n> >\n> > EHCI 64-bit buffer pointer fields are defined in Appendix B as split\n> > 32-bit low/high parts located at separate offsets, rather than a\n> > single contiguous 64-bit field. Therefore, the buffer pointers cannot\n> > be represented as uint64_t bufptr[5] without violating the descriptor\n> > layout defined by the specification.\n> >\n> > Introduce ehci_get_buf_addr() to construct full 64-bit buffer\n> > addresses from bufptr[] and bufptr_hi[] fields. Use this helper when\n> > calculating transfer buffer addresses so that data buffers above 4GB\n> > are correctly handled.\n> >\n> > Also add bufptr_hi[5] to EHCIqh to support 64-bit buffer pointer\n> > fields as defined in Appendix B.\n> >\n> > When 64-bit capability is disabled, descriptor addresses remain 32-bit\n> > and existing behaviour is unchanged.\n> >\n> > Note: Similar split 64-bit buffer pointer handling is required for\n> > qTD, iTD and siTD descriptors, which will be addressed in follow-up\n> > changes.\n> >\n> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>\n> > ---\n> >   hw/usb/hcd-ehci.h   |  4 ++++\n> >   hw/usb/hcd-ehci.c   | 48\n> ++++++++++++++++++++++++++++++++++-----------\n> >   hw/usb/trace-events |  2 +-\n> >   3 files changed, 42 insertions(+), 12 deletions(-)\n> >\n> > diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h index\n> > fe4c508c32..773f376834 100644\n> > --- a/hw/usb/hcd-ehci.h\n> > +++ b/hw/usb/hcd-ehci.h\n> > @@ -141,6 +141,9 @@ typedef struct EHCIqtd {\n> >   #define QTD_BUFPTR_SH                 12\n> >   } EHCIqtd;\n> >\n> > +/* QH overlay: altnext_qtd, token, bufptr[5], bufptr_hi[5] */ #define\n> > +EHCI_QH_OVERLAY_COUNT 12\n> > +\n> >   /*\n> >    * EHCI spec version 1.0 Section 3.6\n> >    */\n> > @@ -194,6 +197,7 @@ typedef struct EHCIqh {\n> >   #define BUFPTR_FRAMETAG_MASK          0x0000001f\n> >   #define BUFPTR_SBYTES_MASK            0x00000fe0\n> >   #define BUFPTR_SBYTES_SH              5\n> > +    uint32_t bufptr_hi[5];\n> >   } EHCIqh;\n> >\n> >   enum async_state {\n> > diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index\n> > b9e4251d62..37ae637e08 100644\n> > --- a/hw/usb/hcd-ehci.c\n> > +++ b/hw/usb/hcd-ehci.c\n> > @@ -147,6 +147,24 @@ static const char *addr2str(hwaddr addr)\n> >       return nr2str(ehci_mmio_names, ARRAY_SIZE(ehci_mmio_names),\n> addr);\n> >   }\n> >\n> > +static uint64_t ehci_get_buf_addr(EHCIState *s, uint32_t hi, uint32_t low,\n> > +                                  uint32_t mask)\n> \n> Rename @mask as @low_mask? Or directly use 64-bit?\n> \n> static uint64_t ehci_get_buf_addr(const EHCIState *s,\n>                                    uint32_t hi, uint32_t lo,\n>                                    uint64_t mask) {\n>      uint64_t addr = s->caps_64bit_addr ? deposit64(lo, 0, 32, hi): lo;\n> \n>      return addr & mask;\n> }\n> \nThanks for the review and suggestion.\n\nIn the current code, the mask (e.g. QTD_BUFPTR_MASK) is defined as a 32-bit value and is intended to apply only to the low 32 bits of the buffer pointer.\nIf we change the function to take a 64-bit mask and apply it to the full 64-bit address (as in the proposed version), \nthe upper 32 bits (bits 63–32) may be unintentionally cleared when the mask is only 32-bit wide.\n\nFor example:\n\n#define QTD_BUFPTR_MASK 0xfffff000\n\nIn this case, applying \"addr & mask\" after combining hi/lo would zero out the high 32 bits, which breaks 64-bit addressing.\nTo preserve the original semantics, the mask should only be applied to the low part before combining with the high 32 bits.\nSo I suggest renaming the parameter to make this explicit. I will change this function as below. What do you think?\n\nstatic uint64_t ehci_get_buf_addr(EHCIState *s, uint32_t hi, uint32_t lo,\n                                  uint32_t lo_mask)\n{\n    uint64_t addr = lo & lo_mask;\n\n    if (s->caps_64bit_addr) {\n        addr = deposit64(addr, 32, 32, hi);\n    }\n\n    return addr;\n}\n\nThanks,\nJamin\n\n> > +{\n> > +    uint64_t addr;\n> > +\n> > +    addr = (uint64_t)(low & mask);\n> > +    if (s->caps_64bit_addr) {\n> > +        addr |= (uint64_t)hi << 32;\n> > +    }\n> > +\n> > +    return addr;\n> > +}\n> > +\n> > +static uint64_t ehci_get_desc_addr(EHCIState *s, uint32_t low) {\n> > +    return ehci_get_buf_addr(s, s->ctrldssegment, low, UINT32_MAX); }","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=msPZBvQE;\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 4fxkJW4p9zz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 15:41: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 1wDbwF-0002cN-P8; Fri, 17 Apr 2026 01:40:23 -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 1wDbwD-0002br-OM; Fri, 17 Apr 2026 01:40:21 -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 1wDbwA-0004QZ-P5; Fri, 17 Apr 2026 01:40:20 -0400","from TYPPR06MB8206.apcprd06.prod.outlook.com (2603:1096:405:383::19)\n by SEYPR06MB6033.apcprd06.prod.outlook.com (2603:1096:101:d7::14)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.21; Fri, 17 Apr\n 2026 05:40:10 +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.023; Fri, 17 Apr 2026\n 05:40:10 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=H3oH5g9U1M11P3rC9wvBmesdzhxOmvWR83XJjiIZKkDD13n+ELJC8ytrJiU4u7UW2etE7P2ipebb405JBWUMIdzzMD8GVYuo/ndRcMB47FYHsiDm+S9TQKpKqaz6kJsXBMzlfJMX4aFBREgJORUR0fo4nzv13uV/hK69hO9INKr0VwKsvnftoymf8TCBJbsXMsxZxRokbVFM0j0/rGzbAY/KJ7nYTxlwc4TKb9PxbYj8+I5+MXGz5Y6u9b7UhuvpBs288Mo/WalSshFJR8QvVeAR1JfKBYP+bfWm7gwqQ/LS1cume4DwTuGPO9Npa/HWMe7RDRoSzmg0HwGa6UQlbQ==","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=xanHB1VmvJApEWfqeAqiQ6TTTSUZwIm4NwqzMoraNG0=;\n b=K7vgz2+Z49qou43THf17ZFMPzNro5uTx6eVtKMhgobgFsjGAIh/AzVcN7M0cWE+bE3rzQU5qsWe4Kg+cEBOXJUqrfPuQ5CjfR7i4/CGgtfNPpVN4Q6fC81BfrqKrOheCY9Dtylj/yW+OVZl/HLnftRhHTYKm0yA2FfjEGyn3/NhWOPW8UgIZW/edJ4V4JBsVuVt4U2flfdB/oMj/FYvdXFbpSeusMXXnlOplhls5RMWqf2N0w4l1vZZLCD3KAUHzF0GExvKwYmwRb7XKCkLLU/rU5EVIdV3n9QsXo3QNeac2tTr4DsmvASkNbUrdSt7j8exQGTU7UZIiA0wA52EJ9Q==","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=xanHB1VmvJApEWfqeAqiQ6TTTSUZwIm4NwqzMoraNG0=;\n b=msPZBvQElukmjF2ziucZv1/22DxJaExMtJe7l0xtIIjfNyGeSbdQhpxuXS/TkR4zhWzL3xbMvoNUrg2ceD3E8TQzN9UsSzC66XHfpI8DrM9hf0rjzokEY2X1g/Rq5B58vml7ZQkP/YqrtFq7mleiJ/Lzkmf9QJxa5Nby9lRep2Eh2plApWjHW8rN5RnhnUWQ6VC3RWaw18c0dgTRlibPz1rUIZBDMiLCj3uaUmFmmxlWg/xJ1LYgaZKvny9/5p8W2AfXzK/tyRS5xxmh5jm3EUXRt/c3RIzX4NwutHRJkT8V6totjdH+uVMLrCg80Npd5C3q8gJqGwFt3I0uExNa4g==","From":"Jamin Lin <jamin_lin@aspeedtech.com>","To":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>, =?utf-8?q?C?=\n\t=?utf-8?q?=C3=A9dric_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 \"open list:ASPEED BMCs\" <qemu-arm@nongnu.org>,\n \"open list:All patches CC here\" <qemu-devel@nongnu.org>","CC":"Troy Lee <troy_lee@aspeedtech.com>, \"flwu@google.com\" <flwu@google.com>,\n \"nabihestefan@google.com\" <nabihestefan@google.com>","Subject":"RE: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","Thread-Topic":"[PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","Thread-Index":"AQHczUNObou9Fmh1/EmYf55F3wvnKbXitHqAgAAHusA=","Date":"Fri, 17 Apr 2026 05:40:10 +0000","Message-ID":"\n <TYPPR06MB82062B89BEDF49BA637CDC02FC202@TYPPR06MB8206.apcprd06.prod.outlook.com>","References":"<20260416014928.1279360-1-jamin_lin@aspeedtech.com>\n <20260416014928.1279360-10-jamin_lin@aspeedtech.com>\n <c03af2eb-c7e9-4954-9a53-b1575c7073f6@linaro.org>","In-Reply-To":"<c03af2eb-c7e9-4954-9a53-b1575c7073f6@linaro.org>","Accept-Language":"zh-TW, en-US","Content-Language":"zh-TW","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=msPZBvQE;\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_|SEYPR06MB6033:EE_","x-ms-office365-filtering-correlation-id":"3a0c8893-37bb-4d16-6bfb-08de9c43ca51","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n ARA:13230040|1800799024|366016|376014|7416014|921020|56012099003|18002099003|22082099003|38070700021;","x-microsoft-antispam-message-info":"\n h9kIqIcIu0juZiXBlgQapJ3bKDJ5Cwdc+7bLirNOVvyzjSbBrNVTxUsKw6BbUCCS0BdOvHkuz1XOtkltSB1OryEWcBWqcbKFZ8y7VlpFnhFvsUGNiNPg/enIcxDrk1lB4ZWkmSFVYTdfgVx5WB9ji1WRzY2RxSMUBAb8kcbGgiJRRNDYeFRN9z9h9Z0NJhaSa7cMX5sI5hkkb/cgP7lOhbdzbmZq1KrmWtUmtdGEezCWAIPrNb31ROGmujRQervim3Hy7dHcYQ/FmRHl+f3lo2+iB5dGZVEUhrhDEa5Syer21AckMjwtlTATsgzpU7ez8qQSqT/eop+hM+yJNqYBEPllqJQi3fTuCZUJvDiDpmiUWwVDlCWbqPXHAemQ3YBkpy3oYeDoLAGolwRm/FFJoY6hcfJ6LZuMDXvPMDi6gQavg9gGV2vBwJBnzCHGJ/9dMSu4+k7yddseSRdlH9a71/d/UoFA9NwBA2tcqjhZMdn4vdSqr1g1SEH2U/J6JdknwmkVlMVhuYA4zrf3adR8762gPvcLPipaITJxJlBShkPfwNEXt4WdMpyuqVtUmzYcV15IDCDhOOquHmdPWlwqtAh1KF3MkldNPwS5oMY8jS8MVkNSojc6u8FUb+6LvKyrpiMPO+cgLLlMf8tQthw5hI2N52sfEZXqmLu+tDO9trZ2grZffuShEoDqg7nkD4DeCUVzxhic4qyMaq8qzPfdUao0U7cjbNnsSW0s4lrsQ/wfo5pCFj8IMTaMbwIVj8fvNaDErx7smJVoEy1LzL9/lIVxDNLyJ5wt3VYyHTdD6x/aQ9HinNC+/J6ogi+guYik","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:zh-tw; SCL:1;\n SRV:; IPV:NLI; SFV:NSPM; H:TYPPR06MB8206.apcprd06.prod.outlook.com; PTR:;\n CAT:NONE;\n SFS:(13230040)(1800799024)(366016)(376014)(7416014)(921020)(56012099003)(18002099003)(22082099003)(38070700021);\n DIR:OUT; SFP:1102;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?utf-8?q?pZWH976thFieTalmDhOSeFWPqRIw?=\n\t=?utf-8?q?4krbzGdsRILLadFeStYfhBc0M2arC/gbnUiiVNVOlCrjes1oHGTzwGfAy3z9rnx/R?=\n\t=?utf-8?q?S7y8LfEVwiMnkZCiVYaJAfd3KwWqcvKgfNSlOI12jENc5tIYiYifTaBzpKlywHKnl?=\n\t=?utf-8?q?8Us2/ZQlJuIklZtSoggpmayuOJGvaqWZkIJG5IuCaO40C4yli5TmriERqrm/DKcg0?=\n\t=?utf-8?q?cJ58y8r7r8lspJCNQQaGuS5v4BHj5HKgXZPMUIYJvfpj+8swX/u/fce75O0YQ7HiE?=\n\t=?utf-8?q?I58VaB+qhBEQ/h1keStQd7TFvNOMk5cPIh3EVfKs4NqnceReGvp4DAdeFGeiPiPEl?=\n\t=?utf-8?q?jIIb9qu4wBfO2nJ3WbCmbLCV29sPDywBcW6lxilV5MS4+2jOyPfuNe9cuWnaFSaug?=\n\t=?utf-8?q?lYXMOx0J2AOqvxS74+7FBNYcCRr3Dmcvoicp4FhKz6Wb4Ah5QiJKwiXv0lcf04DR4?=\n\t=?utf-8?q?s63FSZqwR5eQpr0GgdwtMAM9uztBTFnCr8T8c4RWixQ7ffJD6QxqPhwENDO7DhgOj?=\n\t=?utf-8?q?uHduGXkWsqlUA7lYC1NPAVnLxTB9FqaLJCPwKxt+lHzfgNN3QpHYH6Q2vBQFWSkHx?=\n\t=?utf-8?q?LaAEpWyzKIct+s34Ql8TOPLGhxSXKVHMpHDyOZ+htWYezpiV8mIc5lhOSXxij67dc?=\n\t=?utf-8?q?cMcUGoWgmk/Hp+tCh9jeFv/DaixfKIb0yglplmR39Kes3oqAy16MjHjlK8Tt+FT95?=\n\t=?utf-8?q?iomQ/dS8GdMBoIm1z8Ik3yhMr0MUVPBHEpUXT0uJbLMXM/fHOWUhXGnVGuYhGubcr?=\n\t=?utf-8?q?QXzfAdpTqif9f+PtmEDkaLATvj+ysNcHyfd15XpdqTYU+Sd19dcxFQLSifgdsKjcC?=\n\t=?utf-8?q?7eZiMMQBJtULshRkdzwsgHwtoPh0ai4igJNzSs/acGiQAiHacAKGcv8QDkoyY84Lu?=\n\t=?utf-8?q?J0o+nY17daBdhas90xgUOozJdmnVHQIq+mAlJ5W+D552wj1qPscIclq0nr0OkVaPD?=\n\t=?utf-8?q?MbUwsFeoKrp+CXrae0tMlED18rpr0qoWI2S354repK2/i0l5IhlQOBFpWX+HoNlgY?=\n\t=?utf-8?q?lIDnLN23ymwV0uRFxgOIgsvd6qOjK2lkGO4qKw4T/NHDW+89T9YLZxZ5FtWa9nZSn?=\n\t=?utf-8?q?vI4ZvJb7bwG4XeGWhv/cGZzIuklwRk/ZgvUfITghd4gtQN4Mdb/ulEPboZClC7vXo?=\n\t=?utf-8?q?PQ3BQedK0WqfDigN4EUB2p61xdjT1RzU8S4QQAfhQpIPL2dYhNfxzbduesmbQB/mu?=\n\t=?utf-8?q?hSPb5W2nneK3X8WZPxups5LRv5RGnULnWnBr8wS06rdd8hUow/i3HjENPCOaRApSN?=\n\t=?utf-8?q?eS/BFp87FcmTbdI0Htkxts3ldDMCAlRoIy4xH4QirBKXcMdztRTFcZIk8Ls5ao8A9?=\n\t=?utf-8?q?6wxCoGnGrWXn1JhwoxttN58ovLK9GpHcanLeZKfX530VdX+Z58JgrVWUKoS8fPvmb?=\n\t=?utf-8?q?TeXSjkv6tDF2qenU5TiNFJyUIWExKBq4UZMCJ9uYcKRyXshx9EeqBwxLphzqq3ZeB?=\n\t=?utf-8?q?++fsLfFBx5XUW4kYtwuZcw4lCC5uUPA/as0jJgeWRs94211Ogd14JmV4MwSzcRbSM?=\n\t=?utf-8?q?2euNOGMN5Pdr7Rh3oUSkrsmmfJ4+30F+x8dq6fKFiHx7vOTpjmJNz/NrhySR55hcz?=\n\t=?utf-8?q?yRS8UzpEOCQfMJxHLsPA6v98JYp3+AznwFnahqpJTEACnvW5hqdcU7Trkxi+gDNd1?=\n\t=?utf-8?q?XiJ74ZU+/ZjuLpwix88ZCbf1h9jYT+Fw=3D=3D?=","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n ILeSWV1UeKEp0RiVJMmekQtZrNVxoP4Or4Qv+WRVBXcEJmPeeaRXVXr/40wivzMHEtQpXAb+w1rP7DLj7wJFQZZK4eBZ7D/FGAfnF97mNPX1C/59VmzqdHfVna7wGl+i+GfBudZhlwDRN0iHa0JMncuP8SdMA8aWqxz/5cv2NFDmhsIfNMeLnnS4Whu0WeotYP6t8cfaiyHMgxQZ7wTf6OLu8VyQ3itaQ4vmypNZv0R2txT2WX3W4Jwy/MnOhFZ1wKmHnbK3iFiOr5o5VNOn5ng1Btof9MlIndj6PeJwBW8K3UvezZl2xJ67NOG9Mxzp9e24yLvBWJv1DAS4i0YbVg==","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 3a0c8893-37bb-4d16-6bfb-08de9c43ca51","X-MS-Exchange-CrossTenant-originalarrivaltime":"17 Apr 2026 05:40:10.3987 (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 etarCiYBInuWcgvk8wLDNfMzmmyl1hPjV4SYzlc78sYDhBBA+8sJhfrdybOyG95I1IjKHWYpsYDu/7H+OQcjxLHC2nJ3tS5r2LImwB4zGe0=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"SEYPR06MB6033","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"}},{"id":3678496,"web_url":"http://patchwork.ozlabs.org/comment/3678496/","msgid":"<34bf26b3-298c-4c40-bf10-fd0e29058a5c@linaro.org>","list_archive_url":null,"date":"2026-04-17T06:14:07","subject":"Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","submitter":{"id":85046,"url":"http://patchwork.ozlabs.org/api/people/85046/","name":"Philippe Mathieu-Daudé","email":"philmd@linaro.org"},"content":"On 17/4/26 07:40, Jamin Lin wrote:\n> Hi Philippe,\n> \n>> Subject: Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH\n>> descriptor addressing\n>>\n>> On 16/4/26 03:49, Jamin Lin wrote:\n>>> EHCI supports 64-bit control data structure addressing when the 64-bit\n>>> Addressing Capability bit in HCCPARAMS is set. In that mode, the\n>>> CTRLDSSEGMENT register supplies the upper 32 bits which are\n>>> concatenated with 32-bit link pointer fields to form full 64-bit\n>>> descriptor addresses (EHCI 1.0, section 2.3.5 and Appendix B).\n>>>\n>>> The current implementation assumes 32-bit QH descriptor addresses and\n>>> directly uses link pointer values without applying the CTRLDSSEGMENT\n>>> upper dword.\n>>>\n>>> Introduce a helper, ehci_get_desc_addr(), to construct full 64-bit\n>>> descriptor addresses when 64-bit capability is enabled. Update QH\n>>> traversal paths (async list walk, horizontal QH link, and periodic\n>>> schedule entry handling) to use the translated 64-bit addresses.\n>>>\n>>> EHCI 64-bit buffer pointer fields are defined in Appendix B as split\n>>> 32-bit low/high parts located at separate offsets, rather than a\n>>> single contiguous 64-bit field. Therefore, the buffer pointers cannot\n>>> be represented as uint64_t bufptr[5] without violating the descriptor\n>>> layout defined by the specification.\n>>>\n>>> Introduce ehci_get_buf_addr() to construct full 64-bit buffer\n>>> addresses from bufptr[] and bufptr_hi[] fields. Use this helper when\n>>> calculating transfer buffer addresses so that data buffers above 4GB\n>>> are correctly handled.\n>>>\n>>> Also add bufptr_hi[5] to EHCIqh to support 64-bit buffer pointer\n>>> fields as defined in Appendix B.\n>>>\n>>> When 64-bit capability is disabled, descriptor addresses remain 32-bit\n>>> and existing behaviour is unchanged.\n>>>\n>>> Note: Similar split 64-bit buffer pointer handling is required for\n>>> qTD, iTD and siTD descriptors, which will be addressed in follow-up\n>>> changes.\n>>>\n>>> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>\n>>> ---\n>>>    hw/usb/hcd-ehci.h   |  4 ++++\n>>>    hw/usb/hcd-ehci.c   | 48\n>> ++++++++++++++++++++++++++++++++++-----------\n>>>    hw/usb/trace-events |  2 +-\n>>>    3 files changed, 42 insertions(+), 12 deletions(-)\n\n\n>>> +static uint64_t ehci_get_buf_addr(EHCIState *s, uint32_t hi, uint32_t low,\n>>> +                                  uint32_t mask)\n>>\n>> Rename @mask as @low_mask? Or directly use 64-bit?\n>>\n>> static uint64_t ehci_get_buf_addr(const EHCIState *s,\n>>                                     uint32_t hi, uint32_t lo,\n>>                                     uint64_t mask) {\n>>       uint64_t addr = s->caps_64bit_addr ? deposit64(lo, 0, 32, hi): lo;\n>>\n>>       return addr & mask;\n>> }\n>>\n> Thanks for the review and suggestion.\n> \n> In the current code, the mask (e.g. QTD_BUFPTR_MASK) is defined as a 32-bit value and is intended to apply only to the low 32 bits of the buffer pointer.\n> If we change the function to take a 64-bit mask and apply it to the full 64-bit address (as in the proposed version),\n> the upper 32 bits (bits 63–32) may be unintentionally cleared when the mask is only 32-bit wide.\n\nRight.\n\n> \n> For example:\n> \n> #define QTD_BUFPTR_MASK 0xfffff000\n> \n> In this case, applying \"addr & mask\" after combining hi/lo would zero out the high 32 bits, which breaks 64-bit addressing.\n> To preserve the original semantics, the mask should only be applied to the low part before combining with the high 32 bits.\n> So I suggest renaming the parameter to make this explicit. I will change this function as below. What do you think?\n> \n> static uint64_t ehci_get_buf_addr(\n\n\"const\"\n\nEHCIState *s, uint32_t hi, uint32_t lo,\n>                                    uint32_t lo_mask)\n> {\n>      uint64_t addr = lo & lo_mask;\n> \n>      if (s->caps_64bit_addr) {\n>          addr = deposit64(addr, 32, 32, hi);\n>      }\n> \n>      return addr;\n> }\nPerfect, using \"const\":\n\nReviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>","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=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=Sywxd6xe;\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)"],"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 4fxl3W3VBgz1yHp\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 16:15:01 +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 1wDcT0-00043N-OM; Fri, 17 Apr 2026 02:14:14 -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 <philmd@linaro.org>) id 1wDcSy-00042C-J6\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 02:14:12 -0400","from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wDcSw-0004It-PH\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 02:14:12 -0400","by mail-wr1-x42b.google.com with SMTP id\n ffacd0b85a97d-43d73422431so177410f8f.2\n for <qemu-devel@nongnu.org>; Thu, 16 Apr 2026 23:14:10 -0700 (PDT)","from [192.168.69.228] (88-187-86-199.subs.proxad.net.\n [88.187.86.199]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43fe4cb11b4sm1976533f8f.2.2026.04.16.23.14.07\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 16 Apr 2026 23:14:08 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776406449; x=1777011249; darn=nongnu.org;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=rW11V5zDTwy2B7OJTm1WksE7+SGkCE7a3F0LalLLwJ4=;\n b=Sywxd6xejkuEiHVrg2Li+0hzCZUftvCdYTLbVCEluuC+20Gd+gJbDDo/UOKJplREzz\n j/19obVA4dvyOhN/T0g/41O5+LVQam5i+zP1At2yQ+bBsYSvaPzBDqhZzsvGQehuWt2B\n e+TgU8TU3+PVWJ0f9La3/2Kyef+TRVkyWp+kLUBgoSzqCBCdF3mKkCW1VBnwM7XUv92i\n NvG0ldj+9Nf0l91OP0Tgh52YpLiz80M0cLOqJNcPqcoQTM0vKv/PG1/EyhjkbuxQiWKu\n aQGMU2acq4Ksyzc/k7c2nQTFcV0yWh+x1qMYKvM13MRXZ6oZj4VY5KR0cMpDyv9boFBX\n wzDQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776406449; x=1777011249;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=rW11V5zDTwy2B7OJTm1WksE7+SGkCE7a3F0LalLLwJ4=;\n b=o4895Cvm+p4LVeIowDuJaz9YnghK/9jnNIkL2tTzz4a4CNnrvbmvr7pHsCOXIu0Clz\n 3ER2a7EmJGxbTqbFTMLyeQtaBrVCuOr5ocAZBLwtvH96HPOFtAnOb1KwGnYtTjCaZPhg\n lTljUARB0VzBLvfbt9pcm299SSN43Wv7PAIyM8ipvFBfiE5e135KD9fJ/ymZw20Auqxp\n aAVbJOP6dBDycdCx/Dd4GP6YGb6oUht7eUM0LHklZUkEB77iiODAPRMHYP5chof1wWVf\n q9eS53KXyt8Ui1COByBNEywS2hXuidw3PG6Nb48TsOaYKnrUQyC9pJYfHG9z5KgBCLq2\n blxA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ9dyv28IX6K8lSlNRWO6DSpHY3IIenwml6+FdlWX06JcPd+r4a/zpYyTLnTFs/y2E/Hjkit+scHp8SF@nongnu.org","X-Gm-Message-State":"AOJu0Ywlay+kZ1mM4ZNB/4Jijp/z/+oCLvUbYu2SR4inalD/cJxHAMVz\n APRvHEOR4lehfo2wxUdlcVs/5EpCIK6wUBsg2ULV/83RU46Pdukx7fuXx3TOxGfZ6cY=","X-Gm-Gg":"AeBDievJjfhTU2N6KJnVpBN1uxCnDYSgZPQ/rFTX8DH/E+f0JZVlGVFKnEC1VfQHg8O\n hs60qfQjZ2tniTTyMSB4dNpC2h2pXMJifiWvvHseDGZcnWsQQT2zy+uAZ4JsYdHfr949Bf4hvuK\n RbQn7BNeXp0mgn1WvVprDaPfgo51rEeOl9eodHdj0A4t7lfn1ye0oJIW9HpccKAxOP5gxdlfwkO\n eC6qGjhVUAPKxV4M/fRB1VC5ARA8saIpM79W1+xROcV4gLNmyiBhpJFfNYR+DJuPobv2av17g6u\n z5EAQhQnPDjFPbWNeTqraoYcPFoMp8eh4XIcd/v3SQf19iCG9Js3Z59W+uJ6kibvXHQdpv/mXeg\n DlEDBQ5VbY1W3vQoLV+bdu83EBnWqeb7Y+S1zfzzQkjD76+TizSyTyKsOiTQYcSmSOVQ58wT5S2\n K5xXc2Ac7dh7OgepJyw7kqMmu3BXoUhrBJ0793B6ABUhgu71iOUUtNsJbSuFrtpjyh0nGoKTOOw\n bzV","X-Received":"by 2002:a05:6000:4283:b0:43d:7ea1:fb53 with SMTP id\n ffacd0b85a97d-43fe3e15f7emr1942438f8f.33.1776406448867;\n Thu, 16 Apr 2026 23:14:08 -0700 (PDT)","Message-ID":"<34bf26b3-298c-4c40-bf10-fd0e29058a5c@linaro.org>","Date":"Fri, 17 Apr 2026 08:14:07 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","Content-Language":"en-US","To":"Jamin Lin <jamin_lin@aspeedtech.com>,\n =?utf-8?q?C=C3=A9dric_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 \"open list:ASPEED BMCs\" <qemu-arm@nongnu.org>,\n \"open list:All patches CC here\" <qemu-devel@nongnu.org>","Cc":"Troy Lee <troy_lee@aspeedtech.com>, \"flwu@google.com\" <flwu@google.com>,\n \"nabihestefan@google.com\" <nabihestefan@google.com>","References":"<20260416014928.1279360-1-jamin_lin@aspeedtech.com>\n <20260416014928.1279360-10-jamin_lin@aspeedtech.com>\n <c03af2eb-c7e9-4954-9a53-b1575c7073f6@linaro.org>\n <TYPPR06MB82062B89BEDF49BA637CDC02FC202@TYPPR06MB8206.apcprd06.prod.outlook.com>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","In-Reply-To":"\n <TYPPR06MB82062B89BEDF49BA637CDC02FC202@TYPPR06MB8206.apcprd06.prod.outlook.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::42b;\n envelope-from=philmd@linaro.org; helo=mail-wr1-x42b.google.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 RCVD_IN_DNSWL_NONE=-0.0001, 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"}},{"id":3678523,"web_url":"http://patchwork.ozlabs.org/comment/3678523/","msgid":"<TYPPR06MB8206E85133AD461C8F7D0DE1FC202@TYPPR06MB8206.apcprd06.prod.outlook.com>","list_archive_url":null,"date":"2026-04-17T07:02:24","subject":"RE: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","submitter":{"id":81768,"url":"http://patchwork.ozlabs.org/api/people/81768/","name":"Jamin Lin","email":"jamin_lin@aspeedtech.com"},"content":"Hi Philippe,\n\n> Subject: Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH\n> descriptor addressing\n> \n> On 17/4/26 07:40, Jamin Lin wrote:\n> > Hi Philippe,\n> >\n> >> Subject: Re: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH\n> >> descriptor addressing\n> >>\n> >> On 16/4/26 03:49, Jamin Lin wrote:\n> >>> EHCI supports 64-bit control data structure addressing when the\n> >>> 64-bit Addressing Capability bit in HCCPARAMS is set. In that mode,\n> >>> the CTRLDSSEGMENT register supplies the upper 32 bits which are\n> >>> concatenated with 32-bit link pointer fields to form full 64-bit\n> >>> descriptor addresses (EHCI 1.0, section 2.3.5 and Appendix B).\n> >>>\n> >>> The current implementation assumes 32-bit QH descriptor addresses\n> >>> and directly uses link pointer values without applying the\n> >>> CTRLDSSEGMENT upper dword.\n> >>>\n> >>> Introduce a helper, ehci_get_desc_addr(), to construct full 64-bit\n> >>> descriptor addresses when 64-bit capability is enabled. Update QH\n> >>> traversal paths (async list walk, horizontal QH link, and periodic\n> >>> schedule entry handling) to use the translated 64-bit addresses.\n> >>>\n> >>> EHCI 64-bit buffer pointer fields are defined in Appendix B as split\n> >>> 32-bit low/high parts located at separate offsets, rather than a\n> >>> single contiguous 64-bit field. Therefore, the buffer pointers\n> >>> cannot be represented as uint64_t bufptr[5] without violating the\n> >>> descriptor layout defined by the specification.\n> >>>\n> >>> Introduce ehci_get_buf_addr() to construct full 64-bit buffer\n> >>> addresses from bufptr[] and bufptr_hi[] fields. Use this helper when\n> >>> calculating transfer buffer addresses so that data buffers above 4GB\n> >>> are correctly handled.\n> >>>\n> >>> Also add bufptr_hi[5] to EHCIqh to support 64-bit buffer pointer\n> >>> fields as defined in Appendix B.\n> >>>\n> >>> When 64-bit capability is disabled, descriptor addresses remain\n> >>> 32-bit and existing behaviour is unchanged.\n> >>>\n> >>> Note: Similar split 64-bit buffer pointer handling is required for\n> >>> qTD, iTD and siTD descriptors, which will be addressed in follow-up\n> >>> changes.\n> >>>\n> >>> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>\n> >>> ---\n> >>>    hw/usb/hcd-ehci.h   |  4 ++++\n> >>>    hw/usb/hcd-ehci.c   | 48\n> >> ++++++++++++++++++++++++++++++++++-----------\n> >>>    hw/usb/trace-events |  2 +-\n> >>>    3 files changed, 42 insertions(+), 12 deletions(-)\n> \n> \n> >>> +static uint64_t ehci_get_buf_addr(EHCIState *s, uint32_t hi, uint32_t low,\n> >>> +                                  uint32_t mask)\n> >>\n> >> Rename @mask as @low_mask? Or directly use 64-bit?\n> >>\n> >> static uint64_t ehci_get_buf_addr(const EHCIState *s,\n> >>                                     uint32_t hi, uint32_t lo,\n> >>                                     uint64_t mask) {\n> >>       uint64_t addr = s->caps_64bit_addr ? deposit64(lo, 0, 32, hi):\n> >> lo;\n> >>\n> >>       return addr & mask;\n> >> }\n> >>\n> > Thanks for the review and suggestion.\n> >\n> > In the current code, the mask (e.g. QTD_BUFPTR_MASK) is defined as a\n> 32-bit value and is intended to apply only to the low 32 bits of the buffer\n> pointer.\n> > If we change the function to take a 64-bit mask and apply it to the\n> > full 64-bit address (as in the proposed version), the upper 32 bits (bits 63–32)\n> may be unintentionally cleared when the mask is only 32-bit wide.\n> \n> Right.\n> \n> >\n> > For example:\n> >\n> > #define QTD_BUFPTR_MASK 0xfffff000\n> >\n> > In this case, applying \"addr & mask\" after combining hi/lo would zero out the\n> high 32 bits, which breaks 64-bit addressing.\n> > To preserve the original semantics, the mask should only be applied to the\n> low part before combining with the high 32 bits.\n> > So I suggest renaming the parameter to make this explicit. I will change this\n> function as below. What do you think?\n> >\n> > static uint64_t ehci_get_buf_addr(\n> \n> \"const\"\n> \n\n\nThanks for the suggestion.\nWill add.\nJamin\n\n> EHCIState *s, uint32_t hi, uint32_t lo,\n> >                                    uint32_t lo_mask) {\n> >      uint64_t addr = lo & lo_mask;\n> >\n> >      if (s->caps_64bit_addr) {\n> >          addr = deposit64(addr, 32, 32, hi);\n> >      }\n> >\n> >      return addr;\n> > }\n> Perfect, using \"const\":\n> \n> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>","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=DH6Zejp0;\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 4fxm6t6sFsz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 17:03:02 +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 1wDdDr-0004Dy-NT; Fri, 17 Apr 2026 03:02:39 -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 1wDdDo-0004BZ-NN; Fri, 17 Apr 2026 03:02:36 -0400","from mail-japanwestazlp170120003.outbound.protection.outlook.com\n ([2a01:111:f403:c406::3] helo=OS8PR02CU002.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 1wDdDl-0004r4-9B; Fri, 17 Apr 2026 03:02:36 -0400","from TYPPR06MB8206.apcprd06.prod.outlook.com (2603:1096:405:383::19)\n by KUXPR06MB8728.apcprd06.prod.outlook.com (2603:1096:d10:a2::22)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr\n 2026 07:02:25 +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.023; Fri, 17 Apr 2026\n 07:02:25 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Rtwyf0vtiOOrxlvS/7XNOjVYSqYNlYU9dn01PCaxAPA652qhLsJnQoCSMwX89oxL5cvxKmF4iazYHOFf2C9X639IFser+mlBZb+OpxOneJAMr7gbP9TlOL9DmMnjWnFfDJN1QpIi0VyYWWbJecpPNDC+pSrktUPF2UE+0ErNjOUNSyGPl97N0hF2p03cF5JHmTB/G0dVy/NMm6+oJVjYhrq55JHNOK53XdLJaSPrykhlnGlTKSnLy+HwFxcc8UBorj/wsGwKmIEw1Ln8anZTL1QsYlOJtwjJ1wKmR/H50smZiy4QXVa97dfp02czUF9qAfx5Mj96YUDdc5HHKU39uQ==","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=TltnyeyLQ6ojyKrMmcabjP4qegJCdV9yJXvI5tkDHys=;\n b=ZSXL/wy7CNt/hJMyuSu8fVRq8Pv4TwOeBknbU1oyKUtjgj6zUFm8ZlxuoONJTm1/6F+3rCi+S425PVfXYKxRvp6Q8nPGrJP7ZUYIZCfriSKWYxYDxHCqtXGMwijNI6hmHhHTW7nOEwqQohv0KQkK5xJmdRRF521OoKlbbLprbyaYqCUy7IEs2RJeICAszTH0NkyaBBezjynlqVFyzVvrV4mYt4m0kZRtcKbwYJF+Uz4n+cHlF+CDc8lq7X6NrN6h7x6rUhoHT1o0/gWNVU8HEhUef87o7K1eJKAny4zxXymomfD/lH3IPCsVsXGvW4Pc4iZYb5rrDA9Kdi9FFQF4UA==","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=TltnyeyLQ6ojyKrMmcabjP4qegJCdV9yJXvI5tkDHys=;\n b=DH6Zejp00NK4AXoae6KOSdcWMl30kPI+26va7S+nkXXPOflhUlXbnqBHQ2oYe1jbYN0XanP3mbfwMretFr/Wk2V0UxrJ6syOQpFBUPCUrUuzAtZygddIviw5yZ4kj0Rr4aUgtlBtmQ8eCVyjuGJ5/pDXhNHGhHW1fh+GfEEvkLJIcg+JFiNMYdp5MIk4YpaiqenhnkNJvQ275LIjYJ7OPnsTmU/inxnOQiUC0Jsu5KEzLnMtega8m3it/nnLO9LDYBxD1A6z879zD3/Tj/XTssbLVyc9R6EthbQUgQziTHkMOOXzBEfMiySNhy5ODn16R82eNnIXQdukNP1AxVhFcg==","From":"Jamin Lin <jamin_lin@aspeedtech.com>","To":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>, =?utf-8?q?C?=\n\t=?utf-8?q?=C3=A9dric_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 \"open list:ASPEED BMCs\" <qemu-arm@nongnu.org>,\n \"open list:All patches CC here\" <qemu-devel@nongnu.org>","CC":"Troy Lee <troy_lee@aspeedtech.com>, \"flwu@google.com\" <flwu@google.com>,\n \"nabihestefan@google.com\" <nabihestefan@google.com>","Subject":"RE: [PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","Thread-Topic":"[PATCH v3 09/17] hw/usb/hcd-ehci: Implement 64-bit QH descriptor\n addressing","Thread-Index":"AQHczUNObou9Fmh1/EmYf55F3wvnKbXitHqAgAAHusCAAAwQgIAADUlA","Date":"Fri, 17 Apr 2026 07:02:24 +0000","Message-ID":"\n <TYPPR06MB8206E85133AD461C8F7D0DE1FC202@TYPPR06MB8206.apcprd06.prod.outlook.com>","References":"<20260416014928.1279360-1-jamin_lin@aspeedtech.com>\n <20260416014928.1279360-10-jamin_lin@aspeedtech.com>\n <c03af2eb-c7e9-4954-9a53-b1575c7073f6@linaro.org>\n <TYPPR06MB82062B89BEDF49BA637CDC02FC202@TYPPR06MB8206.apcprd06.prod.outlook.com>\n <34bf26b3-298c-4c40-bf10-fd0e29058a5c@linaro.org>","In-Reply-To":"<34bf26b3-298c-4c40-bf10-fd0e29058a5c@linaro.org>","Accept-Language":"zh-TW, en-US","Content-Language":"zh-TW","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=DH6Zejp0;\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_|KUXPR06MB8728:EE_","x-ms-office365-filtering-correlation-id":"eba6c456-03ef-4029-e1f6-08de9c4f476d","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n ARA:13230040|1800799024|366016|7416014|376014|38070700021|921020|56012099003|18002099003|22082099003;","x-microsoft-antispam-message-info":"\n M8idSRR1XXDV3c3pBUM0o5nJXnkiK36ZsTW8il/GSjglR7HS1t4G6pcFkQ4lZmSG20xAVbnkDx6xLYQRgGPa/FFspHduyckHk2uigm6FhXhcIIwfMWkL/9Ga+Iqbn3/kZdcMKlUGxD9tn7qN5SI78LVKU5JrfuE2FCMiuf8YpcA9Rktt+UiWbnwD1ddiGVgOhNYt2JLFlbkVP09MqnQHdBg/Mm/eGtJ7+yDDB/zbj3lirsc8tTKMTrypG6KjZg8QvgImZ/aCXZfS8DRUEv7Wgdi3hSctlsa4vz2K5p+grTdiim/p06torC39TP/i3PYtOwZDnWQF1FehDEuri1P9U+QvpziblGd/+WIJDMMI0fbfpxQJVJR8spekgBobZJwBVsmZRRyHjM/Pym00LD+1oW/NBM7uTteRvWJvU5vzXtm99vbDVwAXqGcRRomHAeILKvMEcjM0kxZ3PjGyRYKj2Fm0UEdZvskxYnCxZi2zFrvqV7K+OCnjobUsE90xmT2220U9QI+Omi/3XtyahWDUEPkKD6fTqhAikYI0WnLByTpYzHwlvZqYGlxjHg+Aq+qX+V0xAPu2iM65cUwCrlY1Srf8TiY0dHbK91zkzVFQwYFUqaNevCAR1b+203PFIsEk/sUmuQ2+Ay3/hiSfOHtkW3/4Kf+QC4PFD1ipgiZv2FgaamLkK+1SVHfPrij63RG+KbVkYgfshSG95GDUBi4R+eFCnS50udADn/d7ja2UTKWUx0G+RkhAU+Gc6jC3OJeGBM3ToG72trRFD8wlPttwwhnUBiSHx5MhGuGPRyyXbbxuajx9auaEdCxRICXSDDjH","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:zh-tw; SCL:1;\n SRV:; IPV:NLI; SFV:NSPM; H:TYPPR06MB8206.apcprd06.prod.outlook.com; PTR:;\n CAT:NONE;\n SFS:(13230040)(1800799024)(366016)(7416014)(376014)(38070700021)(921020)(56012099003)(18002099003)(22082099003);\n DIR:OUT; SFP:1102;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?utf-8?q?5oaZLIlOYB/+otVHgy4BbOnn/j/E?=\n\t=?utf-8?q?j/AhdHKHWdc+sqwEUreEsijuxa+B6Ak78ePKwRFGjO4l7wUy2L4D/IemmG+KAAL5k?=\n\t=?utf-8?q?ztJOeFMvmuAugJrvVvuoHDY0gk6B5HOE+Xq1Tx3k/yaZIwBcDsxBj4/HpXIpnUNfk?=\n\t=?utf-8?q?xoC6Kg3w/tBlY/YczCAZPfMT+jnMKHnJMEQrbXl87oldfzYbhMKWzLDCsCF25mhL/?=\n\t=?utf-8?q?IreB0Hr24bALbrswRME36JNcecVqEWw9sNn8vzGQF/iNUggvTrTY8Luau6fY+afp1?=\n\t=?utf-8?q?RiaKxqg1xz9zTvQOvHO/9UHVGx7vFrNfovO7astpIATt7eL2j5ClsB97+ZLyjLwzU?=\n\t=?utf-8?q?Cws2/a+n+XPvcxpfn3i+bGw8lHm/mNrHuzGR/dlUpO7G105jFk31PdOFG9qttpgJo?=\n\t=?utf-8?q?pEeJsoBHL3cQGjAFP+imkMLP5jYBnPRT2MdUn/+McFQHjt/v0b41rK7R+dgoxYEHQ?=\n\t=?utf-8?q?TbiAK6o+nv3h5XE0/t0UbxWrCRtoQRkeq6V1yInAJ4GSIBJre/AMiIK9j+zJerFVc?=\n\t=?utf-8?q?7HrrIJYAzRRDwaeCWZQagtkKL4BCI/Klk2wvT62+Nhv6mDm3uSHQtT/KAeFWwG7bz?=\n\t=?utf-8?q?wdI+/LzEpP+1CcnJ6MpjzTy/rNwXdeTMBKat98qEaecG71DKnYqExf7F7D7uFRTGv?=\n\t=?utf-8?q?HNsqNTyNtq0eZJxfakcSGwOSlKHn2S9D5kv6G/yZMq0o5K/juQFGtQAepnJYtZBNW?=\n\t=?utf-8?q?Z5oZNFSvyBiNDuCR+6mdWedreAfaMJkiU/jYUW5mPa5u+zicNyUir9e70lek5FmGe?=\n\t=?utf-8?q?kbGGHNawN71fs5FEk4CSlfo95nxNzK9XZsjdPHLuA6ljmylYMaHXA3WEhcUyMZipC?=\n\t=?utf-8?q?+swuw5hhGZVgygc61fmVd9mD9PtGbwuoqVooYHXblHlfa7pE8GbNRJ8J/R07oAqRA?=\n\t=?utf-8?q?yowYrjfkzqpHhSSYBpr91hBI6fHjJ6Kh9d6Cfkymxlo+CVDjO6GvSkLx4xqt3lLzZ?=\n\t=?utf-8?q?qgE5WAJD1q1rNpPDm2lAgdB1FZ4liJvForoX5YqQLLM3F2km8OLwzyWhgJluwNVkH?=\n\t=?utf-8?q?SiF9nKQkKOyMLrmxuYxtJhdv7BLw36UNo8/utr1biKeVhfxWsO0nGZ1T7YW08yMLC?=\n\t=?utf-8?q?595nWI6fcHqX9+SULI9ZbIWqjl1DSD0yNI2g+9a2C6EBHySIN/6r0rnNNou+7hMCI?=\n\t=?utf-8?q?teLoQkw3h0cGam7Nr3PSHd7XGZt+OZNoO3poSE6WBbyCuPxx7ycDx9XbKgtgrC5mE?=\n\t=?utf-8?q?X2RE+lBbxFCbMnRY6bCZQiAaEKrfdgBj0ojq5Ifpx7MzRvBhrcJljKjFQLhhT/QCN?=\n\t=?utf-8?q?J1ldpICaotjSmn66UybK3EcXAo6++MxjkFt07cdm2Ptz00Ef/eYwACJzm+HIidMcD?=\n\t=?utf-8?q?VArjAH7+OFDZD4MyOvjEPaypbjJlS+ejXFi/2pGvm8BscpciUAeH9Y9SH39GvrlYb?=\n\t=?utf-8?q?ImiOwyNf1MM/KoavB2yYSWKr1bNTmHgahV2xzYmEWtihWJ/ypX5W/kXL1ETX96Gae?=\n\t=?utf-8?q?Y1FSozEXZNY5yTOMvycBqqzOcx9GDK7BDnfJYyifFXsmnAraWjJLJO49wormPE8rR?=\n\t=?utf-8?q?VZ7hGP5b1YRmT4dHoH0WPe86igY9xKHgTBwo9EHqSK9NST1+0uSIq/xG2eZJbEK4R?=\n\t=?utf-8?q?xmmjvww3tutzd4xXz7Mgn55CnpE9o+lRhV6Mocw/06HCELFXiuOFZQBh5jA8+P0Ll?=\n\t=?utf-8?q?M+W/6Btw/nTX/BdbeWBwl3lfW4+67nZg=3D=3D?=","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n aEhA3BaT49XS/00Lp/pSzjO4kI2kHFOt1zYek9o8whRJEUDUZ36T14x1QX5/kiQByWVcGnBVSqw1f4H9hPVNzGAcxq+nh3nrRcLIG//WtPUmHHL0RRwZB8R2n1tcjgG/gH5ko3XW9Yb2TYsDJHocaHPI2fhtYkfEYDVPSjDqesjR+29x1lEvjxAUDpVaJAT5T/HpHWeoaPtf77784hcIxWFcDcrEDiAAz2e+UtNvXcrluDE4Cz0A3x3q0LV0x27BqbDNiputZTP6CnJhonWdKwoJLfw0suxDGIG8nqd7Sp1wHpteBWm8hn6eVBTQjrH6kAnFQuXN4FmRrXlsSQNd/w==","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 eba6c456-03ef-4029-e1f6-08de9c4f476d","X-MS-Exchange-CrossTenant-originalarrivaltime":"17 Apr 2026 07:02:24.7338 (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 jKtJqU94peSLx9d05mP1u0slPb3xe2/X4u3VpIjO0rHJEX/EqZszgqVSXyoe+lXElidJ3qQ6WdfW0Bhs8E9I1tQQzu3BCveE5Fm/9vl1r4w=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"KUXPR06MB8728","Received-SPF":"pass client-ip=2a01:111:f403:c406::3;\n envelope-from=jamin_lin@aspeedtech.com;\n helo=OS8PR02CU002.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"}}]