From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0722.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe48::722]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1BAD081ECE for ; Tue, 15 Nov 2016 15:56:09 -0800 (PST) Received: from AT5PR84MB0276.NAMPRD84.PROD.OUTLOOK.COM (10.162.138.22) by AT5PR84MB0274.NAMPRD84.PROD.OUTLOOK.COM (10.162.138.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10; Tue, 15 Nov 2016 23:56:12 +0000 Received: from AT5PR84MB0276.NAMPRD84.PROD.OUTLOOK.COM ([10.162.138.22]) by AT5PR84MB0276.NAMPRD84.PROD.OUTLOOK.COM ([10.162.138.22]) with mapi id 15.01.0721.015; Tue, 15 Nov 2016 23:56:12 +0000 From: "Anbazhagan, Baraneedharan" To: "Tian, Feng" , "edk2-devel@lists.01.org" Thread-Topic: USB hub port reset Thread-Index: AdI9P9a4p+GKnaQeTV6wi4G+bYD8YgA2K+ggAABY8XAABZq8YAARLQ7QAB6ZSoAAKoHsEA== Date: Tue, 15 Nov 2016 23:56:11 +0000 Message-ID: References: <7F1BAD85ADEA444D97065A60D2E97EE566E4F108@SHSMSX101.ccr.corp.intel.com> <7F1BAD85ADEA444D97065A60D2E97EE566E4F285@SHSMSX101.ccr.corp.intel.com> <7F1BAD85ADEA444D97065A60D2E97EE566E4FADD@SHSMSX101.ccr.corp.intel.com> In-Reply-To: <7F1BAD85ADEA444D97065A60D2E97EE566E4FADD@SHSMSX101.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=anbazhagan@hp.com; x-originating-ip: [15.65.254.4] x-microsoft-exchange-diagnostics: 1; AT5PR84MB0274; 7:rf8KdDssoZ8fGGqzBgw4hgi9/UkcDhOCB6dQieLhhdCw0mTHmUWR5mi49CGE7QYuUNIz3ErfM3nnkroem1NiKlpA9AUPtwwmI6NwIwZFu/2qnQ9xP0HAEeY1Eth1XeqxssnxLblK/93Wo95BeVRtxOYo1e7oALR0zMnOMnVrr4afc5bpdreG4q204L3xVGfveyU/WpHXM0eNbUo9Y6T6EefHSP26kDq381fEUg2T9wK9ujpt1QETsJYU7wHGS0T+PRGsLYX+KUPAMs5SficuWbS5FJxqT0jofn/F6ngPnY/hJZdNpcx0OLbF2eM6I6EUaNHYfwrNhLSkQ5fVO5vXWYTM5SBjRmvuSGt9qdGkXP4= x-ms-office365-filtering-correlation-id: def9acb4-9877-4430-8391-08d40db2fa5b x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AT5PR84MB0274; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(166708455590820)(162533806227266)(228905959029699)(73583498263828); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6060326)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6061324); SRVR:AT5PR84MB0274; BCL:0; PCL:0; RULEID:; SRVR:AT5PR84MB0274; x-forefront-prvs: 012792EC17 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(7916002)(199003)(13464003)(6602003)(377454003)(189002)(6116002)(66066001)(7696004)(3846002)(3660700001)(102836003)(105586002)(92566002)(229853002)(9686002)(2906002)(8936002)(81166006)(99286002)(122556002)(2950100002)(81156014)(93886004)(8676002)(2501003)(106356001)(33656002)(68736007)(2900100001)(189998001)(86362001)(87936001)(101416001)(7846002)(3480700004)(3280700002)(7736002)(54356999)(50986999)(76176999)(77096005)(305945005)(5001770100001)(74316002)(107886002)(5660300001)(97736004)(6506003)(19627235001); DIR:OUT; SFP:1102; SCL:1; SRVR:AT5PR84MB0274; H:AT5PR84MB0276.NAMPRD84.PROD.OUTLOOK.COM; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: hp.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hp.com X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2016 23:56:11.9061 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ca7981a2-785a-463d-b82a-3db87dfc3ce6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT5PR84MB0274 Subject: Re: USB hub port reset X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Nov 2016 23:56:09 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Feng, Below change solves the problem with a device behind the hub. Do we still n= eed the 10ms delay in UsbHubResetPort function for manual port reset in cas= e of XHCI? Thanks, Baranee -----Original Message----- From: Tian, Feng [mailto:feng.tian@intel.com]=20 Sent: Monday, November 14, 2016 10:28 PM To: Anbazhagan, Baraneedharan ; edk2-devel@lists.01.org Cc: Tian, Feng Subject: RE: USB hub port reset Baranee Supposing are using latest usb code in EdkII trunk. We send ADDRESS DEVICE CMD in XhcInitializeDeviceSlot(), which will cause X= HC issue a USB SET_ADDRESS request to the USB Device. There are two possible paths: 1. Reset_Change bit gets set after connection without manually port reset. UsbHubGetPortStatus()->XhcPollPortStatusChange()->(if RESET_C bit is set)->= XhcInitializeDeviceSlot() 2. Reset_Change bit gets set after manually Reset= Port operation. UsbHubResetPort()->UsbHubSetPortFeature()->Stall(20)-> UsbHubGetPortStatus(= )->(invoke above code in XHCI)->(if RESET_C bit is set)->Stall(10) According to your info, it looks like we need add 10ms delay to XhcInitiali= zeDeviceSlot() like below: diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pc= i/XhciDxe/XhciSched.c index e37f674..bb68f34 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c @@ -2115,6 +2115,7 @@ XhcInitializeDeviceSlot ( // 8) Issue an Address Device Command for the Device Slot, where the com= mand points to the Input // Context data structure described above. // + gBS->Stall (10 * 1000); ZeroMem (&CmdTrbAddr, sizeof (CmdTrbAddr)); PhyAddr =3D UsbHcGetPciAddrForHostAddr (Xhc->MemPool, Xhc->UsbDevContext= [SlotId].InputContext, sizeof (INPUT_CONTEXT)); CmdTrbAddr.PtrLo =3D XHC_LOW_32BIT (PhyAddr); @@ -2321,6 +2322,7 @@ XhcInitializeDeviceSlot64 ( // 8) Issue an Address Device Command for the Device Slot, where the com= mand points to the Input // Context data structure described above. // + gBS->Stall (10 * 1000); ZeroMem (&CmdTrbAddr, sizeof (CmdTrbAddr)); PhyAddr =3D UsbHcGetPciAddrForHostAddr (Xhc->MemPool, Xhc->UsbDevContext= [SlotId].InputContext, sizeof (INPUT_CONTEXT_64)); CmdTrbAddr.PtrLo =3D XHC_LOW_32BIT (PhyAddr); Could you please have a try to see if it solves your problem? Thanks Feng -----Original Message----- From: Anbazhagan, Baraneedharan [mailto:anbazhagan@hp.com] Sent: Monday, November 14, 2016 9:46 PM To: Tian, Feng ; edk2-devel@lists.01.org Subject: RE: USB hub port reset In case of XHCI, TRB_TYPE_ADDRESS_DEV/SetAddress occurs within XhcPollPortS= tatusChange. Seem we don't have 10ms/TRSTRCY for the devices behind hub con= nected to XHCI or am missing something here? In EDK2, 10ms(TRSTRCY) delay occurs before clear port status and in case of= Linux TRSTRCY delay is after clearing port status. Thanks Baranee > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of=20 > Tian, Feng > Sent: Sunday, November 13, 2016 10:38 PM > To: Anbazhagan, Baraneedharan ; edk2-=20 > devel@lists.01.org > Cc: Tian, Feng > Subject: Re: [edk2] USB hub port reset >=20 > I don't catch what you mean. We have had 10ms delay for port reset.=20 > Which line of UsbHub.c do you think there is problem? >=20 > Quote from USB2.0 spec: > "Hubs must be able to accept all hub requests and devices must be able=20 > to accept a > SetAddress() request (refer to Section 11.24.2 and Section 9.4 > respectively) after the reset recovery time 10 ms (TRSTRCY) after the res= et is removed." >=20 > Thanks > Feng >=20 > -----Original Message----- > From: Anbazhagan, Baraneedharan [mailto:anbazhagan@hp.com] > Sent: Monday, November 14, 2016 11:33 AM > To: Tian, Feng ; edk2-devel@lists.01.org > Subject: RE: USB hub port reset >=20 > I didn't mean to have extra delays. Am asking whether EDKII have to be=20 > updated for 10ms reset recovery time regardless of port status to align w= ith spec? >=20 >=20 > >From: Tian, Feng [mailto:feng.tian@intel.com] > >Sent: Sunday, November 13, 2016 7:46 PM > >To: Anbazhagan, Baraneedharan ;=20 > >edk2-devel@lists.01.org > >Cc: Tian, Feng > >Subject: RE: USB hub port reset > > > >Hi, Baranee > > > >Linux wait 10 + 40 ms (TRSTRCY =3D 10 ms, plus extra 40 ms). Do you=20 > >mean EDKII > should be same with linux to wait more time? > > > >Thanks > >Feng > > > >From: Anbazhagan, Baraneedharan [mailto:anbazhagan@hp.com] > >Sent: Sunday, November 13, 2016 11:53 AM > >To: mailto:edk2-devel@lists.01.org; Tian, Feng=20 > > > >Subject: USB hub port reset > > > >EDK2 have reset recovery time of 10ms for hub port based on port=20 > >status reset bit > but USB spec doesn't mention that port status can be used for t6/reset=20 > recovery time. Could you please clarify? > > > >USB vendor mentions EDK2 doesn't have reset recovery time on hub port=20 > >reset and also highlighting EDK2 hub port reset differs from=20 > >https://github.com/torvalds/linux/blob/master/drivers/usb/core/hub.c# > >L2 > >789 > > > >-Baranee > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel