]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Remove several ASSERT in XhciDxe to allow error status happen then do error handling.
authorElvin Li <elvin.li@intel.com>
Wed, 21 Aug 2013 03:46:01 +0000 (03:46 +0000)
committerli-elvin <li-elvin@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 21 Aug 2013 03:46:01 +0000 (03:46 +0000)
Signed-off-by: Elvin Li <elvin.li@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14574 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c
MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c

index 239fa96a669eede66acda5934ab5f511b9c89407..3e578975adbae67404f1606ae04cebdf9d578fe4 100644 (file)
@@ -900,7 +900,9 @@ XhcControlTransfer (
     Status = EFI_SUCCESS;
   } else if (*TransferResult == EFI_USB_ERR_STALL) {
     RecoveryStatus = XhcRecoverHaltedEndpoint(Xhc, Urb);
-    ASSERT_EFI_ERROR (RecoveryStatus);
+    if (EFI_ERROR (RecoveryStatus)) {
+      DEBUG ((EFI_D_ERROR, "XhcControlTransfer: XhcRecoverHaltedEndpoint failed\n"));
+    }
     Status = EFI_DEVICE_ERROR;
     goto FREE_URB;
   } else {
@@ -947,7 +949,6 @@ XhcControlTransfer (
         } else {
           Status = XhcEvaluateContext64 (Xhc, SlotId, MaxPacket0);
         }
-        ASSERT_EFI_ERROR (Status);
     } else if (DescriptorType == USB_DESC_TYPE_CONFIG) {
       ASSERT (Data != NULL);
       if (*DataLength == ((UINT16 *)Data)[1]) {
@@ -983,7 +984,6 @@ XhcControlTransfer (
       } else {
         Status = XhcConfigHubContext64 (Xhc, SlotId, HubDesc->NumPorts, TTT, MTT);
       }
-      ASSERT_EFI_ERROR (Status);
     }
   } else if ((Request->Request     == USB_REQ_SET_CONFIG) &&
              (Request->RequestType == USB_REQUEST_TYPE (EfiUsbNoData, USB_REQ_TYPE_STANDARD, USB_TARGET_DEVICE))) {
@@ -997,7 +997,6 @@ XhcControlTransfer (
         } else {
           Status = XhcSetConfigCmd64 (Xhc, SlotId, DeviceSpeed, Xhc->UsbDevContext[SlotId].ConfDesc[Index]);
         }
-        ASSERT_EFI_ERROR (Status);
         break;
       }
     }
@@ -1192,7 +1191,9 @@ XhcBulkTransfer (
     Status = EFI_SUCCESS;
   } else if (*TransferResult == EFI_USB_ERR_STALL) {
     RecoveryStatus = XhcRecoverHaltedEndpoint(Xhc, Urb);
-    ASSERT_EFI_ERROR (RecoveryStatus);
+    if (EFI_ERROR (RecoveryStatus)) {
+      DEBUG ((EFI_D_ERROR, "XhcBulkTransfer: XhcRecoverHaltedEndpoint failed\n"));
+    }
     Status = EFI_DEVICE_ERROR;
   }
 
@@ -1491,7 +1492,9 @@ XhcSyncInterruptTransfer (
     Status = EFI_SUCCESS;
   } else if (*TransferResult == EFI_USB_ERR_STALL) {
     RecoveryStatus = XhcRecoverHaltedEndpoint(Xhc, Urb);
-    ASSERT_EFI_ERROR (RecoveryStatus);
+    if (EFI_ERROR (RecoveryStatus)) {
+      DEBUG ((EFI_D_ERROR, "XhcSyncInterruptTransfer: XhcRecoverHaltedEndpoint failed\n"));
+    }
     Status = EFI_DEVICE_ERROR;
   }
 
index 404d8247f846b93197f8f906fdeaeb52e34dfa8b..dea5b1af1884b8426b3bc888c44dd4d790205cf1 100644 (file)
@@ -176,6 +176,11 @@ XhcCreateUrb (
 \r
   Status = XhcCreateTransferTrb (Xhc, Urb);\r
   ASSERT_EFI_ERROR (Status);\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcCreateUrb: XhcCreateTransferTrb Failed, Status = %r\n", Status));\r
+    FreePool (Urb);\r
+    Urb = NULL;\r
+  }\r
 \r
   return Urb;\r
 }\r
@@ -669,7 +674,10 @@ XhcRecoverHaltedEndpoint (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT (!EFI_ERROR(Status));\r
+  if (EFI_ERROR(Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcRecoverHaltedEndpoint: Reset Endpoint Failed, Status = %r\n", Status));\r
+    goto Done;\r
+  }\r
 \r
   //\r
   // 2)Set dequeue pointer\r
@@ -688,13 +696,17 @@ XhcRecoverHaltedEndpoint (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT (!EFI_ERROR(Status));\r
+  if (EFI_ERROR(Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcRecoverHaltedEndpoint: Set Dequeue Pointer Failed, Status = %r\n", Status));\r
+    goto Done;\r
+  }\r
 \r
   //\r
   // 3)Ring the doorbell to transit from stop to active\r
   //\r
   XhcRingDoorBell (Xhc, SlotId, Dci);\r
 \r
+Done:\r
   return Status;\r
 }\r
 \r
@@ -1560,7 +1572,6 @@ XhcPollPortStatusChange (
       } else {\r
         Status = XhcInitializeDeviceSlot64 (Xhc, ParentRouteChart, Port, RouteChart, Speed);\r
       }\r
-      ASSERT_EFI_ERROR (Status);\r
     }\r
   } else if ((PortState->PortStatus & USB_PORT_STAT_CONNECTION) == 0) {\r
     //\r
@@ -1573,7 +1584,6 @@ XhcPollPortStatusChange (
       } else {\r
         Status = XhcDisableSlotCmd64 (Xhc, SlotId);\r
       }\r
-      ASSERT_EFI_ERROR (Status);\r
     }\r
   }\r
   return Status;\r
@@ -1921,7 +1931,10 @@ XhcInitializeDeviceSlot (
               XHC_GENERIC_TIMEOUT,\r
               (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
               );\r
-  ASSERT_EFI_ERROR (Status);\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcInitializeDeviceSlot: Enable Slot Failed, Status = %r\n", Status));\r
+    return Status;\r
+  }\r
   ASSERT (EvtTrb->SlotId <= Xhc->MaxSlotsEn);\r
   DEBUG ((EFI_D_INFO, "Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId));\r
   SlotId = (UINT8)EvtTrb->SlotId;\r
@@ -2070,12 +2083,11 @@ XhcInitializeDeviceSlot (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT (!EFI_ERROR(Status));\r
-\r
-  DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)->Slot.DeviceAddress;\r
-  DEBUG ((EFI_D_INFO, "    Address %d assigned successfully\n", DeviceAddress));\r
-\r
-  Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;\r
+  if (!EFI_ERROR (Status)) {\r
+    DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)->Slot.DeviceAddress;\r
+    DEBUG ((EFI_D_INFO, "    Address %d assigned successfully\n", DeviceAddress));\r
+    Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;\r
+  }\r
 \r
   return Status;\r
 }\r
@@ -2125,7 +2137,10 @@ XhcInitializeDeviceSlot64 (
               XHC_GENERIC_TIMEOUT,\r
               (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
               );\r
-  ASSERT_EFI_ERROR (Status);\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcInitializeDeviceSlot64: Enable Slot Failed, Status = %r\n", Status));\r
+    return Status;\r
+  }\r
   ASSERT (EvtTrb->SlotId <= Xhc->MaxSlotsEn);\r
   DEBUG ((EFI_D_INFO, "Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId));\r
   SlotId = (UINT8)EvtTrb->SlotId;\r
@@ -2274,13 +2289,11 @@ XhcInitializeDeviceSlot64 (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT (!EFI_ERROR(Status));\r
-\r
-  DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)->Slot.DeviceAddress;\r
-  DEBUG ((EFI_D_INFO, "    Address %d assigned successfully\n", DeviceAddress));\r
-\r
-  Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;\r
-\r
+  if (!EFI_ERROR (Status)) {\r
+    DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)->Slot.DeviceAddress;\r
+    DEBUG ((EFI_D_INFO, "    Address %d assigned successfully\n", DeviceAddress));\r
+    Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;\r
+  }\r
   return Status;\r
 }\r
 \r
@@ -2341,7 +2354,10 @@ XhcDisableSlotCmd (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT_EFI_ERROR(Status);\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status));\r
+    return Status;\r
+  }\r
   //\r
   // Free the slot's device context entry\r
   //\r
@@ -2441,7 +2457,10 @@ XhcDisableSlotCmd64 (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT_EFI_ERROR(Status);\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status));\r
+    return Status;\r
+  }\r
   //\r
   // Free the slot's device context entry\r
   //\r
@@ -2507,7 +2526,6 @@ XhcSetConfigCmd (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-\r
   USB_INTERFACE_DESCRIPTOR    *IfDesc;\r
   USB_ENDPOINT_DESCRIPTOR     *EpDesc;\r
   UINT8                       Index;\r
@@ -2678,8 +2696,9 @@ XhcSetConfigCmd (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT_EFI_ERROR(Status);\r
-\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcSetConfigCmd: Config Endpoint Failed, Status = %r\n", Status));\r
+  }\r
   return Status;\r
 }\r
 \r
@@ -2704,7 +2723,6 @@ XhcSetConfigCmd64 (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-\r
   USB_INTERFACE_DESCRIPTOR    *IfDesc;\r
   USB_ENDPOINT_DESCRIPTOR     *EpDesc;\r
   UINT8                       Index;\r
@@ -2877,7 +2895,9 @@ XhcSetConfigCmd64 (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT_EFI_ERROR(Status);\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcSetConfigCmd64: Config Endpoint Failed, Status = %r\n", Status));\r
+  }\r
 \r
   return Status;\r
 }\r
@@ -2932,8 +2952,9 @@ XhcEvaluateContext (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT (!EFI_ERROR(Status));\r
-\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcEvaluateContext: Evaluate Context Failed, Status = %r\n", Status));\r
+  }\r
   return Status;\r
 }\r
 \r
@@ -2986,8 +3007,9 @@ XhcEvaluateContext64 (
              XHC_GENERIC_TIMEOUT,\r
              (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
              );\r
-  ASSERT (!EFI_ERROR(Status));\r
-\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcEvaluateContext64: Evaluate Context Failed, Status = %r\n", Status));\r
+  }\r
   return Status;\r
 }\r
 \r
@@ -3014,7 +3036,6 @@ XhcConfigHubContext (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-\r
   EVT_TRB_COMMAND_COMPLETION  *EvtTrb;\r
   INPUT_CONTEXT               *InputContext;\r
   DEVICE_CONTEXT              *OutputContext;\r
@@ -3055,8 +3076,9 @@ XhcConfigHubContext (
               XHC_GENERIC_TIMEOUT,\r
               (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
               );\r
-  ASSERT (!EFI_ERROR(Status));\r
-\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcConfigHubContext: Config Endpoint Failed, Status = %r\n", Status));\r
+  }\r
   return Status;\r
 }\r
 \r
@@ -3082,7 +3104,6 @@ XhcConfigHubContext64 (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-\r
   EVT_TRB_COMMAND_COMPLETION  *EvtTrb;\r
   INPUT_CONTEXT_64            *InputContext;\r
   DEVICE_CONTEXT_64           *OutputContext;\r
@@ -3123,8 +3144,9 @@ XhcConfigHubContext64 (
               XHC_GENERIC_TIMEOUT,\r
               (TRB_TEMPLATE **) (UINTN) &EvtTrb\r
               );\r
-  ASSERT (!EFI_ERROR(Status));\r
-\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "XhcConfigHubContext64: Config Endpoint Failed, Status = %r\n", Status));\r
+  }\r
   return Status;\r
 }\r
 \r