From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb0-x236.google.com (mail-yb0-x236.google.com [IPv6:2607:f8b0:4002:c09::236]) (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 630DB21B02B9C for ; Thu, 29 Jun 2017 12:57:40 -0700 (PDT) Received: by mail-yb0-x236.google.com with SMTP id b81so32216421yba.2 for ; Thu, 29 Jun 2017 12:59:13 -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=xFzFpnV/6UM9CIxEh5XHfNOOLTMSuBrEBgXBeQDDNMk=; b=P08H2aSl4YIvSgqwbQt0UZFlKuLMgB8HXfWVMRvGuQb097pLLSOnrxZRvEcZgADF2+ XaEqZi/ZaaXRTMM6taR1bcIaYkJVij+GpsA7GI8cCNHczwvzcyGyz04VydpgXxNVKw++ 2tSNRCMS7W8EcYR0UmnaFwNmxCmQA297f5vCH89VrvMva4ssQ087uGiBMusw53hoz/m+ nMJhAnuznqfGneRvmxKbjA0uDkLhDAl7b/hB3CSl4cqOGNgJb5jer4/zhmQM+GlP9Awi EK7i9n7sPOxiZ+LCf0WSiEHff/2gUx4SELsGNc1OwYhnHtmdry8lVYcsBKRszgPCZvP7 0lMw== 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=xFzFpnV/6UM9CIxEh5XHfNOOLTMSuBrEBgXBeQDDNMk=; b=qihfe/LIVaPgGHLnaYl6c9SyLZwmQaJsB8HD5Y+R3X5YMBX965mOkK8wCFC5s4/1Sv QLVzY8Ys5Lvjk+QiH4Dn5EPm33CezYOHgzNy5FeKrEqMkFM//A6vhzcL5Xh+VDms6kbC h5k+fST8T19MO7F8xD0fcDULOvKBFZjd7jZKMhyj4YS78+yJByoi/k8ZFRPvD3Dtufan Nxb5xZb+I0CRIFXn9nLg5YtEGsRRDJNtaDKOSxUdDDq8Bkywb6UBg4tem8rdWypBOWBD YNLXRru+2JCVcOPBeC+/LQBIf0YE25UsIR7z7ISH06nNK/OyTtbYIwADYXvbeQqpA8Df WvMQ== X-Gm-Message-State: AKS2vOw5ma4Rbc+r7MDfCcojG/BCJpw6+iWqnQTmGbmGGx72W9ntM3Ne ka4J6vLYAJLl489jADxqImSIWflMWQ== X-Received: by 10.37.214.213 with SMTP id n204mr14066738ybg.201.1498766352358; Thu, 29 Jun 2017 12:59:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.209.86 with HTTP; Thu, 29 Jun 2017 12:58:51 -0700 (PDT) In-Reply-To: References: From: TVKR Date: Thu, 29 Jun 2017 14:58:51 -0500 Message-ID: To: Amit kumar Cc: Andrew Fish , "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: Thu, 29 Jun 2017 19:57:40 -0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable FYI, I tried an alternative method (below) but that didn't work either (the handle value matches correctly again) EFI_STATUS EFIAPI UefiMain ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { EFI_STATUS Status ; EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL *EfiDevicePathFromTextProtocol; EFI_DEVICE_PATH_PROTOCOL *DevicePath; EFI_HANDLE Handle; Status =3D gBS->LocateProtocol ( &gEfiDevicePathFromTextProtocolGuid, NULL, (VOID **)&EfiDevicePathFromTextProtocol ); Handle =3D NULL; if (!(EFI_ERROR (Status))) { DevicePath =3D EfiDevicePathFromTextProtocol->ConvertTextToDevicePath(L"PciRoot(0x0)/Pci(0= x2,0x3)/Pci(0x0,0x0)"); gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &DevicePath, &Handle); Print(L"\nHandle: 0x%x", Handle); Status =3D gBS->DisconnectController (Handle, NULL, NULL); Print(L"\ngBS->DisconnectController return code: %02x (%r)\n\r", Status, Status); } return (Status); } On Wed, Jun 28, 2017 at 2:53 PM, TVKR wrote: > Hi Amit, > Yes, I used the hex prefix :) > > > Hi Andrew, > Yes, I made sure to print out the EFI_HANDLE (ControllerHandle) that was > passed to the gBS->DisconnectController call. Below is the output: > FS0:\> TestApp.efi 175 > Handle passed to gBS->DisconnectController call - 7219EA98 (175) > gBS->DisconnectController return code: 0 (Success) > > > Thanks > > > > On Wed, Jun 28, 2017 at 2:37 PM, Amit kumar wrote: > >> Just a final check, >> You used this >> >> >> gBS->DisconnectController ( >> ConvertHandleIndexToHandle (0x175), >> ConvertHandleIndexToHandle (0x176), >> NULL); >> >> >> not this >> >> >> gBS->DisconnectController ( >> ConvertHandleIndexToHandle (175), >> ConvertHandleIndexToHandle (176), >> NULL); >> >> >> right ? >> >> Amit >> >> On Jun 29, 2017, at 1:04 AM, Andrew Fish wrote: >> >> >> On Jun 28, 2017, at 12:27 PM, TVKR wrote: >> >> Tried it, still no luck :( >> >> There is something in the Shell that makes the in-built disconnect witho= ut >> any issues but when the same DisconnectController is called from an >> application is fails. >> >> >> It is more likely you are doing something wrong. >> >> Using HandleIndex is risky as it is more about User Interface than >> reality. Have you tried printing out the EFI_HANDLE values you are passi= ng >> into gBS->DisconnectController()? The should match the values you get wh= en >> you dump a specific handle in the shell. The EFI_HANDLE value is not goi= ng >> to change, it is only going to get removed if all protocols on that hand= le >> are uninstalled. >> >> So for example. >> 176: 7219E798 >> >> If you used 178 at the Shell you would expect to see 7219E798 printed ou= t >> as the handle value. >> >> Thanks, >> >> Andrew Fish >> >> Thanks >> >> On Wed, Jun 28, 2017 at 1:23 PM, Amit kumar wrote= : >> >> >> >> EFI_STATUS >> EFIAPI >> UefiMain ( >> IN EFI_HANDLE ImageHandle, >> IN EFI_SYSTEM_TABLE *SystemTable >> ) >> { >> EFI_STATUS Status; >> >> >> gBS->DisconnectController ( >> ConvertHandleIndexToHandle (0x175), >> ConvertHandleIndexToHandle (0x176), >> NULL); >> return (Status); >> >> } >> >> >> ------------------------------ >> *From:* edk2-devel on behalf of Amit >> kumar >> *Sent:* Wednesday, June 28, 2017 11:41:53 PM >> *To:* TVKR >> *Cc:* edk2-devel@lists.01.org >> *Subject:* Re: [edk2] DisconnectController API not working. >> >> Try this; just a quick thing >> >> >> >> >> EFI_STATUS >> EFIAPI >> UefiMain ( >> IN EFI_HANDLE ImageHandle, >> IN EFI_SYSTEM_TABLE *SystemTable >> ) >> { >> EFI_STATUS Status; >> >> >> gBS->DisconnectController ( >> ConvertHandleIndexToHandle (175), >> ConvertHandleIndexToHandle (176), >> NULL); >> return (Status); >> >> } >> >> >> ________________________________ >> From: TVKR >> Sent: Wednesday, June 28, 2017 11:31:46 PM >> To: Amit kumar >> Cc: edk2-devel@lists.01.org >> Subject: Re: [edk2] DisconnectController API not working. >> >> Yes, the shell's in-built command disconnect (disconnect 175 176) worked >> but DisconnectController call from the application still did not work. >> >> On Wed, Jun 28, 2017 at 12:56 PM, Amit kumar > > akamit91@hotmail.com>> wrote: >> >> okay, os tell me , did you try "disconnect 175 176" in UEFI shell ? >> >> ________________________________ >> From: TVKR > >> >> Sent: Wednesday, June 28, 2017 11:21:34 PM >> >> To: Amit kumar >> Cc: edk2-devel@lists.01.org> > >> Subject: Re: [edk2] DisconnectController API not working. >> >> Sorry, I wasn't clear in my last email. No it did not hang. The 'reconne= ct >> -r' command completed successfully (no errors reported on screen). >> >> On Wed, Jun 28, 2017 at 12:50 PM, Amit kumar > > akamit91@hotmail.com>> wrote: >> >> Did it hang ? >> >> ________________________________ >> From: TVKR > >> >> Sent: Wednesday, June 28, 2017 10:45:13 PM >> To: Amit kumar >> Cc: edk2-devel@lists.01.org> > >> >> Subject: Re: [edk2] DisconnectController API not working. >> >> Thanks for the suggestion Amit. I tried the reconnect -r but it doesn't >> seem to help. >> >> On Wed, Jun 28, 2017 at 10:29 AM, Amit kumar > > akamit91@hotmail.com>> wrote: >> Hi Tresko, >> I looks like there is no problem with your implementation, as was the ca= se >> with me. >> I can suggest you a quick trick here, if it won=E2=80=99t work I will he= lp you >> further which might take a while. >> Follow the steps below. >> 1. Go to refi shell >> 2. Reconnect -r >> 3. If the sysytem hangs. >> 4. Try to update your BIOS/UEFI to latest (as I had noticed the eariler >> BIOS/UEFI had some some problem which normally gets fixed with updates). >> 5. After update once again try Reconnect -r. >> 6. If theres a no hang restart the system and now you can try your app o= r >> just give disconnect in uefi shell. >> 7. If still I doesn=E2=80=99t work you can ping me I might suggest the o= ther way >> around. >> >> Amit >> >> On Jun 28, 2017, at 8:05 PM, TVKR > ko1@gmail.com>> wrote: >> >> Hi Amit, >> >> Here is the output. It is the call 'gBS->DisconnectController >> (ControllerHandle, NULL, NULL)' (where ControllerHandle=3D7219EA98) 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 > a >> kamit91@hotmail.com>> 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 t= he >> 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\UefiShellDriv >> er1CommandsLib) >> 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 > ko1@gmail.com>> 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 th= e >> 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< >> https://lists.01.org/mailman/listinfo/edk2-devel>] On Behalf Of Amit >> kumar >> Sent: Tuesday, April 4, 2017 12:07 AM >> To: Tian, Feng > org/mailman/listinfo/edk2-devel>> >> Cc: edk2-devel at lists.01.org> org/mailman/listinfo/edk2- >> devel> >> Subject: Re: [edk2] DisconnectController API not working. >> >> No i am not trying to disconnect USB controller in use. >> >> ________________________________ >> From: Tian, Feng > org/mailman/listinfo/edk2-devel>> >> Sent: Wednesday, April 5, 2017 8:21:36 AM >> To: Andrew Fish; Amit kumar >> Cc: edk2-devel at lists.01.org> org/mailman/listinfo/edk2- >> devel>; 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 fro= m >> usb key. It means the disconnect will never succeed. >> >> Thanks >> Feng >> >> -----Original Message----- >> From: edk2-devel [mailto:edk2-devel-bounces at lists.01.org< >> https://lists.01.org/mailman/listinfo/edk2-devel>] On Behalf Of Andrew >> Fish >> Sent: Tuesday, April 4, 2017 12:07 AM >> To: Amit kumar > org/mailman/listinfo/edk2-devel>> >> Cc: edk2-devel at lists.01.org> org/mailman/listinfo/edk2- >> devel> >> Subject: Re: [edk2] DisconnectController API not working. >> >> >> On Apr 3, 2017, at 2:58 AM, Amit kumar > >> https://lists.01.org/mailman/listinfo/edk2-devel>> 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 ControllerHandl= e >> 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 wel= l >> as usb shell. >> >> >> >> Does that command work if you boot the shell? >> >> Thanks, >> >> Andrew Fish >> >> >> Regards >> >> Amit Kumar >> >> ________________________________ >> From: afish at apple.com> >> devel> > devel>> on behalf of Andrew Fish >> >> > >> Sent: Friday, March 31, 2017 10:42:08 PM >> To: Amit kumar >> Cc: edk2-devel at lists.01.org> >> org/mailman/listinfo/edk2-devel> >> >> Subject: Re: [edk2] DisconnectController API not working. >> >> >> On Mar 31, 2017, at 5:26 AM, Amit kumar > >> https://lists.01.org/mailman/listinfo/edk2-devel>> hotmail.com>> wrote: >> >> >> >> Hi , >> >> I am trying to disconnect a controller from the usb mass storage >> driver, for which i am using >> >> Status =3D gBS->DisconnectController ( >> ControllerHandle, >> NULL, >> NULL >> ); >> >> after the call i get Status =3D 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 =3D SUCCESS) it works as expected a= nd >> >> 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 =3D >> >> 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 =3D >> >> gBS->ConnectController(*HandleWalker, DriverHandleList, NULL, Recursive)= ; >> >> Library/UefiShellDriver1CommandsLib/Connect.c:167: Status =3D >> >> gBS->ConnectController(ControllerHandle, DriverHandleList, NULL, >> Recursive); >> >> Library/UefiShellDriver1CommandsLib/Connect.c:298: >> >> Status =3D gBS->ConnectController ( >> >> Library/UefiShellDriver1CommandsLib/Connect.c:354:ConvertAndConnectCon >> trollers ( >> Library/UefiShellDriver1CommandsLib/Connect.c:391: return >> >> (ConnectControllers(Handle1, Handle2, Recursive, Output, (BOOLEAN)(Handl= e2 >> !=3D NULL && Handle1 !=3D NULL))); >> >> Library/UefiShellDriver1CommandsLib/Connect.c:536: Status =3D >> >> ConvertAndConnectControllers(Handle1, Handle2, >> ShellCommandLineGetFlag(Package, >> L"-r"), (BOOLEAN)(Count!=3D0)); >> >> Library/UefiShellDriver1CommandsLib/DrvCfg.c:492: EFI_HANDLE >> >> ConnectControllerContextOverride[2]; >> >> Library/UefiShellDriver1CommandsLib/DrvCfg.c:514: >> >> ConnectControllerContextOverride[0] =3D DriverImageHandle; >> >> Library/UefiShellDriver1CommandsLib/DrvCfg.c:515: >> >> ConnectControllerContextOverride[1] =3D NULL; >> >> Library/UefiShellDriver1CommandsLib/DrvCfg.c:516: >> >> gBS->ConnectController (ControllerHandle, ConnectControllerContextOverri >> de, >> NULL, TRUE); >> >> Library/UefiShellLevel2CommandsLib/Load.c:52: Status =3D >> >> gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE); >> >> >> >> Thanks, >> >> Andrew Fish >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel at lists.01.org> >> devel>> org/mailman/listinfo/edk2-devel>> >> >> https://lists.01.org/mailman/listinfo/edk2-devel >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel at lists.01.org> >> devel> >> >> https://lists.01.org/mailman/listinfo/edk2-devel >> >> >> >> >> >> >> >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel >> >> >> >