> On Mar 31, 2017, at 5:26 AM, Amit kumar <akami...@hotmail.com> 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:ConvertAndConnectControllers ( 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@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