• Geoff Levand's avatar
    USB: fix hcd interrupt disabling · 83a79820
    Geoff Levand authored
    Commit de85422b, 'USB: fix interrupt
    disabling for HCDs with shared interrupt handlers' changed usb_add_hcd()
    to strip IRQF_DISABLED from irqflags prior to calling request_irq()
    with the justification that such a removal was necessary for shared
    interrupts to work properly.  Unfortunately, the change in that commit
    unconditionally removes the IRQF_DISABLED flag, causing problems on
    platforms that don't use a shared interrupt but require IRQF_DISABLED.
    This change adds a check for IRQF_SHARED prior to removing the
    IRQF_DISABLED flag.
    
    Fixes the PS3 system startup hang reported with recent Fedora and
    OpenSUSE kernels.
    
    Note that this problem is hidden when CONFIG_LOCKDEP=y (ps3_defconfig),
    as local_irq_enable_in_hardirq() is defined as a null statement for
    that config.
    
    CC: stable <stable@kernel.org>
    Signed-off-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Stefan Becker <Stefan.Becker@nokia.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    83a79820
hcd.c 57.6 KB