summaryrefslogtreecommitdiff
path: root/EmbeddedPkg/Ebl
diff options
context:
space:
mode:
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-05-07 16:45:48 +0000
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-05-07 16:45:48 +0000
commit208a8330d0029d4025f6f27f182d627bd9d7b38b (patch)
tree717006429da60ba911584996afe266f0f7353a2f /EmbeddedPkg/Ebl
parent0caa7ad507205968dfada67d0c368e62209d03ee (diff)
downloadedk2-208a8330d0029d4025f6f27f182d627bd9d7b38b.zip
edk2-208a8330d0029d4025f6f27f182d627bd9d7b38b.tar.gz
edk2-208a8330d0029d4025f6f27f182d627bd9d7b38b.tar.bz2
Fix svn check in bug that broke CWD. Update the connect disconnect support in device command to minimize operations.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10462 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EmbeddedPkg/Ebl')
-rw-r--r--EmbeddedPkg/Ebl/EfiDevice.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/EmbeddedPkg/Ebl/EfiDevice.c b/EmbeddedPkg/Ebl/EfiDevice.c
index 70ba703..80dcfcb 100644
--- a/EmbeddedPkg/Ebl/EfiDevice.c
+++ b/EmbeddedPkg/Ebl/EfiDevice.c
@@ -207,13 +207,14 @@ EblDeviceCmd (
IN CHAR8 **Argv
)
{
+ EFI_STATUS Status;
UINTN Index;
UINTN CurrentRow;
UINTN Max;
EFI_OPEN_FILE *File;
CurrentRow = 0;
-
+
// Need to call here to make sure Device Counts are valid
EblUpdateDeviceLists ();
@@ -227,9 +228,15 @@ EblDeviceCmd (
if (File != NULL) {
if (File->FsBlockIoMedia->RemovableMedia) {
if (File->FsBlockIoMedia->MediaPresent) {
- gBS->DisconnectController (File->EfiHandle, NULL, NULL);
+ // Probe to see if media is present
+ Status = File->FsBlockIo->ReadBlocks (File->FsBlockIo, File->FsBlockIo->Media->MediaId, (EFI_LBA)0, 0, NULL);
+ if (Status == EFI_NO_MEDIA) {
+ gBS->DisconnectController (File->EfiHandle, NULL, NULL);
+ }
+ } else {
+ // Probe for media insertion and connect partition and filesystem drivers if needed
+ gBS->ConnectController (File->EfiHandle, NULL, NULL, TRUE);
}
- gBS->ConnectController (File->EfiHandle, NULL, NULL, TRUE);
}
EfiClose (File);
}