From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw0-x22d.google.com (mail-yw0-x22d.google.com [IPv6:2607:f8b0:4002:c05::22d]) (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 EE59B21A00ACB for ; Wed, 28 Jun 2017 12:52:33 -0700 (PDT) Received: by mail-yw0-x22d.google.com with SMTP id 63so28976711ywr.0 for ; Wed, 28 Jun 2017 12:54:05 -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=h098pNc5GgFDMahgLraW1yEod0G4RlClqEPS+0Ja5O8=; b=pM07CSM44aI8Kduagl2ENWLzqK0zzbpQw2O4ahI1DVwvDv+WBMxISB3Wo8CdRu9akS GVMYIQyI1H+eMYt3pXbmYApwq17MED5fMVeJ4iR7npjwnDcNTw/8D1UsitIdN0lQvfPe 1gMDmDIUK4/DCiDErxuoYKvNMTu19r26Xa4kZI5v7DetqyRj6cdQw7T5rFvlGSkPnK2p 2Wag+w6jCk9kiXFxUjBUGAPnhPDp6iRrOJW4Sytg+4qlaPz7HS5u4RYHWZJ3Tl/yN3VC /TI6lcRsWt4PlzpMES+k1lYHEolue9gt6cFOILRrn3vTaVlKJQE3Kf8L+LrtimMNtV6Q 8PPw== 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=h098pNc5GgFDMahgLraW1yEod0G4RlClqEPS+0Ja5O8=; b=lkkUWlC6qE6JPTuAyl4S8q+I2XJCcXxX1nIo6kJLYRfuWmy2ol23AmVqApd5nWq8jl mc/1r7X8YVe4FDYQcQSBKMXzGCl6HE0rnP7aVXkNfnWRkHpnqqyrAVev6De3G1M74JHr LDvfC6fMFsDDKwBdBpSzAt+hqVC+XCQhCJiRt62UEkihrsN1ugHLoVV+lWzbioZorT+r IXuxytN1CRuK+5AN7zAUolnfBRIjJpNuDLcveSaErrgfD8B7y2s56YjUQKMeY4vvSwEc 44W8urpaQczA9opPRmWdFeiqbilYeFy2wc7uMe+nws+SbAmVaHXWv5ztploBQsgXsbIP UkJw== X-Gm-Message-State: AKS2vOz42kF0jOUNHWaR1EBxC7zdSnHJCCRSFwP6OYjV7FB8nhl9pjsm A2O0fqS3U1azK6GKJsaHEHlGDukC3Yez X-Received: by 10.129.175.37 with SMTP id n37mr7520244ywh.279.1498679645030; Wed, 28 Jun 2017 12:54:05 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.209.86 with HTTP; Wed, 28 Jun 2017 12:53:44 -0700 (PDT) In-Reply-To: References: From: TVKR Date: Wed, 28 Jun 2017 14:53:44 -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: Wed, 28 Jun 2017 19:52:34 -0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 withou= t > 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 passin= g > into gBS->DisconnectController()? The should match the values you get whe= n > you dump a specific handle in the shell. The EFI_HANDLE value is not goin= g > to change, it is only going to get removed if all protocols on that handl= e > are uninstalled. > > So for example. > 176: 7219E798 > > If you used 178 at the Shell you would expect to see 7219E798 printed out > 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 'reconnec= t > -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 cas= e > with me. > I can suggest you a quick trick here, if it won=E2=80=99t work I will hel= p 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 or > just give disconnect in uefi shell. > 7. If still I doesn=E2=80=99t work you can ping me I might suggest the ot= her 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 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 th= e > ControllerHandle passed and it looks correct. Were you able to resolve th= is > 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 somethi= ng > 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 the > ControllerHandle passed and it looks correct. Were you able to resolve th= is > 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 kuma= r > Sent: Tuesday, April 4, 2017 12:07 AM > To: Tian, Feng org/mailman/listinfo/edk2-devel>> > Cc: edk2-devel at lists.01.org 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 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 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< > 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 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 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 > 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 an= d > > 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)(Handle= 2 > !=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 > > >