1. 14 Nov, 2011 17 commits
    • Marc Kleine-Budde's avatar
      USB: gadgetfs: gadgetfs_disconnect: fix inconsistent lock state · 001428e4
      Marc Kleine-Budde authored
      Under certain circumstances lockdep finds an inconsistent lock state in
      gadgetfs. The problem can be reproduced with a hardware using the
      ci13xxx_udc driver and the gadgetfs test program (needs a patch to support
      the ci13xxx_udc, though):
      	http://www.linux-usb.org/gadget/usb.c
      Start the test program, wait to initialize, then press Ctrl+c.
      
      This patch fixes the following problem by using spin_lock_irqsave()
      instead of spin_lock().
      
      =================================
      [ INFO: inconsistent lock state ]
      3.1.0-rc6+ #158
      ---------------------------------
      inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
      usb/113 [HC0[0]:SC0[0]:HE1:SE1] takes:
       (&(&dev->lock)->rlock){?.....}, at: [<bf000340>] gadgetfs_disconnect+0x14/0x80 [gadgetfs]
      {IN-HARDIRQ-W} state was registered at:
        [<c00596b8>] mark_irqflags+0x14c/0x1ac
        [<c0059bf8>] __lock_acquire+0x4e0/0x8f0
        [<c005a698>] lock_acquire+0x98/0x1a8
        [<c02f10e0>] _raw_spin_lock+0x54/0x8c
        [<bf000340>] gadgetfs_disconnect+0x14/0x80 [gadgetfs]
        [<c0229104>] _gadget_stop_activity+0xd4/0x154
        [<c022b130>] isr_reset_handler+0x34/0x1c0
        [<c022c320>] udc_irq+0x204/0x228
        [<c0069018>] handle_irq_event_percpu+0x64/0x3a0
        [<c0069390>] handle_irq_event+0x3c/0x5c
        [<c006ae5c>] handle_level_irq+0x8c/0x10c
        [<c0068a34>] generic_handle_irq+0x30/0x44
        [<c0009b2c>] handle_IRQ+0x30/0x84
        [<c0008ef8>] __irq_svc+0x38/0x60
        [<c0009c58>] default_idle+0x30/0x34
        [<c0009e30>] cpu_idle+0x9c/0xd8
        [<c04056f4>] start_kernel+0x278/0x2bc
      irq event stamp: 6412
      hardirqs last  enabled at (6412): [<c02f1cd0>] _raw_spin_unlock_irqrestore+0x30/0x5c
      hardirqs last disabled at (6411): [<c02f1278>] _raw_spin_lock_irqsave+0x20/0xa0
      softirqs last  enabled at (6381): [<c002833c>] irq_exit+0xa0/0xa8
      softirqs last disabled at (6372): [<c002833c>] irq_exit+0xa0/0xa8
      
      other info that might help us debug this:
       Possible unsafe locking scenario:
      
             CPU0
             ----
        lock(&(&dev->lock)->rlock);
        <Interrupt>
          lock(&(&dev->lock)->rlock);
      
       *** DEADLOCK ***
      
      1 lock held by usb/113:
       #0:  (udc_lock#2){+.+.+.}, at: [<c02286c0>] usb_gadget_unregister_driver+0x34/0x88
      
      stack backtrace:
      [<c000d41c>] (unwind_backtrace+0x0/0xf0) from [<c0058e98>] (print_usage_bug+0x144/0x1c4)
      [<c0058e98>] (print_usage_bug+0x144/0x1c4) from [<c0059144>] (mark_lock_irq+0x22c/0x274)
      [<c0059144>] (mark_lock_irq+0x22c/0x274) from [<c00592d4>] (mark_lock+0x148/0x3e0)
      [<c00592d4>] (mark_lock+0x148/0x3e0) from [<c0059668>] (mark_irqflags+0xfc/0x1ac)
      [<c0059668>] (mark_irqflags+0xfc/0x1ac) from [<c0059bf8>] (__lock_acquire+0x4e0/0x8f0)
      [<c0059bf8>] (__lock_acquire+0x4e0/0x8f0) from [<c005a698>] (lock_acquire+0x98/0x1a8)
      [<c005a698>] (lock_acquire+0x98/0x1a8) from [<c02f10e0>] (_raw_spin_lock+0x54/0x8c)
      [<c02f10e0>] (_raw_spin_lock+0x54/0x8c) from [<bf000340>] (gadgetfs_disconnect+0x14/0x80 [gadgetfs])
      [<bf000340>] (gadgetfs_disconnect+0x14/0x80 [gadgetfs]) from [<c0229104>] (_gadget_stop_activity+0xd4/0x154)
      [<c0229104>] (_gadget_stop_activity+0xd4/0x154) from [<c0229240>] (ci13xxx_stop+0xbc/0x17c)
      [<c0229240>] (ci13xxx_stop+0xbc/0x17c) from [<c022867c>] (usb_gadget_remove_driver+0x88/0x98)
      [<c022867c>] (usb_gadget_remove_driver+0x88/0x98) from [<c02286f4>] (usb_gadget_unregister_driver+0x68/0x88)
      [<c02286f4>] (usb_gadget_unregister_driver+0x68/0x88) from [<bf0003e8>] (dev_release+0x14/0x48 [gadgetfs])
      [<bf0003e8>] (dev_release+0x14/0x48 [gadgetfs]) from [<c00cc158>] (__fput+0xa4/0x1f0)
      [<c00cc158>] (__fput+0xa4/0x1f0) from [<c00c7f28>] (filp_close+0x5c/0x74)
      [<c00c7f28>] (filp_close+0x5c/0x74) from [<c00c7fe8>] (sys_close+0xa8/0x150)
      [<c00c7fe8>] (sys_close+0xa8/0x150) from [<c00092a0>] (ret_fast_syscall+0x0/0x38)
      Tested-by: default avatarPavankumar Kondeti <pkondeti@codeaurora.org>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      001428e4
    • Daniel Mack's avatar
      usb: gadget: fix MIDI gadget jack allocation · 74203de0
      Daniel Mack authored
      The dynamic jack allocation of the MIDI gadget currently links all
      external jacks to one single instance of an embedded jack. According to
      the spec, this is only valid if these streams always carry the same data
      stream, as described in the USB MIDI 1.0 spec, chapter 3.3.1.
      
      Also, genius Windows 7(tm) terminates it's life cycle instantly with a
      blue screen of death once a device with more than one input and output
      port with the current implementation is connected.
      
      While at it, and because it grew again by this change, allocate the
      temporary function pointer list on the heap, not on the stack.
      Signed-off-by: default avatarDaniel Mack <zonque@gmail.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      74203de0
    • Paul Zimmerman's avatar
      usb: gadget: storage: check for valid USB_BULK_RESET_REQUEST wLength · ce7b6121
      Paul Zimmerman authored
      The USB-IF CV compliance tester is getting stricter, and it would
      be valid for it to fail a mass-storage device that accepts an
      invalid USB_BULK_RESET_REQUEST request. Although it doesn't do
      that yet, let's be proactive and fix that now.
      
      Suggested by Alan Stern.
      Signed-off-by: default avatarPaul Zimmerman <paulz@synopsys.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ce7b6121
    • Paul Zimmerman's avatar
      usb: gadget: storage: check for valid USB_BULK_GET_MAX_LUN_REQUEST · db332bc9
      Paul Zimmerman authored
      The latest USB-IF CV tester checks for a valid length for this
      request.
      Signed-off-by: default avatarPaul Zimmerman <paulz@synopsys.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      db332bc9
    • Kuninori Morimoto's avatar
      usb: gadget: renesas_usbhs: fixup section mismatch warning · b7a8d17d
      Kuninori Morimoto authored
      Fix up the following section mismatch warnings:
      
      WARNING: drivers/usb/renesas_usbhs/renesas_usbhs.o(.text+0xf5d): Section
      mismatch in reference from the function usbhs_mod_probe() to the function
      .devinit.text:usbhs_mod_host_probe() The function usbhs_mod_probe() references
      the function __devinit usbhs_mod_host_probe().  This is often because
      usbhs_mod_probe lacks a __devinit annotation or the annotation of
      usbhs_mod_host_probe is wrong.
      
      WARNING: drivers/usb/renesas_usbhs/renesas_usbhs.o(.text+0xfd7): Section
      mismatch in reference from the function usbhs_mod_probe() to the function
      .devexit.text:usbhs_mod_host_remove() The function usbhs_mod_probe() references
      a function in an exit section.  Often the function usbhs_mod_host_remove() has
      valid usage outside the exit section and the fix is to remove the __devexit
      annotation of usbhs_mod_host_remove.
      
      WARNING: drivers/usb/renesas_usbhs/renesas_usbhs.o(.text+0x1005): Section
      mismatch in reference from the function usbhs_mod_remove() to the function
      .devexit.text:usbhs_mod_host_remove() The function usbhs_mod_remove()
      references a function in an exit section.  Often the function
      usbhs_mod_host_remove() has valid usage outside the exit section and the fix is
      to remove the __devexit annotation of usbhs_mod_host_remove.
      Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b7a8d17d
    • Kuninori Morimoto's avatar
      usb: gadget: renesas_usbhs: fixup bogus conversion · c9ae0c91
      Kuninori Morimoto authored
      this patch fixup bogus conversion of
      8a9775ab
      (usb: gadget: renesas_usbhs: fix compile warning)
      Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c9ae0c91
    • Kuninori Morimoto's avatar
      usb: gadget: renesas_usbhs: fixup struct completion usage · 7fccd480
      Kuninori Morimoto authored
      Since renesas_usbhs mod_host didn't use
      struct completion as static object, the warning of lockdep came out.
      This patch fixup this issue.
      Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7fccd480
    • Alexander Aring's avatar
      usb: gadget: fsl_udc_core: fix compile error. · 0e042be3
      Alexander Aring authored
      Fix compile error in file drivers/usb/gadget/fsl_udc_core.c.
      
      drivers/usb/gadget/fsl_udc_core.c: In function 'portscx_device_speed':
      drivers/usb/gadget/fsl_udc_core.c:1720: error: 'speed' undeclared (first
      use in this function)
      
      Introduced in commit e538dfda
      (usb: Provide usb_speed_string() function)
      Signed-off-by: default avatarAlexander Aring <a.aring@phytec.de>
      Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0e042be3
    • Yoshihiro Shimoda's avatar
      usb: gadget: r8a66597-udc: fix flush fifo handling · 05bb7013
      Yoshihiro Shimoda authored
      The "BCLR" in CFIFOCTR/DnFIFOCTR can flush the fifo of "CPU side" only.
      To flush the fifo of "SIE side", we have to use the "ACLRM" in PIPEnCTR.
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      05bb7013
    • Yoshihiro Shimoda's avatar
      usb: gadget: r8a66597-udc: fix for udc-newstyle · b8cbbf80
      Yoshihiro Shimoda authored
      The udc-newstyle needs device_register in probe() of platform_device.
      If it doesn't call, kernel panic happens in the sysfs_create_dir() when
      we run modprobe a gadget driver.
      
      [ balbi@ti.com : fix compile warning introduced by this patch ]
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b8cbbf80
    • Luciano Coelho's avatar
      usb: musb: hdrc: fix dependency on USB_GADGET_DUALSPEED in Kconfig · 0de174b5
      Luciano Coelho authored
      USB_MUSB_HDRC depends on USB_GADGET_DUALSPEED.  If HDRC is selected
      but DUALSPEED is not, the kernel oopses:
      
      [    3.132781] Unable to handle kernel NULL pointer dereference at virtual address 00000000
      [    3.141296] pgd = c0004000
      [    3.144134] [00000000] *pgd=00000000
      [    3.147918] Internal error: Oops: 5 [#1] SMP
      [    3.152404] Modules linked in:
      [    3.155609] CPU: 0    Not tainted  (3.1.0-rc9-wl+ #417)
      [    3.161132] PC is at composite_setup+0x738/0xbb4
      [    3.165985] LR is at vprintk+0x400/0x47c
      [    3.170135] pc : [<c031df90>]    lr : [<c004c150>]    psr: 60000093
      [    3.170135] sp : c065dd50  ip : dfb1f0fc  fp : c065ddbc
      [    3.182220] r10: 00000000  r9 : df8fcae8  r8 : df8fcaa0
      [    3.187713] r7 : 00000000  r6 : df8eaa20  r5 : dfae8ea0  r4 : 00000000
      [    3.194580] r3 : df8fcae8  r2 : 00010002  r1 : c065dc40  r0 : 00000047
      [    3.201446] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      [    3.209228] Control: 10c53c7d  Table: 8000404a  DAC: 00000015
      [    3.215270] Process swapper (pid: 0, stack limit = 0xc065c2f8)
      [    3.221405] Stack: (0xc065dd50 to 0xc065e000)
      [...]
      [    3.415405] [<c031df90>] (composite_setup+0x738/0xbb4) from [<c0310d18>] (musb_g_ep0_irq+0x9d0/0xaf8)
      [    3.425109] [<c0310d18>] (musb_g_ep0_irq+0x9d0/0xaf8) from [<c030fb04>] (musb_interrupt+0xb48/0xc74)
      [    3.434722] [<c030fb04>] (musb_interrupt+0xb48/0xc74) from [<c030fc98>] (generic_interrupt+0x68/0x80)
      [    3.444458] [<c030fc98>] (generic_interrupt+0x68/0x80) from [<c0095204>] (handle_irq_event_percpu+0x9c/0x234)
      [    3.454925] [<c0095204>] (handle_irq_event_percpu+0x9c/0x234) from [<c00953e8>] (handle_irq_event+0x4c/0x6c)
      [    3.465270] [<c00953e8>] (handle_irq_event+0x4c/0x6c) from [<c0097e10>] (handle_fasteoi_irq+0xd8/0x110)
      [    3.475158] [<c0097e10>] (handle_fasteoi_irq+0xd8/0x110) from [<c0094d2c>] (generic_handle_irq+0x34/0x3c)
      [    3.485260] [<c0094d2c>] (generic_handle_irq+0x34/0x3c) from [<c0014ae4>] (handle_IRQ+0x88/0xc8)
      [    3.494537] [<c0014ae4>] (handle_IRQ+0x88/0xc8) from [<c00085b0>] (asm_do_IRQ+0x18/0x1c)
      [    3.503051] [<c00085b0>] (asm_do_IRQ+0x18/0x1c) from [<c0429e78>] (__irq_svc+0x38/0xc0)
      
      This patch changes Kconfig so that USB_GADGET_DUALSPEED is selected
      automatically by USB_MUSB_HDRC.
      Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0de174b5
    • Mian Yousaf Kaukab's avatar
      usb: musb: remove incorrectly added ARCH_U5500 define · d0678594
      Mian Yousaf Kaukab authored
      ARCH_U8500 covers both MACH_U8500 and MACH_U5500
      Reported-by: default avatarPaul Bolle <pebolle@tiscali.nl>
      Signed-off-by: default avatarMian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
      Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d0678594
    • Felipe Balbi's avatar
      usb: gadget: core: allow everybody to read sysfs attributes · 59d81f81
      Felipe Balbi authored
      Those are simply giving information about the current
      state of the UDC, nothing really fancy. We can let
      everybody read those.
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      59d81f81
    • Felipe Balbi's avatar
      usb: gadget: core: fix bug when removing gadget drivers · 6f39504d
      Felipe Balbi authored
      usb_gadget_disconnect() is responsible of removing
      data pullups. Before doing that we must, first, tell
      gadget driver we're disconnecting (by calling disconnect
      method on gadget driver structure), unbind the gadget
      driver and stop the controller.
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      6f39504d
    • Felipe Balbi's avatar
      usb: musb: gadget: don't call ->disconnect() on exit · 3c2d636a
      Felipe Balbi authored
      that has already being done by udc-core.c. It's
      unnecessary and might cause issues with some gadget
      drivers.
      
      Tested: Ajay Kumar Gupta <ajay.gupta@ti.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3c2d636a
    • Felipe Balbi's avatar
      usb: gadget: udc-core: fix bug on soft_connect and srp interfaces · 1d91a962
      Felipe Balbi authored
      We should not be using dev_get_drvdata() because we
      never call dev_set_drvdata(). Let's use container_of()
      as all other sysfs attributes.
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      1d91a962
    • Greg Kroah-Hartman's avatar
      Merge branch 'for-usb-linus' of git.kernel.org/pub/scm/linux/kernel/git/sarah/xhci into usb-linus · 47c6a04b
      Greg Kroah-Hartman authored
      * 'for-usb-linus' of ra.kernel.org:/pub/scm/linux/kernel/git/sarah/xhci:
        usb, xhci: Clear warm reset change event during init
        xhci: Set slot and ep0 flags for address command.
        usb, xhci: fix lockdep warning on endpoint timeout
      47c6a04b
  2. 08 Nov, 2011 2 commits
    • Linus Torvalds's avatar
      Linux 3.2-rc1 · 1ea6b8f4
      Linus Torvalds authored
      .. with new name.  Because nothing says "really solid kernel release"
      like naming it after an extinct animal that just happened to be in the
      news lately.
      1ea6b8f4
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap · 075cb105
      Linus Torvalds authored
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (31 commits)
        ARM: OMAP: Fix export.h or module.h includes
        ARM: OMAP: omap_device: Include linux/export.h
        ARM: OMAP2: Fix H4 matrix keyboard warning
        ARM: OMAP1: Remove unused omap-alsa.h
        ARM: OMAP1: Fix warnings about enabling 32 KiHz timer
        ARM: OMAP2+: timer: Remove omap_device_pm_latency
        ARM: OMAP2+: clock data: Remove redundant timer clkdev
        ARM: OMAP: Devkit8000: Remove double omap_mux_init_gpio
        ARM: OMAP: usb: musb: OMAP: Delete unused function
        MAINTAINERS: Update linux-omap git repository
        ARM: OMAP: change get_context_loss_count ret value to int
        ARM: OMAP4: hsmmc: configure SDMMC1_DR0 properly
        ARM: OMAP4: hsmmc: Fix Pbias configuration on regulator OFF
        ARM: OMAP3: hwmod: fix variant registration and remove SmartReflex from common list
        ARM: OMAP: I2C: Fix omap_register_i2c_bus() return value on success
        ARM: OMAP: dmtimer: Include linux/module.h
        ARM: OMAP2+: l3-noc: Include linux/module.h
        ARM: OMAP2+: devices: Fixes for McPDM
        ARM: OMAP: Fix errors and warnings when building for one board
        ARM: OMAP3: PM: restrict erratum i443 handling to OMAP3430 only
        ...
      075cb105
  3. 07 Nov, 2011 21 commits