set_bit(wIndex, &bus_state->resuming_ports);
                                bus_state->resume_done[wIndex] = timeout;
                                mod_timer(&hcd->rh_timer, timeout);
+                               usb_hcd_start_port_resume(&hcd->self, wIndex);
                        }
                /* Has resume been signalled for USB_RESUME_TIME yet? */
                } else if (time_after_eq(jiffies,
                                clear_bit(wIndex, &bus_state->rexit_ports);
                        }
 
+                       usb_hcd_end_port_resume(&hcd->self, wIndex);
                        bus_state->port_c_suspend |= 1 << wIndex;
                        bus_state->suspended_ports &= ~(1 << wIndex);
                } else {
            (raw_port_status & PORT_PLS_MASK) != XDEV_RESUME) {
                bus_state->resume_done[wIndex] = 0;
                clear_bit(wIndex, &bus_state->resuming_ports);
+               usb_hcd_end_port_resume(&hcd->self, wIndex);
        }
 
 
                                        goto error;
 
                                set_bit(wIndex, &bus_state->resuming_ports);
+                               usb_hcd_start_port_resume(&hcd->self, wIndex);
                                xhci_set_link_state(xhci, ports[wIndex],
                                                    XDEV_RESUME);
                                spin_unlock_irqrestore(&xhci->lock, flags);
                                xhci_set_link_state(xhci, ports[wIndex],
                                                        XDEV_U0);
                                clear_bit(wIndex, &bus_state->resuming_ports);
+                               usb_hcd_end_port_resume(&hcd->self, wIndex);
                        }
                        bus_state->port_c_suspend |= 1 << wIndex;
 
 
                        set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
                        mod_timer(&hcd->rh_timer,
                                  bus_state->resume_done[hcd_portnum]);
+                       usb_hcd_start_port_resume(&hcd->self, hcd_portnum);
                        bogus_port_status = true;
                }
        }