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,15 +16,19 @@
  * 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,19 +697,10 @@
         }
 
         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");
 
@@ -724,17 +719,10 @@
                     "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);