diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-08-11 16:52:39 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-27 11:58:54 -0700 |
commit | d5cbad4b8b37acfde3e63d31b92561b87288ad0f (patch) | |
tree | 98869f0db85e1f257c5ddd13a2afda934626153a /drivers/usb/core/hub.h | |
parent | 455b25fb209c8241e2163b491228b28667d82c1c (diff) | |
download | kernel_samsung_smdk4412-d5cbad4b8b37acfde3e63d31b92561b87288ad0f.zip kernel_samsung_smdk4412-d5cbad4b8b37acfde3e63d31b92561b87288ad0f.tar.gz kernel_samsung_smdk4412-d5cbad4b8b37acfde3e63d31b92561b87288ad0f.tar.bz2 |
usbcore: khubd and busy-port handling
We don't want khubd to start interfering in the device-resume process
merely because the PORT_STATUS_C_SUSPEND feature happens to be set.
Ports need to be marked as busy while a resume is taking place.
In addition, so long as ports are marked as busy, khubd won't be able to
clear their various status-change features. On an interrupt-driven root
hub this could lead to an interrupt storm. Root hub IRQs should not be
re-enabled until the busy_bits value is equal to 0.
This patch (as765) fixes these two potential problems.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core/hub.h')
-rw-r--r-- | drivers/usb/core/hub.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h index 29d5f45..0f8e82a 100644 --- a/drivers/usb/core/hub.h +++ b/drivers/usb/core/hub.h @@ -212,7 +212,8 @@ struct usb_hub { unsigned long event_bits[1]; /* status change bitmask */ unsigned long change_bits[1]; /* ports with logical connect status change */ - unsigned long busy_bits[1]; /* ports being reset */ + unsigned long busy_bits[1]; /* ports being reset or + resumed */ #if USB_MAXCHILDREN > 31 /* 8*sizeof(unsigned long) - 1 */ #error event_bits[] is too short! #endif |