> 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

Reply via email to