From nobody Fri Apr 26 12:57:52 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+64945+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+64945+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=hpe.com Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 159902865221477.559067165736; Tue, 1 Sep 2020 23:37:32 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id vzzxYY1788612xaISTby9EvI; Tue, 01 Sep 2020 23:37:31 -0700 X-Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web12.3372.1598986570883769425 for ; Tue, 01 Sep 2020 11:56:11 -0700 X-Received: from pps.filterd (m0150244.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 081Im140008220; Tue, 1 Sep 2020 18:56:09 GMT X-Received: from g4t3426.houston.hpe.com (g4t3426.houston.hpe.com [15.241.140.75]) by mx0b-002e3701.pphosted.com with ESMTP id 337fpd0j8w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 01 Sep 2020 18:56:09 +0000 X-Received: from G9W8455.americas.hpqcorp.net (g9w8455.houston.hp.com [16.216.161.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g4t3426.houston.hpe.com (Postfix) with ESMTPS id 84F3371; Tue, 1 Sep 2020 18:56:07 +0000 (UTC) X-Received: from G4W9121.americas.hpqcorp.net (2002:10d2:1510::10d2:1510) by G9W8455.americas.hpqcorp.net (2002:10d8:a15e::10d8:a15e) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 1 Sep 2020 18:55:53 +0000 X-Received: from NAM04-CO1-obe.outbound.protection.outlook.com (15.241.52.11) by G4W9121.americas.hpqcorp.net (16.210.21.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Tue, 1 Sep 2020 18:55:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g0+5GiSEv80fC2wZy1MdK2VmoduQKVlcCtNbPqblMCzCZ/m+n9WK33OmsKYb/D1cTNE2Ga+zma8tXyoH7yaZyE6LG2f35ELP/27aAFiUqP5GXf3FP2p41jxy/SIsUFliQ7AucPCHYNhXnofNOH4iGm2YKg6kX9MExhDqmKJlQMx7Uvj8x3dQGmBNB0Y/d0HC2TpMUrkddgtRfHPdOUSvj9tAoYP/tQb3GPx8DJ7fBrc1zeVHPtsoYciwCm3MV0nopEUawZ8ffJIa6fTOYnITI8WybS9tdcTMeBqmN2yvC7eV7BZRF/BC1rmJSBFGApe+0W9pjL3v7Xs+u7m4FtKc7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dGHSTctIesWWKmtJGpvWAs9JcSR6QqSkvlW3tVU4GdM=; b=SN8kR1V3AEcFLibp9CkZzTxM91vtHEH3lRLnlYchqtHSkYXR+9locBUp4Pw7RC4J3Y1mtxJ+sesfPiJv9FaoaXam4hIsPcoKc3rGHBwc1mxV1hvjwE0SinEbjfwdOBDGSpSH9TXfUNN3RVA5pwdH4j6EW1BIFVyfYYfpd0aIJz3t6rTAu3kaBNKtNsq3I6p7dYdaXmDfFDdhtXodXIXjyMJJcXmkmHG9Uzq3Xacy0SAwrb38E6+cKdGlB8q+MspgAUo+SmHs2I8QTo1pZ95dS+UjJ2xlX1q5a/mNiwVXh3kwuXQ9+8rP/9UNu7m52NQqo5iScgGGKRVh2E03h5IZbQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none X-Received: from TU4PR8401MB0478.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7709::19) by TU4PR8401MB0591.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:770c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Tue, 1 Sep 2020 18:55:51 +0000 X-Received: from TU4PR8401MB0478.NAMPRD84.PROD.OUTLOOK.COM ([fe80::4968:3a88:e4a6:5cea]) by TU4PR8401MB0478.NAMPRD84.PROD.OUTLOOK.COM ([fe80::4968:3a88:e4a6:5cea%8]) with mapi id 15.20.3326.025; Tue, 1 Sep 2020 18:55:51 +0000 From: patrick.henz@hpe.com To: CC: henz , Jian J Wang , Hao A Wu , Ray Ni Subject: [edk2-devel] [PATCH 1/1] MdeModulePkg/XhciDxe: Fix Broken Timeouts Date: Tue, 1 Sep 2020 13:55:06 -0500 Message-ID: In-Reply-To: References: X-ClientProxiedBy: CH2PR12CA0015.namprd12.prod.outlook.com (2603:10b6:610:57::25) To TU4PR8401MB0478.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7709::19) X-MS-Exchange-MessageSentRepresentingType: 1 X-Received: from 255.255.255.255 (255.255.255.255) by CH2PR12CA0015.namprd12.prod.outlook.com (2603:10b6:610:57::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Tue, 1 Sep 2020 18:55:51 +0000 X-Originating-IP: [76.17.188.158] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 31703864-1190-48ad-293c-08d84ea8a5c5 X-MS-TrafficTypeDiagnostic: TU4PR8401MB0591: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4125; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: kb8CnBKbi8UGITQ4Q660xJnRW9OMu0yJBbluuQOhb0vfd44UNzA9KNQ/FBx4rTUhTN3k/TtA6Nxu3N4RlBwyGDJwo4CVn6TCaHkOqqkoLN6nuxWaLeKxPVrQSjzVHvgNK4tFNXd7AndG3D2AB+7NFhgXi/BFVCfwHsM6EGiwu6HkMLix0Xo5CBjFM5qpJXLHeE1a6X8P43A9wTtSVp/jt6qblLYdLcxV9wChE1n9Z1zE/TpZJm46SkYEV+KJoa+jAM2NfI+anMfIGnV/q5TS7ZdQ7bmz41FjfKiXjVSQCpNOk4YWiX0pcl7Utc6k7KGozNb/YbSfcCiVmV0HE8s2JmbXVjKjgZcf9Zjd1bGoApD0Y8MiL8qsC0wPZYGt1SdeUiUbKHPmcmoDLxIUhp1XRg== X-MS-Exchange-AntiSpam-MessageData: 6r91ZdafllNr8KuNr9t4mI0ClxIlbQdRPuzWp49+w3FhmbhXz82q3eeU29uKlRYtAzfbggLrxOBsN6iVjJaT8P+akmuufuWWta3BdSv1M0Ahq9NjKRQ92ONCMzoYItMfOAxkXXrdQelX3WWoNvz62wLJg/KV4wPR72AHjuPVfjqCOsm5fBvo78jYGGIvoXfGewm7dNsvuXVV/O7/bO3x0XBrlXILSfchT+2fpvvmc5oJmDFxzc5PxOo6w58WOpDWN+xkljHXfPt4nM5g8TJCjRiuK9MAmW3Ca868ZiXQF+MVYlURdJMtxt5hyiR+12BBOVjZDFDPZ3l2e9Q7kUZe7t+FU4xIXqnsbdsjc+XV26n7odYe+bg6FN1x0rpd7z/sIW6EPakz+c6jVkWpIhyVqwJpL8bxniqBdIWAJl71PtQYtartOijFLgm922FWkiZcTIiUPsVB2fxSTF5Tj2HzatBrvf4WiyCKFymJ07O2MjvtFN4A+FuQzJTZlTU+D9TLxeshC7sP7VCw13ltqGgSHZejR1Pkuwy+9z1YdBj4YGXDOe+1CN8cbV1OqgZOwfmmI5O2QL4Pk8MPU9SPTQMnh/3XWVpDVvbdoBSxUgW0oBJOnfMeszVsRWYKLwAw97/mdIjrr8k20YmqmTFBASodrw== X-MS-Exchange-CrossTenant-Network-Message-Id: 31703864-1190-48ad-293c-08d84ea8a5c5 X-MS-Exchange-CrossTenant-AuthSource: TU4PR8401MB0478.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2020 18:55:51.7398 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: f4Sc/ThJO7YmgkTGdc4HPjCtAsVbUj0WHnHjaWsj8OpBARVDAe8W+ZnnoID7c38iZSkFzlTM/pLoS0FtAxztkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TU4PR8401MB0591 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,patrick.henz@hpe.com X-Gm-Message-State: AWmqWB2e62UgYJ7ZGgdTI1jfx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1599028651; bh=dJ61k73RWEE33KW7J3s9ujmQ2wI7vIr8NQFbRdHpzRg=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=nsCqNMYXSyKi74CClYOFI9t5g98Nv8ZNQKkc18B0VV220+bIks8VpqD2zSe96/zWAVs hvZNa+d+3S+M3n4ht52RrNDReJWM636yqFdoaZvExJQPePWG9d3pmPsZfMfnbiapfv1j2 EHSf+2NNGSyV9J27MoiBqqGsyQNOZOFCyVY= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: henz REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D2948 Timeouts in the XhciDxe driver are taking longer than expected due to the timeout loops not accounting for code execution time. As en example, 5 second timeouts have been observed to take around 36 seconds to complete. Use SetTimer and Create/CheckEvent from Boot Services to determine when timeout occurred. Cc: Jian J Wang Cc: Hao A Wu Cc: Ray Ni Signed-off-by: Patrick Henz --- MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c | 28 ++++++++++++++++--- MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 34 +++++++++++++++++------- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c b/MdeModulePkg/Bus/Pci/= XhciDxe/XhciReg.c index 42b773ab31..5f7507f0a5 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c @@ -442,17 +442,37 @@ XhcWaitOpRegBit ( IN UINT32 Timeout ) { - UINT32 Index; - UINT64 Loop; + EFI_STATUS Status; + EFI_EVENT TimeoutEvent; =20 - Loop =3D Timeout * XHC_1_MILLISECOND; + if (Timeout =3D=3D 0) { + return EFI_TIMEOUT; + } + + Status =3D gBS->CreateEvent ( + EVT_TIMER, + TPL_CALLBACK, + NULL, + NULL, + &TimeoutEvent + ); =20 - for (Index =3D 0; Index < Loop; Index++) { + if (!EFI_ERROR (Status)) { + Status =3D gBS->SetTimer (TimeoutEvent, + TimerRelative, + EFI_TIMER_PERIOD_MILLISECONDS(Timeout)); + } + + do { if (XHC_REG_BIT_IS_SET (Xhc, Offset, Bit) =3D=3D WaitToSet) { return EFI_SUCCESS; } =20 gBS->Stall (XHC_1_MICROSECOND); + } while (!EFI_ERROR(Status) && EFI_ERROR(gBS->CheckEvent (TimeoutEvent))= ); + + if (TimeoutEvent !=3D NULL) { + gBS->CloseEvent (TimeoutEvent); } =20 return EFI_TIMEOUT; diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pc= i/XhciDxe/XhciSched.c index ab8957c546..cf271f0493 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c @@ -1273,11 +1273,11 @@ XhcExecTransfer ( ) { EFI_STATUS Status; - UINTN Index; - UINT64 Loop; UINT8 SlotId; UINT8 Dci; BOOLEAN Finished; + EFI_EVENT TimeoutEvent; + EFI_STATUS TimerStatus; =20 if (CmdTransfer) { SlotId =3D 0; @@ -1292,28 +1292,44 @@ XhcExecTransfer ( } =20 Status =3D EFI_SUCCESS; - Loop =3D Timeout * XHC_1_MILLISECOND; - if (Timeout =3D=3D 0) { - Loop =3D 0xFFFFFFFF; - } + + TimerStatus =3D gBS->CreateEvent ( + EVT_TIMER, + TPL_CALLBACK, + NULL, + NULL, + &TimeoutEvent + ); =20 XhcRingDoorBell (Xhc, SlotId, Dci); =20 - for (Index =3D 0; Index < Loop; Index++) { + if (!EFI_ERROR (TimerStatus)) { + TimerStatus =3D gBS->SetTimer (TimeoutEvent, + TimerRelative, + (0 =3D=3D Timeout)? + (EFI_TIMER_PERIOD_MICROSECONDS(0xFFFFFFFF= )): + (EFI_TIMER_PERIOD_MILLISECONDS(Timeout))); + } + + do { Finished =3D XhcCheckUrbResult (Xhc, Urb); if (Finished) { break; } gBS->Stall (XHC_1_MICROSECOND); - } + } while (!EFI_ERROR(TimerStatus) && EFI_ERROR(gBS->CheckEvent (TimeoutEv= ent))); =20 - if (Index =3D=3D Loop) { + if (!Finished) { Urb->Result =3D EFI_USB_ERR_TIMEOUT; Status =3D EFI_TIMEOUT; } else if (Urb->Result !=3D EFI_USB_NOERROR) { Status =3D EFI_DEVICE_ERROR; } =20 + if (TimeoutEvent !=3D NULL) { + gBS->CloseEvent (TimeoutEvent); + } + return Status; } =20 --=20 2.27.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#64945): https://edk2.groups.io/g/devel/message/64945 Mute This Topic: https://groups.io/mt/76577402/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-