On Fri, Apr 02, 2021 at 05:27:59PM +0800, Longfang Liu wrote: > The operating method of the system entering S4 sleep mode: > echo disk > /sys/power/state > > When OHCI enters the S4 sleep state, the USB sleep process will call > check_root_hub_suspend() and ohci_bus_suspend() instead of > ohci_suspend() and ohci_bus_suspend(), this causes the OHCI interrupt > to not be closed. > > At this time, if just one device interrupt is reported. Since rh_state > has been changed to OHCI_RH_SUSPENDED after ohci_bus_suspend(), the > driver will not process and close this device interrupt. It will cause > the entire system to be stuck during sleep, causing the device to > fail to respond. > > When the abnormal interruption reaches 100,000 times, the system will > forcibly close the interruption and make the device unusable. > > Because the root cause of the problem is that ohci_suspend is not > called to perform normal interrupt shutdown operations when the system > enters S4 sleep mode. > > Therefore, our solution is to specify freeze interface in this mode to > perform normal suspend_common() operations, and call ohci_suspend() > after check_root_hub_suspend() is executed through the suspend_common() > operation. > After using this solution, it is verified by the stress test of sleep > wake up in S4 mode for a long time that this problem no longer occurs. > > Signed-off-by: Longfang Liu <liulongfang@xxxxxxxxxx> > --- > drivers/usb/core/hcd-pci.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) What changed from the previous version sent for this patch? Always properly describe the changes below the --- line, and also version your subject line as documented. Please fix up and resend. thanks, greg k-h