Print this page
NEX-16600 "No SOF interrupts have been received" on HPE ProLiant DL380 Gen10, leading to non-working USB EHCI controller
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
        
*** 16,30 ****
--- 16,34 ----
   * fields enclosed by brackets "[]" replaced with your own identifying
   * information: Portions Copyright [yyyy] [name of copyright owner]
   *
   * CDDL HEADER END
   */
+ 
  /*
   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
   */
  
+ /*
+  * Copyright 2018 Nexenta Systems, Inc.
+  */
  
  /*
   * EHCI Host Controller Driver (EHCI)
   *
   * The EHCI driver is a software driver which interfaces to the Universal
*** 693,711 ****
          }
  
          USB_DPRINTF_L3(PRINT_MASK_INTR, ehcip->ehci_log_hdl,
              "Interrupt status 0x%x", intr);
  
-         /*
-          * If necessary broadcast that an interrupt has occured.  This
-          * is only necessary during controller init.
-          */
-         if (ehcip->ehci_flags & EHCI_CV_INTR) {
-                 ehcip->ehci_flags &= ~EHCI_CV_INTR;
-                 cv_broadcast(&ehcip->ehci_async_schedule_advance_cv);
-         }
- 
          /* Check for Frame List Rollover */
          if (intr & EHCI_INTR_FRAME_LIST_ROLLOVER) {
                  USB_DPRINTF_L3(PRINT_MASK_INTR, ehcip->ehci_log_hdl,
                      "ehci_intr: Frame List Rollover");
  
--- 697,706 ----
*** 724,740 ****
                      "ehci_intr: Asynchronous Schedule Advance Notification");
  
                  /* Disable async list advance interrupt */
                  Set_OpReg(ehci_interrupt,
                      (Get_OpReg(ehci_interrupt) & ~EHCI_INTR_ASYNC_ADVANCE));
- 
-                 /*
-                  * Call cv_broadcast on every this interrupt to wakeup
-                  * all the threads that are waiting the async list advance
-                  * event.
-                  */
-                 cv_broadcast(&ehcip->ehci_async_schedule_advance_cv);
          }
  
          /* Always process completed itds */
          ehci_traverse_active_isoc_list(ehcip);
  
--- 719,728 ----