27 Apr, 2011

1 commit


19 Apr, 2011

3 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: xen-kbdfront - fix mouse getting stuck after save/restore
    Input: estimate number of events per packet
    Input: evdev - indicate buffer overrun with SYN_DROPPED
    Input: document event types and codes and their intended use
    Input: add KEY_IMAGES specifically for AL Image Browser
    Input: twl4030_keypad - fix potential NULL dereference in twl4030_kp_probe()
    Input: h3600_ts - fix error handling at connect
    Input: twl4030_keypad - avoid potential NULL-pointer dereference

    Linus Torvalds
     
  • Mouse gets "stuck" after restore of PV guest but buttons are in working
    condition.

    If driver has been configured for ABS coordinates at start it will get
    XENKBD_TYPE_POS events and then suddenly after restore it'll start getting
    XENKBD_TYPE_MOTION events, that will be dropped later and they won't get
    into user-space.

    Regression was introduced by hunk 5 and 6 of
    5ea5254aa0ad269cfbd2875c973ef25ab5b5e9db
    ("Input: xen-kbdfront - advertise either absolute or relative
    coordinates").

    Driver on restore should ask xen for request-abs-pointer again if it is
    available. So restore parts that did it before 5ea5254.

    Acked-by: Olaf Hering
    Signed-off-by: Igor Mammedov
    [v1: Expanded the commit description]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Dmitry Torokhov

    Igor Mammedov
     
  • Calculate a default based on the number of ABS axes, REL axes,
    and MT slots for the device during input device registration.

    Signed-off-by: Jeff Brown
    Reviewed-by: Henrik Rydberg
    Signed-off-by: Dmitry Torokhov

    Jeff Brown
     

18 Apr, 2011

7 commits

  • Instead of overloading __blk_run_queue to force an offload to kblockd
    add a new blk_run_queue_async helper to do it explicitly. I've kept
    the blk_queue_stopped check for now, but I suspect it's not needed
    as the check we do when the workqueue items runs should be enough.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     
  • We just need to make sure that an unplug event wakes up the md
    thread, which is exactly what mddev_check_plugged does.

    Also remove some plug-related code that is no longer needed.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • In raid5 plugging is used for 2 things:
    1/ collecting writes that require a bitmap update
    2/ collecting writes in the hope that we can create full
    stripes - or at least more-full.

    We now release these different sets of stripes when plug_cnt
    is zero.

    Also in make_request, we call mddev_check_plug to hopefully increase
    plug_cnt, and wake up the thread at the end if plugging wasn't
    achieved for some reason.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • When an md device adds a request to a queue, it can call
    mddev_check_plugged.
    If this succeeds then we know that the md thread will be woken up
    shortly, and ->plug_cnt will be non-zero until then, so some
    processing can be delayed.

    If it fails, then no unplug callback is expected and the make_request
    function needs to do whatever is required to make the request happen.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • md has some plugging infrastructure for RAID5 to use because the
    normal plugging infrastructure required a 'request_queue', and when
    called from dm, RAID5 doesn't have one of those available.

    This relied on the ->unplug_fn callback which doesn't exist any more.

    So remove all of that code, both in md and raid5. Subsequent patches
    with restore the plugging functionality.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • Now that unplugging is done differently, the unplug_fn callback is
    never called, so it can be completely discarded.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • md/raid submits a lot of IO from the various raid threads.
    So adding start/finish plug calls to those so that some
    plugging happens.

    Signed-off-by: NeilBrown

    NeilBrown
     

17 Apr, 2011

4 commits

  • Apparently some distros set i2c-algo-bit.bit_test to 1 by
    default. In some cases this causes i2c_bit_add_bus
    to fail and prevents the i2c bus from being added. In the
    radeon case, we fail to add the ddc i2c buses which prevents
    the driver from being able to detect attached monitors.
    The i2c bus works fine even if bit_test fails. This is likely
    due to gpio switching that is required and handled in the
    pre/post_xfer hooks, so call the pre/post_xfer hooks in the
    bit test as well.

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=36221

    Signed-off-by: Alex Deucher
    Signed-off-by: Jean Delvare
    Cc: stable@kernel.org [.38 down to .34]

    Alex Deucher
     
  • When warning on the use of deprecated i2c_driver methods
    attach_adapter and detach_adapter, mention the name of the driver
    which needs to be updated.

    Signed-off-by: Jean Delvare
    Cc: Benjamin Herrenschmidt

    Jean Delvare
     
  • * 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (43 commits)
    Revert "USB: isp1760-hcd: move imask clear after pending work is done"
    xHCI: Implement AMD PLL quirk
    xhci: Tell USB core both roothubs lost power.
    usbcore: Bug fix: system can't suspend with USB3.0 device connected to USB3.0 hub
    USB: Fix unplug of device with active streams
    USB: xhci - also free streams when resetting devices
    xhci: Fix NULL pointer deref in handle_port_status()
    USB: xhci - fix math in xhci_get_endpoint_interval()
    USB: xhci: simplify logic of skipping missed isoc TDs
    USB: xhci - remove excessive 'inline' markings
    USB: xhci: unsigned char never equals -1
    USB: xhci - fix unsafe macro definitions
    USB: fix formatting of SuperSpeed endpoints in /proc/bus/usb/devices
    USB: isp1760-hcd: move imask clear after pending work is done
    USB: fsl_qe_udc: send ZLP when zero flag and length % maxpacket == 0
    usb: qcserial add missing errorpath kfrees
    usb: qcserial avoid pointing to freed memory
    usb: Fix qcserial memory leak on rmmod
    USB: ftdi_sio: add ids for Hameg HO720 and HO730
    USB: option: Added support for Samsung GT-B3730/GT-B3710 LTE USB modem.
    ...

    Linus Torvalds
     
  • …linus', 'timer-fixes-for-linus' and 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    futex: Set FLAGS_HAS_TIMEOUT during futex_wait restart setup

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf_event: Fix cgrp event scheduling bug in perf_enable_on_exec()
    perf: Fix a build error with some GCC versions

    * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    sched: Fix erroneous all_pinned logic
    sched: Fix sched-domain avg_load calculation

    * 'timer-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    RTC: rtc-mrst: follow on to the change of rtc_device_register()
    RTC: add missing "return 0" in new alarm func for rtc-bfin.c
    RTC: Fix s3c compile error due to missing s3c_rtc_setpie
    RTC: Fix early irqs caused by calling rtc_set_alarm too early

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, amd: Disable GartTlbWlkErr when BIOS forgets it
    x86, NUMA: Fix fakenuma boot failure
    x86/mrst: Fix boot crash caused by incorrect pin to irq mapping
    x86/ce4100: Add reg property to bridges

    Linus Torvalds
     

16 Apr, 2011

1 commit

  • * 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm:
    ARM: 6879/1: fix personality test wrt usage of domain handlers
    ARM: 6878/1: fix personality flag propagation across an exec
    ARM: 6877/1: the ADDR_NO_RANDOMIZE personality flag should be honored with mmap()
    ARM: 6876/1: Kconfig.debug: Remove unused CONFIG_DEBUG_ERRORS
    ARM: pxa: convert incorrect IRQ_TO_IRQ() to irq_to_gpio()
    ARM: mmp: align NR_BUILTIN_GPIO with gpio interrupt number
    ARM: pxa: align NR_BUILTIN_GPIO with GPIO interrupt number
    ARM: pxa: always clear LPM bits for PXA168 MFPR
    pcmcia: limit pxa2xx_trizeps4 subdriver to trizeps4 platform
    pcmcia: limit pxa2xx_balloon3 subdriver to balloon3 platform
    ARM: pxafb: Fix access to nonexistent member of pxafb_info
    ARM: 6872/1: arch:common:Makefile Remove unused config in the Makefile.
    ARM: 6868/1: Preserve the VFP state during fork
    ARM: 6867/1: Introduce THREAD_NOTIFY_COPY for copy_thread() hooks
    ARM: 6866/1: Do not restrict HIGHPTE to !OUTER_CACHE
    ARM: 6865/1: perf: ensure pass through zero is counted on overflow
    ARM: 6864/1: hw_breakpoint: clear DBGVCR out of reset
    ARM: Only allow PM_SLEEP with CPUs which support suspend
    ARM: Make consolidated PM sleep code depend on PM_SLEEP

    Linus Torvalds
     

15 Apr, 2011

6 commits


14 Apr, 2011

18 commits

  • This patch disable the optional PM feature inside the Hudson3 platform under
    the following conditions:

    1. If an isochronous device is connected to xHCI port and is active;
    2. Optional PM feature that powers down the internal Bus PLL when the link is
    in low power state is enabled.

    The PM feature needs to be disabled to eliminate PLL startup delays when the
    link comes out of low power state. The performance of DMA data transfer could
    be impacted if system delay were encountered and in addition to the PLL start
    up delays. Disabling the PM would leave room for unpredictable system delays
    in order to guarantee uninterrupted data transfer to isochronous audio or
    video stream devices that require time sensitive information. If data in an
    audio/video stream was interrupted then erratic audio or video performance
    may be encountered.

    AMD PLL quirk is already implemented in OHCI/EHCI driver. After moving the
    quirk code to pci-quirks.c and export them, xHCI driver can call it directly
    without having the quirk implementation in itself.

    Signed-off-by: Andiry Xu
    Signed-off-by: Sarah Sharp

    Andiry Xu
     
  • On a resume, when the power is lost during hibernate, the USB core will
    call hub_reset_resume for the xHCI USB 2.0 roothub, but not for the USB
    3.0 roothub:

    [ 164.748310] usb usb1: root hub lost power or was reset
    [ 164.748353] usb usb2: root hub lost power or was reset
    [ 164.748487] usb usb3: root hub lost power or was reset
    [ 164.748488] xhci_hcd 0000:01:00.0: Stop HCD
    ...
    [ 164.870039] hub 4-0:1.0: hub_resume
    ...
    [ 164.870054] hub 3-0:1.0: hub_reset_resume

    This causes issues later, because the USB core assumes the USB 3.0 hub
    attached to the USB 3.0 roothub is still active. It attempts to queue a
    control URB for the external hub, which fails because all the device
    slot contexts were released when the USB 3.0 roothub lost power:

    [ 164.980044] hub 4-1:1.0: hub_resume
    [ 164.980047] xhci_hcd 0000:01:00.0: Get port status returned 0x10101
    [ 164.980049] xHCI xhci_urb_enqueue called with unaddressed device
    [ 164.980053] hub 3-0:1.0: port 1: status 0101 change 0001
    [ 164.980056] hub 4-1:1.0: hub_port_status failed (err = -22)
    [ 164.980060] xhci_hcd 0000:01:00.0: `MEM_WRITE_DWORD(3'b000, 32'hffffc90008948440, 32'h202e1, 4'hf);
    [ 164.980062] xHCI xhci_urb_enqueue called with unaddressed device
    [ 164.980066] xhci_hcd 0000:01:00.0: clear port connect change, actual port 0 status = 0x2e1
    [ 164.980069] hub 4-1:1.0: hub_port_status failed (err = -22)
    [ 164.980072] xhci_hcd 0000:01:00.0: get port status, actual port 1 status = 0x2a0
    [ 164.980074] xHCI xhci_urb_enqueue called with unaddressed device
    [ 164.980077] xhci_hcd 0000:01:00.0: Get port status returned 0x100
    [ 164.980079] hub 4-1:1.0: hub_port_status failed (err = -22)
    [ 164.980082] xHCI xhci_urb_enqueue called with unaddressed device
    [ 164.980085] hub 4-1:1.0: hub_port_status failed (err = -22)
    [ 164.980088] hub 4-1:1.0: port 4: status 0000 change 0000
    [ 164.980091] xHCI xhci_urb_enqueue called with unaddressed device
    [ 164.980094] hub 4-1:1.0: activate --> -22
    [ 164.980113] xHCI xhci_urb_enqueue called with unaddressed device
    [ 164.980117] hub 4-1:1.0: hub_port_status failed (err = -22)
    [ 164.980119] xHCI xhci_urb_enqueue called with unaddressed device
    [ 164.980123] hub 4-1:1.0: can't resume port 4, status -22
    [ 164.980126] hub 4-1:1.0: port 4 status ffff.ffff after resume, -22
    [ 164.980129] usb 4-1.4: can't resume, status -22
    [ 164.980131] hub 4-1:1.0: logical disconnect on port 4

    This causes issues when a USB 3.0 hard drive is attached to the external
    USB 3.0 hub when the system is hibernated:

    [ 6249.849653] sd 8:0:0:0: [sdb] Unhandled error code
    [ 6249.849659] sd 8:0:0:0: [sdb] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
    [ 6249.849663] sd 8:0:0:0: [sdb] CDB: Read(10): 28 00 00 00 2a 08 00 00 02 00
    [ 6249.849671] end_request: I/O error, dev sdb, sector 10760

    Make sure to inform the USB core that *both* xHCI roothubs lost power.

    Signed-off-by: Sarah Sharp

    Sarah Sharp
     
  • This patch clear PORT_POWER when suspend a USB3.0 device behind a USB3.0
    external hub, so the system can suspend and resume.

    Note USB3.0 device may not work after system resume and this is a temporary
    workaround. The correct fix will be in future patches.

    Signed-off-by: Andiry Xu
    Signed-off-by: Sarah Sharp

    Andiry Xu
     
  • If I unplug a device while the UAS driver is loaded, I get an oops
    in usb_free_streams(). This is because usb_unbind_interface() calls
    usb_disable_interface() which calls usb_disable_endpoint() which sets
    ep_out and ep_in to NULL. Then the UAS driver calls usb_pipe_endpoint()
    which returns a NULL pointer and passes an array of NULL pointers to
    usb_free_streams().

    I think the correct fix for this is to check for the NULL pointer
    in usb_free_streams() rather than making the driver check for this
    situation. My original patch for this checked for dev->state ==
    USB_STATE_NOTATTACHED, but the call to usb_disable_interface() is
    conditional, so not all drivers would want this check.

    Note from Sarah Sharp: This patch does avoid a potential dereference,
    but the real fix (which will be implemented later) is to set the
    .soft_unbind flag in the usb_driver structure for the UAS driver, and
    all drivers that allocate streams. The driver should free any streams
    when it is unbound from the interface. This avoids leaking stream rings
    in the xHCI driver when usb_disable_interface() is called.

    This should be queued for stable trees back to 2.6.35.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Sarah Sharp
    Cc: stable@kernel.org

    Matthew Wilcox
     
  • Currently, when resetting a device, xHCI driver disables all but one
    endpoints and frees their rings, but leaves alone any streams that
    might have been allocated. Later, when users try to free allocated
    streams, we oops in xhci_setup_no_streams_ep_input_ctx() because
    ep->ring is NULL.

    Let's free not only rings but also stream data as well, so that
    calling free_streams() on a device that was reset will be safe.

    This should be queued for stable trees back to 2.6.35.

    Reviewed-by: Micah Elizabeth Scott
    Signed-off-by: Dmitry Torokhov
    Signed-off-by: Sarah Sharp
    Cc: stable@kernel.org

    Dmitry Torokhov
     
  • When we get a port status change event, we need to figure out what type of
    port it came from: a USB 3.0 port, or a USB 2.0/1.1 port. We can't know
    which usb_hcd to use until that point, so hcd will be NULL for part of the
    function. Unfortunately, if any of the sanity checks fail, we'll jump to
    the cleanup label before hcd is set to a valid pointer, and then we'll
    attempt to tell the USB core to kick the hcd, which is NULL.

    Skip kicking the roothub if the sanity checks fail.

    Signed-off-by: Sarah Sharp

    Sarah Sharp
     
  • When parsing exponent-expressed intervals we subtract 1 from the
    value and then expect it to match with original + 1, which is
    highly unlikely, and we end with frequent spew:

    usb 3-4: ep 0x83 - rounding interval to 512 microframes

    Also, parsing interval for fullspeed isochronous endpoints was
    incorrect - according to USB spec they use exponent-based
    intervals (but xHCI spec claims frame-based intervals). I trust
    USB spec more, especially since USB core agrees with it.

    This should be queued for stable kernels back to 2.6.31.

    Reviewed-by: Micah Elizabeth Scott
    Signed-off-by: Dmitry Torokhov
    Signed-off-by: Sarah Sharp
    Cc: stable@kernel.org

    Dmitry Torokhov
     
  • The logic of the handling Missed Service Error Events was pretty
    confusing as we were checking the same condition several times.
    In addition, it caused compiler warning since the compiler could
    not figure out that event_trb is actually unused in case we are
    skipping current TD.

    Fix that by rearranging "skip" condition checks, and factor out
    skip_isoc_td() so that it is called explicitly.

    Signed-off-by: Dmitry Torokhov
    Signed-off-by: Sarah Sharp

    Dmitry Torokhov
     
  • Remove 'inline' markings from file-local functions and let compiler
    do its job and inline what makes sense for given architecture.

    Signed-off-by: Dmitry Torokhov
    Signed-off-by: Sarah Sharp

    Dmitry Torokhov
     
  • There were some places that compared port_speed == -1 where port_speed
    is a u8. This doesn't work unless we cast the -1 to u8. Some places
    did it correctly.

    Instead of using -1 directly, I've created a DUPLICATE_ENTRY define
    which does the cast and is more descriptive as well.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Sarah Sharp

    Dan Carpenter
     
  • Macro arguments used in expressions need to be enclosed in parenthesis
    to avoid unpleasant surprises.

    This should be queued for kernels back to 2.6.31

    Signed-off-by: Dmitry Torokhov
    Signed-off-by: Sarah Sharp
    Cc: stable@kernel.org

    Dmitry Torokhov
     
  • Isochronous and interrupt SuperSpeed endpoints use the same mechanisms
    for decoding bInterval values as HighSpeed ones so adjust the code
    accordingly.

    Also bandwidth reservation for SuperSpeed matches highspeed, not
    low/full speed.

    Signed-off-by: Dmitry Torokhov
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Dmitry Torokhov
     
  • This patch moves the HcInterrupt register write to clear the
    pending interrupt to after the isr work is done, doing this removes
    glitches in the irq line.

    Signed-off-by: Richard Retanubun
    Signed-off-by: Greg Kroah-Hartman

    Richard Retanubun
     
  • The driver did not take the zero flag in the USB request. If the
    request length is the same as the endpoint's maxpacket, an additional
    ZLP with no data has to be transmitted.

    The method used here is inspired to what is done in fsl_udc_core.c
    (and pxa27x_udc.c and at91_udc.c) where this is supported.

    There already was a discussion about this topic with people from
    Keymile, and I propose here a better implementation:

    http://thread.gmane.org/gmane.linux.usb.general/38951

    Signed-off-by: Valentin Longchamp
    Acked-by: Li Yang
    Signed-off-by: Greg Kroah-Hartman

    Valentin Longchamp
     
  • There are two -ENODEV error paths in qcprobe where the allocated private
    data is not freed, this patch adds the two missing kfrees to avoid
    leaking memory on the error path

    Signed-off-by: Steven Hardy
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Steven Hardy
     
  • Rework the qcprobe logic such that serial->private is not set when
    qcprobe exits with -ENODEV, otherwise serial->private will point to freed
    memory on -ENODEV

    Signed-off-by: Steven Hardy
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Steven Hardy
     
  • qcprobe function allocates serial->private but this is never freed, this
    patch adds a new function qc_release() which frees serial->private, after
    calling usb_wwan_release

    Signed-off-by: Steven Hardy
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Steven Hardy
     
  • usb serial: ftdi_sio: add two missing USB ID's for Hameg interfaces HO720
    and HO730

    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Paul Friedrich