From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb0-x234.google.com (mail-yb0-x234.google.com [IPv6:2607:f8b0:4002:c09::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6100821CB57DC for ; Wed, 28 Jun 2017 07:34:27 -0700 (PDT) Received: by mail-yb0-x234.google.com with SMTP id s9so19626630ybe.3 for ; Wed, 28 Jun 2017 07:35:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=gpteHi+1X2gBRAzIzG4VlmKpdT2U7myZTfGm2xvQLsM=; b=P0umA17di8AG9YAtWqFzKpHwGzzkOV76dA5DfOXXoHct7P7sMlEkdnnBFSID8rk2hU RHoIiwcLNCxNCYvsYKxvyMkUVrC4oPFP7S3bx9H8u+0EWBVGAD+N3UcZ0r/SGCS7KCd5 jmJ9K0553x6QsbOP/Bc1lQ1NlUTSJtPJOrhj2EW4/D1l4TjrcZ+CSSxC8rpblVRhahp9 Jg/VuNVsNj2PoQzD77CSf12r+IHVS360QV/gT1BLEUsSVriWBs1XBoGUKV0W+M6GePOR 2pIe3Y58vDRuBJADaOdScCirKlNZxUHKjaHp7anWySjG8N9SQ/aBn4cX9jzu9RIdY1sH sSHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=gpteHi+1X2gBRAzIzG4VlmKpdT2U7myZTfGm2xvQLsM=; b=txASPWjjpWCW4CuAYqS1/6MpcQ7l9GCpTONhwN8xGJNjsIr8Soj9ZmfzPUdBU7pixT qUaKyikHi6qBdWdQGcaw/oF3b9jHEXbyuXwTf6adUQKzGrBcEh/erf6T15KEOr9yQBxH qKpOmPrsF/1iq6zWDv5atY8XKQXlG6Wfs7jtX45m/uC06NyaB9EoXtV/yz+leYrvrtzT pctGZ/tWZ1FsC6wYy7jg9GJaeVBp9eF1cmLwhT20jZyINSPhI1ZB7DidUqWACCCzg16M gO9gYlNRgNoC8HzehEXxh7kQHtL/qVm7XDe/tty1zO+Z3IUWe9qe2EH4HDFcSpqNU2sP Rkpg== X-Gm-Message-State: AKS2vOw0ckHbl5JUlOk0stAeUh6UjkWhMLXXcNzHvhqxMFLRV9M8/WJ8 IyTRiYRu21XUicNKwtswjFZV5JcSow== X-Received: by 10.37.208.66 with SMTP id h63mr8213823ybg.163.1498660558029; Wed, 28 Jun 2017 07:35:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.209.86 with HTTP; Wed, 28 Jun 2017 07:35:37 -0700 (PDT) In-Reply-To: References: From: TVKR Date: Wed, 28 Jun 2017 09:35:37 -0500 Message-ID: To: Amit kumar Cc: "edk2-devel@lists.01.org" X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: DisconnectController API not working. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jun 2017 14:34:27 -0000 Content-Type: text/plain; charset="UTF-8" Hi Amit, Here is the output. It is the call 'gBS->DisconnectController (ControllerHandle, NULL, NULL)' (where ControllerHandle=7219EA98) that doesn't seem to correctly work. FS0:\> drivers Output Truncated.. 176 07042200 B Y Y 1 1 Intel(R) PRO/1000 7.3.18 PCI-E PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0)/Offset(0x1D200,0x3E9FF) 178 07042200 B Y Y 1 1 Intel(R) PRO/1000 7.3.18 PCI-E PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x1)/Offset(0x1D200,0x3E9FF) FS0:\> dh 176 -d -v 176: 7219E798 DriverVersion 0x00020028 EfiDriverHealthProtocolGuid DriverConfiguration DriverDiagnostics2 ComponentName2 DriverDiagnostics ComponentName DriverBinding ImageDevicePath LoadedImage Revision......: 0x00001000 ParentHandle..: 72B70A18 SystemTable...: 788FEF18 DeviceHandle..: 7219EA98 FilePath......: 7219E998 OptionsSize...: 0 LoadOptions...: ImageBase.....: 776A0000 ImageSize.....: 555E0 CodeType......: EfiBootServicesCode DataType......: EfiBootServicesData Unload........: 776A0708 Child[176] : Intel(R) PRO/1000 7.3.18 PCI-E Driver Image Name : Offset(0x1D200,0x3E9FF) Driver Version : 07031800 Driver Type : Bus Configuration : YES Diagnostics : YES Child Controllers : Ctrl[175] : PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0) Child[219] : Intel Ethernet Server Adapter I350-T2 FS0:\> dh 175 -d -v 175: 7219EA98 UnknownDevice UnknownDevice BusSpecificDriverOverride LoadFile2 PCIIO DevicePath PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0) Controller Name : PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0) Device Path : PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0) Controller Type : BUS Configuration : NO Diagnostics : NO Managed by : Drv[176] : Intel(R) PRO/1000 7.3.18 PCI-E Parent Controllers : Parent[75] : PciRoot(0x0) Child Controllers : Child[219] : Intel Ethernet Server Adapter I350-T2 Thanks On Wed, Jun 28, 2017 at 9:07 AM, Amit kumar wrote: > Hi Tresko, > > >Hi Amit, > > >I am seeing the exact same issue on my system with DisconnectController. > The shell command 'disconnect' works but when I use the > gBS->DisconnectController >call from my application it doesn't seem to > really disconnect the same controller (even though the call returns > SUCCESS) and it still appears to be managed by >driver. I even checked the > ControllerHandle passed and it looks correct. Were you able to resolve this > eventually? > > Yes i was able to resolve it. It might be helpful if you can tell me the > output of dh -d command. > > Thanks > > Amit > > > ------------------------------ > *From:* TVKR > *Sent:* Wednesday, June 28, 2017 6:06:11 PM > *To:* edk2-devel@lists.01.org; akamit91@hotmail.com > > *Subject:* Re: [edk2] DisconnectController API not working. > > BTW, I ported the disconnect code (under ShellPkg\Library\UefiShellDriver1CommandsLib) > to a standalone application and it fails too. Looks like there is something > else in the shell app that is taking care of properly disconnecting the > controller. > > Thanks > > On Tue, Jun 27, 2017 at 5:54 PM, TVKR wrote: > >> Hi Amit, >> >> I am seeing the exact same issue on my system with DisconnectController. >> The shell command 'disconnect' works but when I use the >> gBS->DisconnectController call from my application it doesn't seem to >> really disconnect the same controller (even though the call returns >> SUCCESS) and it still appears to be managed by driver. I even checked the >> ControllerHandle passed and it looks correct. Were you able to resolve this >> eventually? >> >> >> Thanks >> >> >> -----Original Message----- >> From: edk2-devel [mailto:edk2-devel-bounces at lists.01.org ] On Behalf Of Amit kumar >> Sent: Tuesday, April 4, 2017 12:07 AM >> To: Tian, Feng > >> Cc: edk2-devel at lists.01.org >> Subject: Re: [edk2] DisconnectController API not working. >> >> No i am not trying to disconnect USB controller in use. >> >> ________________________________ >> From: Tian, Feng > >> Sent: Wednesday, April 5, 2017 8:21:36 AM >> To: Andrew Fish; Amit kumar >> Cc: edk2-devel at lists.01.org ; Tian, Feng >> Subject: RE: [edk2] DisconnectController API not working. >> >> Kumar, >> >> Do "map -r" at first please. >> >> >> PS: for the issue you encounter, are you trying to disconnect the usb controller in use? Please note at this time you are reading the file from usb key. It means the disconnect will never succeed. >> >> Thanks >> Feng >> >> -----Original Message----- >> From: edk2-devel [mailto:edk2-devel-bounces at lists.01.org ] On Behalf Of Andrew Fish >> Sent: Tuesday, April 4, 2017 12:07 AM >> To: Amit kumar > >> Cc: edk2-devel at lists.01.org >> Subject: Re: [edk2] DisconnectController API not working. >> >> >> >* On Apr 3, 2017, at 2:58 AM, Amit kumar > wrote: >> *>>* Hi Andrew , >> *>>* I did some testing and found out, same code works fine on Server boards but it fails on desktop boards. >> *> >> Servers tend to connect less things as it can take a long time. >> >> >* I Have double checked the ControllerHandle by printing its handle index using ConvertHandleToHandleIndex(ControllerHandle), the ControllerHandle looks correct. >> *>>>* I have one new query; >> *>>* i have made a startup.nsh file in which i am issuing load driver.efi , i am getting file not found. >> *>>* i have also tried using load fs0:driver.efi, and again i get file not found. I have been trying to run this script from internal shell as well as usb shell. >> *> >> Does that command work if you boot the shell? >> >> Thanks, >> >> Andrew Fish >> >> >>* Regards >> *>>* Amit Kumar >> *>>* ________________________________ >> *>* From: afish at apple.com > on behalf of Andrew Fish >> *>* > >> *>* Sent: Friday, March 31, 2017 10:42:08 PM >> *>* To: Amit kumar >> *>* Cc: edk2-devel at lists.01.org >> *>* Subject: Re: [edk2] DisconnectController API not working. >> *>>>* On Mar 31, 2017, at 5:26 AM, Amit kumar >> wrote: >> *>>>* Hi , >> *>>* I am trying to disconnect a controller from the usb mass storage >> *>* driver, for which i am using >> *>>* Status = gBS->DisconnectController ( >> *>* ControllerHandle, >> *>* NULL, >> *>* NULL >> *>* ); >> *>>* after the call i get Status = SUCCESS , but when i run drivers command in shell, i find it still being manged by the same old driver handle. >> *>* Although when i run disconnect command from shell (e.g disconnect 163 >> *>* ...output disconnect(163,0,0):Status = SUCCESS) it works as expected and detaches the controller from the driver. >> *>* Can some body point me out what could be the reason. >> *>>* Amit, >> *>>* It is always good to double check you are using the right ControllerHandle. >> *>>* Sequence of events matters. There are boot flows and Shell commands that do ConnectController. >> *>* ~/work/src/edk2/ShellPkg(master)>git grep ConnectController >> *>* Library/UefiShellDebug1CommandsLib/LoadPciRom.c:402: gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE); >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:54: Status = gBS->ConnectController (Handle, NULL, RemainingDevicePath, FALSE); >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:95: gBS->ConnectController (RootBridgeHandleBuffer[RootBridgeIndex], NULL, NULL, FALSE); >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:116:ConnectControllers ( >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:150: // This is where we call the gBS->ConnectController function. >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:158: Status = gBS->ConnectController(*HandleWalker, DriverHandleList, NULL, Recursive); >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:167: Status = gBS->ConnectController(ControllerHandle, DriverHandleList, NULL, Recursive); >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:298: Status = gBS->ConnectController ( >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:354:ConvertAndConnectCon >> *>* trollers ( >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:391: return (ConnectControllers(Handle1, Handle2, Recursive, Output, (BOOLEAN)(Handle2 != NULL && Handle1 != NULL))); >> *>* Library/UefiShellDriver1CommandsLib/Connect.c:536: Status = ConvertAndConnectControllers(Handle1, Handle2, ShellCommandLineGetFlag(Package, L"-r"), (BOOLEAN)(Count!=0)); >> *>* Library/UefiShellDriver1CommandsLib/DrvCfg.c:492: EFI_HANDLE ConnectControllerContextOverride[2]; >> *>* Library/UefiShellDriver1CommandsLib/DrvCfg.c:514: ConnectControllerContextOverride[0] = DriverImageHandle; >> *>* Library/UefiShellDriver1CommandsLib/DrvCfg.c:515: ConnectControllerContextOverride[1] = NULL; >> *>* Library/UefiShellDriver1CommandsLib/DrvCfg.c:516: gBS->ConnectController (ControllerHandle, ConnectControllerContextOverride, NULL, TRUE); >> *>* Library/UefiShellLevel2CommandsLib/Load.c:52: Status = gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE); >> *>>>* Thanks, >> *>>* Andrew Fish >> *>>* _______________________________________________ >> *>* edk2-devel mailing list >> *>* edk2-devel at lists.01.org > >> *>* https://lists.01.org/mailman/listinfo/edk2-devel >> *>>* _______________________________________________ >> *>* edk2-devel mailing list >> *>* edk2-devel at lists.01.org >> *>* https://lists.01.org/mailman/listinfo/edk2-devel >> * >> >> >