21 May, 2010

5 commits

  • This patch adds the capability to use the usb debug port with the
    kernel debugger. It is also still possible to use this functionality
    with or without the earlyprintk=dbgpX. It is possible to use the
    kgdbwait boot argument to debug very early in the kernel start up code.

    There are two ways to use this driver extension with a kernel boot argument.

    1) kgdbdbgp=# -- Where # is the number of the usb debug controller

    You must use sysrq-g to break into the kernel debugger on another
    connection type other than the dbgp.

    2) kgdbdbgp=#debugControlNum#,#Seconds#

    In this mode, the usb debug port is polled every #Seconds# for
    character input. It is possible to use gdb or press control-c to
    break into the kernel debugger.

    From the implementation perspective there are 3 high level changes.

    1) Allow variable retries for the the hardware via dbgp_bulk_read().

    The amount of retries for the dbgp_bulk_read() needed to be
    variable instead of fixed. We do not want to poll at all when the
    kernel is operating in interrupt driven mode. The polling only
    occurs if the kernel was booted when specifying some number of
    seconds via the kgdbdbgp boot argument (IE kgdbdbgp=0,1). In this
    case the loop count is reduced to 1 so as introduce the smallest
    amount of latency as possible.

    2) Save the bulk IN endpoint address for use by the kgdb code.

    3) The addition of the kgdb interface code.

    This consisted of adding in a character read function for the dbgp
    as well as a polling thread to allow the dbgp to interrupt the
    kernel execution. The rest is the typical kgdb I/O api.

    CC: Eric Biederman
    CC: Yinghai Lu
    CC: linux-usb@vger.kernel.org
    Signed-off-by: Jason Wessel
    Acked-by: Greg Kroah-Hartman

    Jason Wessel
     
  • The ekgdboc= differs from kgdboc= in that you can begin debuggin as
    soon as the exceptions are setup and the kgdb I/O driver is available,
    instead of waiting until the tty subsystem is available.

    CC: kgdb-bugreport@lists.sourceforge.net
    Signed-off-by: Jason Wessel

    Jason Wessel
     
  • Update the kgdb docs to reflect the new directory structure and API.

    Merge in the kdb shell information.

    [Randy Dunlap : grammatical corrections]

    CC: Randy Dunlap
    Signed-off-by: Jason Wessel

    Jason Wessel
     
  • This patch adds in the kdb PS/2 keyboard driver. This was mostly a
    direct port from the original kdb where I cleaned up the code against
    checkpatch.pl and added the glue to stitch it into kgdb.

    This patch also enables early kdb debug via kgdbwait and the keyboard.

    All the access to configure kdb using either a serial console or the
    keyboard is done via kgdboc.

    If you want to use only the keyboard and want to break in early you
    would add to your kernel command arguments:

    kgdboc=kbd kgdbwait

    If you wanted serial and or the keyboard access you could use:

    kgdboc=kbd,ttyS0

    You can also configure kgdboc as a kernel module or at run time with
    the sysfs where you can activate and deactivate kgdb.

    Turn it on:
    echo kbd,ttyS0 > /sys/module/kgdboc/parameters/kgdboc

    Turn it off:
    echo "" > /sys/module/kgdboc/parameters/kgdboc

    Signed-off-by: Jason Wessel
    Reviewed-by: Dmitry Torokhov

    Jason Wessel
     
  • * 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (22 commits)
    ACPI: fix early DSDT dmi check warnings on ia64
    ACPICA: Update version to 20100428.
    ACPICA: Update/clarify some parameter names associated with acpi_handle
    ACPICA: Rename acpi_ex_system_do_suspend->acpi_ex_system_do_sleep
    ACPICA: Prevent possible allocation overrun during object copy
    ACPICA: Split large file, evgpeblk
    ACPICA: Add GPE support for dynamically loaded ACPI tables
    ACPICA: Clarify/rename some root table descriptor fields
    ACPICA: Update version to 20100331.
    ACPICA: Minimize the differences between linux GPE code and ACPICA code base
    ACPI: add boot option acpi=copy_dsdt to fix corrupt DSDT
    ACPICA: Update DSDT copy/detection.
    ACPICA: Add subsystem option to force copy of DSDT to local memory
    ACPICA: Add detection of corrupted/replaced DSDT
    ACPICA: Add write support for DataTable operation regions
    ACPICA: Fix for acpi_reallocate_root_table for incorrect root table copy
    ACPICA: Update comments/headers, no functional change
    ACPICA: Update version to 20100304
    ACPICA: Fix for possible fault in acpi_ex_release_mutex
    ACPICA: Standardize integer output for ACPICA warnings/errors
    ...

    Linus Torvalds
     

20 May, 2010

1 commit

  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (61 commits)
    KEYS: Return more accurate error codes
    LSM: Add __init to fixup function.
    TOMOYO: Add pathname grouping support.
    ima: remove ACPI dependency
    TPM: ACPI/PNP dependency removal
    security/selinux/ss: Use kstrdup
    TOMOYO: Use stack memory for pending entry.
    Revert "ima: remove ACPI dependency"
    Revert "TPM: ACPI/PNP dependency removal"
    KEYS: Do preallocation for __key_link()
    TOMOYO: Use mutex_lock_interruptible.
    KEYS: Better handling of errors from construct_alloc_key()
    KEYS: keyring_serialise_link_sem is only needed for keyring->keyring links
    TOMOYO: Use GFP_NOFS rather than GFP_KERNEL.
    ima: remove ACPI dependency
    TPM: ACPI/PNP dependency removal
    selinux: generalize disabling of execmem for plt-in-heap archs
    LSM Audit: rename LSM_AUDIT_NO_AUDIT to LSM_AUDIT_DATA_NONE
    CRED: Holding a spinlock does not imply the holding of RCU read lock
    SMACK: Don't #include Ext2 headers
    ...

    Linus Torvalds
     

18 May, 2010

1 commit

  • …el/git/tip/linux-2.6-tip

    * 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    tracing: Fix "integer as NULL pointer" warning.
    tracing: Fix tracepoint.h DECLARE_TRACE() to allow more than one header
    tracing: Make the documentation clear on trace_event boot option
    ring-buffer: Wrap open-coded WARN_ONCE
    tracing: Convert nop macros to static inlines
    tracing: Fix sleep time function profiling
    tracing: Show sample std dev in function profiling
    tracing: Add documentation for trace commands mod, traceon/traceoff
    ring-buffer: Make benchmark handle missed events
    ring-buffer: Make non-consuming read less expensive with lots of cpus.
    tracing: Add graph output support for irqsoff tracer
    tracing: Have graph flags passed in to ouput functions
    tracing: Add ftrace events for graph tracer
    tracing: Dump either the oops's cpu source or all cpus buffers
    tracing: Fix uninitialized variable of tracing/trace output

    Linus Torvalds
     

13 May, 2010

1 commit


11 May, 2010

1 commit


06 May, 2010

1 commit


23 Apr, 2010

2 commits


22 Apr, 2010

1 commit

  • The ftrace_dump_on_oops kernel parameter, sysctl and sysrq let one
    dump every cpu buffers when an oops or panic happens.

    It's nice when you have few cpus but it may take ages if have many,
    plus you miss the real origin of the problem in all the cpu traces.

    Sometimes, all you need is to dump the cpu buffer that triggered the
    opps, most of the time it is our main interest.

    This patch modifies ftrace_dump_on_oops to handle this choice.

    The ftrace_dump_on_oops kernel parameter, when it comes alone, has
    the same behaviour than before. But ftrace_dump_on_oops=orig_cpu
    will only dump the buffer of the cpu that oops'ed.

    Similarly, sysctl kernel.ftrace_dump_on_oops=1 and
    echo 1 > /proc/sys/kernel/ftrace_dump_on_oops keep their previous
    behaviour. But setting 2 jumps into cpu origin dump mode.

    v2: Fix double setup
    v3: Fix spelling issues reported by Randy Dunlap
    v4: Also update __ftrace_dump in the selftests

    Signed-off-by: Frederic Weisbecker
    Acked-by: David S. Miller
    Acked-by: Steven Rostedt
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Li Zefan
    Cc: Lai Jiangshan

    Frederic Weisbecker
     

20 Apr, 2010

1 commit

  • Some BIOS on Toshiba machines corrupt the DSDT, so add a new
    boot option acpi=copy_dsdt to workaround it.
    Add warning message to ask users to use this option if corrupt DSDT detected.

    Also build a DMI blacklist to check it and automatically copy DSDT.

    https://bugzilla.kernel.org/show_bug.cgi?id=14679

    Signed-off-by: Lin Ming
    Signed-off-by: Len Brown

    Lin Ming
     

07 Apr, 2010

2 commits


31 Mar, 2010

1 commit


26 Mar, 2010

1 commit


15 Mar, 2010

1 commit


08 Mar, 2010

1 commit

  • * 'x86-mrst-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (30 commits)
    x86, mrst: Fix whitespace breakage in apb_timer.c
    x86, mrst: Fix APB timer per cpu clockevent
    x86, mrst: Remove X86_MRST dependency on PCI_IOAPIC
    x86, olpc: Use pci subarch init for OLPC
    x86, pci: Add arch_init to x86_init abstraction
    x86, mrst: Add Kconfig dependencies for Moorestown
    x86, pci: Exclude Moorestown PCI code if CONFIG_X86_MRST=n
    x86, numaq: Make CONFIG_X86_NUMAQ depend on CONFIG_PCI
    x86, pci: Add sanity check for PCI fixed bar probing
    x86, legacy_irq: Remove duplicate vector assigment
    x86, legacy_irq: Remove left over nr_legacy_irqs
    x86, mrst: Platform clock setup code
    x86, apbt: Moorestown APB system timer driver
    x86, mrst: Add vrtc platform data setup code
    x86, mrst: Add platform timer info parsing code
    x86, mrst: Fill in PCI functions in x86_init layer
    x86, mrst: Add dummy legacy pic to platform setup
    x86/PCI: Moorestown PCI support
    x86, ioapic: Add dummy ioapic functions
    x86, ioapic: Early enable ioapic for timer irq
    ...

    Fixed up semantic conflict of new clocksources due to commit
    17622339af25 ("clocksource: add argument to resume callback").

    Linus Torvalds
     

04 Mar, 2010

1 commit

  • * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (25 commits)
    x86: Fix out of order of gsi
    x86: apic: Fix mismerge, add arch_probe_nr_irqs() again
    x86, irq: Keep chip_data in create_irq_nr and destroy_irq
    xen: Remove unnecessary arch specific xen irq functions.
    smp: Use nr_cpus= to set nr_cpu_ids early
    x86, irq: Remove arch_probe_nr_irqs
    sparseirq: Use radix_tree instead of ptrs array
    sparseirq: Change irq_desc_ptrs to static
    init: Move radix_tree_init() early
    irq: Remove unnecessary bootmem code
    x86: Add iMac9,1 to pci_reboot_dmi_table
    x86: Convert i8259_lock to raw_spinlock
    x86: Convert nmi_lock to raw_spinlock
    x86: Convert ioapic_lock and vector_lock to raw_spinlock
    x86: Avoid race condition in pci_enable_msix()
    x86: Fix SCI on IOAPIC != 0
    x86, ia32_aout: do not kill argument mapping
    x86, irq: Move __setup_vector_irq() before the first irq enable in cpu online path
    x86, irq: Update the vector domain for legacy irqs handled by io-apic
    x86, irq: Don't block IRQ0_VECTOR..IRQ15_VECTOR's on all cpu's
    ...

    Linus Torvalds
     

01 Mar, 2010

3 commits

  • Conflicts:
    drivers/firmware/iscsi_ibft.c

    David S. Miller
     
  • * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, mm: Unify kernel_physical_mapping_init() API
    x86, mm: Allow highmem user page tables to be disabled at boot time
    x86: Do not reserve brk for DMI if it's not going to be used
    x86: Convert tlbstate_lock to raw_spinlock
    x86: Use the generic page_is_ram()
    x86: Remove BIOS data range from e820
    Move page_is_ram() declaration to mm.h
    Generic page_is_ram: use __weak
    resources: introduce generic page_is_ram()

    Linus Torvalds
     
  • …r-linus', 'x86-debug-for-linus', 'x86-doc-for-linus', 'x86-gpu-for-linus' and 'x86-rlimit-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'core-ipi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    generic-ipi: Optimize accesses by using DEFINE_PER_CPU_SHARED_ALIGNED for IPI data

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    plist: Fix grammar mistake, and c-style mistake

    * 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    kprobes: Add mcount to the kprobes blacklist

    * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86_64: Print modules like i386 does

    * 'x86-doc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Put 'nopat' in kernel-parameters

    * 'x86-gpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86-64: Allow fbdev primary video code

    * 'x86-rlimit-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Use helpers for rlimits

    Linus Torvalds
     

25 Feb, 2010

2 commits

  • Distros generally (I looked at Debian, RHEL5 and SLES11) seem to
    enable CONFIG_HIGHPTE for any x86 configuration which has highmem
    enabled. This means that the overhead applies even to machines which
    have a fairly modest amount of high memory and which therefore do not
    really benefit from allocating PTEs in high memory but still pay the
    price of the additional mapping operations.

    Running kernbench on a 4G box I found that with CONFIG_HIGHPTE=y but
    no actual highptes being allocated there was a reduction in system
    time used from 59.737s to 55.9s.

    With CONFIG_HIGHPTE=y and highmem PTEs being allocated:
    Average Optimal load -j 4 Run (std deviation):
    Elapsed Time 175.396 (0.238914)
    User Time 515.983 (5.85019)
    System Time 59.737 (1.26727)
    Percent CPU 263.8 (71.6796)
    Context Switches 39989.7 (4672.64)
    Sleeps 42617.7 (246.307)

    With CONFIG_HIGHPTE=y but with no highmem PTEs being allocated:
    Average Optimal load -j 4 Run (std deviation):
    Elapsed Time 174.278 (0.831968)
    User Time 515.659 (6.07012)
    System Time 55.9 (1.07799)
    Percent CPU 263.8 (71.266)
    Context Switches 39929.6 (4485.13)
    Sleeps 42583.7 (373.039)

    This patch allows the user to control the allocation of PTEs in
    highmem from the command line ("userpte=nohigh") but retains the
    status-quo as the default.

    It is possible that some simple heuristic could be developed which
    allows auto-tuning of this option however I don't have a sufficiently
    large machine available to me to perform any particularly meaningful
    experiments. We could probably handwave up an argument for a threshold
    at 16G of total RAM.

    Assuming 768M of lowmem we have 196608 potential lowmem PTE
    pages. Each page can map 2M of RAM in a PAE-enabled configuration,
    meaning a maximum of 384G of RAM could potentially be mapped using
    lowmem PTEs.

    Even allowing generous factor of 10 to account for other required
    lowmem allocations, generous slop to account for page sharing (which
    reduces the total amount of RAM mappable by a given number of PT
    pages) and other innacuracies in the estimations it would seem that
    even a 32G machine would not have a particularly pressing need for
    highmem PTEs. I think 32G could be considered to be at the upper bound
    of what might be sensible on a 32 bit machine (although I think in
    practice 64G is still supported).

    It's seems questionable if HIGHPTE is even a win for any amount of RAM
    you would sensibly run a 32 bit kernel on rather than going 64 bit.

    Signed-off-by: Ian Campbell
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Ian Campbell
     
  • Moorestown platform does not have PIT or HPET platform timers. Instead it
    has a bank of eight APB timers. The number of available timers to the os
    is exposed via SFI mtmr tables. All APB timer interrupts are routed via
    ioapic rtes and delivered as MSI.
    Currently, we use timer 0 and 1 for per cpu clockevent devices, timer 2
    for clocksource.

    Signed-off-by: Jacob Pan
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Jacob Pan
     

24 Feb, 2010

1 commit

  • The main benefit of using ACPI host bridge window information is that
    we can do better resource allocation in systems with multiple host bridges,
    e.g., http://bugzilla.kernel.org/show_bug.cgi?id=14183

    Sometimes we need _CRS information even if we only have one host bridge,
    e.g., https://bugs.launchpad.net/ubuntu/+source/linux/+bug/341681

    Most of these systems are relatively new, so this patch turns on
    "pci=use_crs" only on machines with a BIOS date of 2008 or newer.

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     

23 Feb, 2010

2 commits

  • Apparently, some machines may have problems with PCI run-time power
    management if MSIs are used for the native PCIe PME signaling. In
    particular, on the MSI Wind U-100 PCIe PME interrupts are not
    generated by a PCIe root port after a resume from suspend to RAM, if
    the system wake-up was triggered by a PME from the device attached to
    this port. [It doesn't help to free the interrupt on suspend and
    request it back on resume, even if that is done along with disabling
    the MSI and re-enabling it, respectively.] However, if INTx
    interrupts are used for this purpose on the same machine, everything
    works just fine.

    For this reason, add a kernel command line switch allowing one to
    request that MSIs be not used for the native PCIe PME signaling,
    introduce a DMI table allowing us to blacklist machines that need
    this switch to be set by default and put the MSI Wind U-100 into this
    table.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     
  • PCIe native PME detection mechanism is based on interrupts generated
    by root ports or event collectors every time a PCIe device sends a
    PME message upstream.

    Once a PME message has been sent by an endpoint device and received
    by its root port (or event collector in the case of root complex
    integrated endpoints), the Requester ID from the message header is
    registered in the root port's Root Status register. At the same
    time, the PME Status bit of the Root Status register is set to
    indicate that there's a PME to handle. If PCIe PME interrupt is
    enabled for the root port, it generates an interrupt once the PME
    Status has been set. After receiving the interrupt, the kernel can
    identify the PCIe device that generated the PME using the Requester
    ID from the root port's Root Status register. [For details, see PCI
    Express Base Specification, Rev. 2.0.]

    Implement a driver for the PCIe PME root port service working in
    accordance with the above description.

    Based on a patch from Shaohua Li .

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     

21 Feb, 2010

1 commit

  • Some glibc versions intentionally create lots of alignment faults in
    their gconv code, which if not fixed up, results in segfaults during
    boot. This can prevent systems booting properly.

    There is no clear hard-configurable default for this; the desired
    default depends on the nature of the userspace which is going to be
    booted.

    So, provide a way for the alignment fault handler to be configured via
    the kernel command line.

    Signed-off-by: Russell King

    Russell King
     

18 Feb, 2010

1 commit


05 Feb, 2010

1 commit


23 Jan, 2010

1 commit


20 Jan, 2010

1 commit


31 Dec, 2009

1 commit

  • Introduce kernel parameter acpi_sleep=sci_force_enable

    some laptop requires SCI_EN being set directly on resume,
    or else they hung somewhere in the resume code path.

    We already have a blacklist for these laptops but we still need
    this option, especially when debugging some suspend/resume problems,
    in case there are systems that need this workaround and are not yet
    in the blacklist.

    Signed-off-by: Zhang Rui
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Len Brown

    Zhang Rui
     

17 Dec, 2009

1 commit

  • * 'for-2.6.33' of git://linux-nfs.org/~bfields/linux: (42 commits)
    nfsd: remove pointless paths in file headers
    nfsd: move most of nfsfh.h to fs/nfsd
    nfsd: remove unused field rq_reffh
    nfsd: enable V4ROOT exports
    nfsd: make V4ROOT exports read-only
    nfsd: restrict filehandles accepted in V4ROOT case
    nfsd: allow exports of symlinks
    nfsd: filter readdir results in V4ROOT case
    nfsd: filter lookup results in V4ROOT case
    nfsd4: don't continue "under" mounts in V4ROOT case
    nfsd: introduce export flag for v4 pseudoroot
    nfsd: let "insecure" flag vary by pseudoflavor
    nfsd: new interface to advertise export features
    nfsd: Move private headers to source directory
    vfs: nfsctl.c un-used nfsd #includes
    lockd: Remove un-used nfsd headers #includes
    s390: remove un-used nfsd #includes
    sparc: remove un-used nfsd #includes
    parsic: remove un-used nfsd #includes
    compat.c: Remove dependence on nfsd private headers
    ...

    Linus Torvalds
     

16 Dec, 2009

1 commit

  • For embedded systems, the blinking cursor at startup time can be annoying
    and unintended. Add a new kernel parameter to change the default cursor
    shape.

    Signed-off-by: Clemens Ladisch
    Cc: Daniel Mack
    Acked-by: Pavel Machek
    Cc: David Newall
    Cc: Alan Cox
    Cc: Greg Kroah-Hartman
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Clemens Ladisch
     

13 Dec, 2009

1 commit

  • * 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (75 commits)
    omap3: Fix OMAP35XX_REV macros
    omap: serial: fix non-empty uart fifo read abort
    omap3: Zoom2/3: Update hsmmc board config params
    omap3 : Enable TWL4030 Keypad for Zoom2 and Zoom3 boards
    omap3: id code detection 3525 vs 3515
    omap3: rx51: Use wl1251 in SPI mode 3
    omap3: zoom2/3: make MMC slot work again
    omap1: htcherald: Update defconfig to include mux support
    omap1: LCD_DMA: Use some define rather than a hexadecimal
    omap: header: remove unused data-type
    omap: arch/arm/plat-omap/devices.c - sort alphabetically
    omap: Correcting GPMC_CONFIG1_DEVICETYPE_NAND
    OMAP3: serial - allow platforms specify which UARTs to initialize
    omap3: cm-t35: add mux initialization
    OMAP4: Sync up omap4430 defconfig
    OMAP4: Remove the secondary wait loop
    OMAP4: AuxCoreBoot registers only accessible in secure mode
    OMAP4: Fix SRAM base and size
    OMAP4: Fix cpu detection
    omap3: pandora: board file updates for .33
    ...

    Linus Torvalds
     

12 Dec, 2009

2 commits

  • Initially only for 34xx. This code allows us to:

    - Make the code more generic as the omap internal signal
    names can stay the same across omap generations for some
    devices

    - Map mux registers to GPIO registers that is needed for
    dynamic muxing of pins during off-idle

    - Override bootloader mux values via kernel cmdline using
    omap_mux=some.signa1=0x1234,some.signal2=0x1234

    - View and set the mux registers via debugfs if
    CONFIG_DEBUG_FS is enabled

    Cc: Mike Rapoport
    Cc: Benoit Cousson
    Signed-off-by: Paul Walmsley
    Signed-off-by: Tony Lindgren

    Tony Lindgren
     
  • This patch (as1311) fixes a problem in usb-storage: Some devices are
    pretty broken when it comes to reporting sense data. The information
    they send back indicates that they have more than 18 bytes of sense
    data available, but when the system asks for more than 18 they fail or
    hang. The symptom is that probing fails with multiple resets.

    The patch adds a new BAD_SENSE flag to indicate that usb-storage
    should never ask for more than 18 bytes of sense data. The flag can
    be set in an unusual_devs entry or via the "quirks=" module parameter,
    and it is set automatically whenever a REQUEST SENSE command for more
    than 18 bytes fails or times out.

    An unusual_devs entry is added for the Agfa photo frame, which uses a
    Prolific chip having this bug.

    Signed-off-by: Alan Stern
    Tested-by: Daniel Kukula
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern