]> git.proxmox.com Git - mirror_edk2.git/commitdiff
raise TPL to TPL_CALLBACK level at DriverBindingStart() for all usb-related modules...
authorerictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 5 May 2010 05:21:38 +0000 (05:21 +0000)
committererictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 5 May 2010 05:21:38 +0000 (05:21 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10460 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Bus/Usb/UsbKbDxe/EfiKey.c
MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassImpl.c
MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/UsbMouseAbsolutePointer.c
MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouse.c
MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c
MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c

index 2733d562d7d417b83d1e34c969d41bd0693578c7..278c2da19a474d1b3c8dd39b3d9c51c9afa5347d 100644 (file)
@@ -154,7 +154,9 @@ USBKeyboardDriverBindingStart (
   UINT8                         PollingInterval;\r
   UINT8                         PacketSize;\r
   BOOLEAN                       Found;\r
+  EFI_TPL                       OldTpl;\r
 \r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
   //\r
   // Open USB I/O Protocol\r
   //\r
@@ -167,7 +169,7 @@ USBKeyboardDriverBindingStart (
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto ErrorExit1;\r
   }\r
 \r
   UsbKeyboardDevice = AllocateZeroPool (sizeof (USB_KB_DEV));\r
@@ -381,6 +383,7 @@ USBKeyboardDriverBindingStart (
     FALSE\r
     );\r
 \r
+  gBS->RestoreTPL (OldTpl);\r
   return EFI_SUCCESS;\r
 \r
 //\r
@@ -407,6 +410,10 @@ ErrorExit:
          This->DriverBindingHandle,\r
          Controller\r
          );\r
+\r
+ErrorExit1:\r
+  gBS->RestoreTPL (OldTpl);\r
+\r
   return Status;\r
 \r
 }\r
index 9137075d86084150bc9522080c89dd6a81a83045..f440e9fd7c5f78820afbce67ed165630a94a26c3 100644 (file)
@@ -833,7 +833,10 @@ USBMassDriverBindingStart (
   UINT8                         MaxLun;\r
   EFI_STATUS                    Status;\r
   EFI_USB_IO_PROTOCOL           *UsbIo; \r
-  \r
+  EFI_TPL                       OldTpl;\r
+\r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+\r
   Transport = NULL;\r
   Context   = NULL;\r
   MaxLun    = 0;\r
@@ -842,7 +845,7 @@ USBMassDriverBindingStart (
 \r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: UsbMassInitTransport (%r)\n", Status));\r
-    return Status;\r
+    goto Exit;\r
   }\r
   if (MaxLun == 0) {\r
     //\r
@@ -867,7 +870,7 @@ USBMassDriverBindingStart (
   \r
     if (EFI_ERROR (Status)) {\r
       DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: OpenDevicePathProtocol By Driver (%r)\n", Status));\r
-      return Status;\r
+      goto Exit;\r
     }\r
 \r
     Status = gBS->OpenProtocol (\r
@@ -887,7 +890,7 @@ USBMassDriverBindingStart (
              This->DriverBindingHandle,\r
              Controller\r
              );\r
-      return Status;\r
+      goto Exit;\r
     }\r
 \r
     //\r
@@ -911,6 +914,8 @@ USBMassDriverBindingStart (
       DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: UsbMassInitMultiLun (%r) with Maxlun=%d\n", Status, MaxLun));\r
     }\r
   }\r
+Exit:\r
+  gBS->RestoreTPL (OldTpl);\r
   return Status;\r
 }\r
 \r
index 35be8b03973e09a3dbebe40620ecb98e83dec52e..2f3cf9aae213467ad434db316be18cc69d7cec40 100644 (file)
@@ -149,7 +149,9 @@ USBMouseAbsolutePointerDriverBindingStart (
   UINT8                          PollingInterval;\r
   UINT8                          PacketSize;\r
   BOOLEAN                        Found;\r
+  EFI_TPL                        OldTpl;\r
 \r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
   //\r
   // Open USB I/O Protocol\r
   //\r
@@ -162,7 +164,7 @@ USBMouseAbsolutePointerDriverBindingStart (
                   EFI_OPEN_PROTOCOL_BY_DRIVER                  \r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto ErrorExit1;\r
   }\r
   \r
   UsbMouseAbsolutePointerDevice = AllocateZeroPool (sizeof (USB_MOUSE_ABSOLUTE_POINTER_DEV));\r
@@ -324,6 +326,7 @@ USBMouseAbsolutePointerDriverBindingStart (
     FALSE\r
     );\r
 \r
+  gBS->RestoreTPL (OldTpl);\r
   return EFI_SUCCESS;\r
 \r
 //\r
@@ -348,6 +351,9 @@ ErrorExit:
     }\r
   }\r
 \r
+ErrorExit1:\r
+  gBS->RestoreTPL (OldTpl);\r
+\r
   return Status;\r
 }\r
 \r
index 8b8a21eae81c7080670fc6968341b28aea2f999c..f51dbfa1cfdde95fe2ca5f76f016a51001b5abc9 100644 (file)
@@ -149,7 +149,9 @@ USBMouseDriverBindingStart (
   UINT8                       PollingInterval;\r
   UINT8                       PacketSize;\r
   BOOLEAN                     Found;\r
+  EFI_TPL                     OldTpl;\r
 \r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
   //\r
   // Open USB I/O Protocol\r
   //\r
@@ -162,7 +164,7 @@ USBMouseDriverBindingStart (
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto ErrorExit1;\r
   }\r
 \r
   UsbMouseDevice = AllocateZeroPool (sizeof (USB_MOUSE_DEV));\r
@@ -324,6 +326,8 @@ USBMouseDriverBindingStart (
     FALSE\r
     );\r
 \r
+  gBS->RestoreTPL (OldTpl);\r
+\r
   return EFI_SUCCESS;\r
 \r
 //\r
@@ -348,6 +352,8 @@ ErrorExit:
     }\r
   }\r
 \r
+ErrorExit1:\r
+  gBS->RestoreTPL (OldTpl);\r
   return Status;\r
 }\r
 \r
index 0b1ea6ff3e1c80f936e4ec20eeb10f129228a146..0175465ade735e015cab64b064f1d57c2bf5ca02 100644 (file)
@@ -125,7 +125,9 @@ DiskIoDriverBindingStart (
 {\r
   EFI_STATUS            Status;\r
   DISK_IO_PRIVATE_DATA  *Private;\r
+  EFI_TPL               OldTpl;\r
 \r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
   Private = NULL;\r
 \r
   //\r
@@ -140,7 +142,7 @@ DiskIoDriverBindingStart (
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto ErrorExit1;\r
   }\r
   \r
   //\r
@@ -177,6 +179,8 @@ ErrorExit:
           );\r
   }\r
 \r
+ErrorExit1:\r
+  gBS->RestoreTPL (OldTpl);\r
   return Status;\r
 }\r
 \r
index 73278e9c35bce2cf8e1ccb8217e92fc6538ffa21..5629a746560153b69ea6bbb8d7e4d8bca07a7cc9 100644 (file)
@@ -194,7 +194,9 @@ PartitionDriverBindingStart (
   EFI_DEVICE_PATH_PROTOCOL  *ParentDevicePath;\r
   PARTITION_DETECT_ROUTINE  *Routine;\r
   BOOLEAN                   MediaPresent;\r
+  EFI_TPL                   OldTpl;\r
 \r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK); \r
   //\r
   // Check RemainingDevicePath validation\r
   //\r
@@ -204,7 +206,8 @@ PartitionDriverBindingStart (
     // if yes, return EFI_SUCCESS\r
     //\r
     if (IsDevicePathEnd (RemainingDevicePath)) {\r
-      return EFI_SUCCESS;\r
+      Status = EFI_SUCCESS;\r
+      goto Exit;\r
     }\r
   }\r
 \r
@@ -217,7 +220,7 @@ PartitionDriverBindingStart (
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto Exit;\r
   }\r
   //\r
   // Get the Device Path Protocol on ControllerHandle's handle\r
@@ -231,7 +234,7 @@ PartitionDriverBindingStart (
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
                   );\r
   if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) {\r
-    return Status;\r
+    goto Exit;\r
   }\r
 \r
   Status = gBS->OpenProtocol (\r
@@ -249,7 +252,7 @@ PartitionDriverBindingStart (
           This->DriverBindingHandle,\r
           ControllerHandle\r
           );\r
-    return Status;\r
+    goto Exit;\r
   }\r
 \r
   OpenStatus = Status;\r
@@ -312,6 +315,8 @@ PartitionDriverBindingStart (
           );\r
   }\r
 \r
+Exit:\r
+  gBS->RestoreTPL (OldTpl);\r
   return Status;\r
 }\r
 \r