26 Oct, 2010

17 commits

  • Removing SCSI devices through
    echo 1 > /sys/bus/scsi/devices/ ... /delete

    while the FC transport class removes the SCSI target can lead to an
    oops:

    Unable to handle kernel pointer dereference at virtual kernel address 00000000b6815000
    Oops: 0011 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in: sunrpc qeth_l3 binfmt_misc dm_multipath scsi_dh dm_mod ipv6 qeth ccwgroup [last unloaded: scsi_wait_scan]
    CPU: 1 Not tainted 2.6.35.5-45.x.20100924-s390xdefault #1
    Process fc_wq_0 (pid: 861, task: 00000000b7331240, ksp: 00000000b735bac0)
    Krnl PSW : 0704200180000000 00000000003ff6e4 (__scsi_remove_device+0x24/0xd0)
    R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3
    Krnl GPRS: 0000000000000001 0000000000000000 00000000b6815000 00000000bc24a8c0
    00000000003ff7c8 000000000056dbb8 0000000000000002 0000000000835d80
    ffffffff00000000 0000000000001000 00000000b6815000 00000000bc24a7f0
    00000000b68151a0 00000000b6815000 00000000b735bc20 00000000b735bbf8
    Krnl Code: 00000000003ff6d6: a7840001 brc 8,3ff6d8
    00000000003ff6da: a7fbffd8 aghi %r15,-40
    00000000003ff6de: e3e0f0980024 stg %r14,152(%r15)
    >00000000003ff6e4: e31021200004 lg %r1,288(%r2)
    00000000003ff6ea: a71f0000 cghi %r1,0
    00000000003ff6ee: a7a40011 brc 10,3ff710
    00000000003ff6f2: a7390003 lghi %r3,3
    00000000003ff6f6: c0e5ffffc8b1 brasl %r14,3f8858
    Call Trace:
    ([] 0x1000)
    [] scsi_remove_device+0x42/0x54
    [] __scsi_remove_target+0xca/0xfc
    [] __remove_child+0x3a/0x48
    [] device_for_each_child+0x72/0xbc
    [] scsi_remove_target+0x4e/0x74
    [] fc_rport_final_delete+0xb2/0x23c
    [] worker_thread+0x200/0x344
    [] kthread+0xa0/0xa8
    [] kernel_thread_starter+0x6/0xc
    [] kernel_thread_starter+0x0/0xc
    INFO: lockdep is turned off.
    Last Breaking-Event-Address:
    [] scsi_remove_device+0x3c/0x54

    The function __scsi_remove_target iterates through the SCSI devices on
    the host, but it drops the host_lock before calling
    scsi_remove_device. When the SCSI device is deleted from another
    thread, the pointer to the SCSI device in scsi_remove_device can
    become invalid. Fix this by getting a reference to the SCSI device
    before dropping the host_lock to keep the SCSI device alive for the
    call to scsi_remove_device.

    Signed-off-by: Christof Schmitt
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • Create a sysfs entry that reports the negotiated DIX/DIF protection mode
    for a SCSI disk. This depends on the protection type the disk is
    formatted with as well as the protection capabilities advertised by the
    controller.

    Signed-off-by: Martin K. Petersen
    Signed-off-by: James Bottomley

    Martin K. Petersen
     
  • Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     
  • grab hardware_lock in eh_abort before accessing srb to avoid
    race between command completion and get refcount on srb.

    Signed-off-by: Mike Christie
    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • Signed-off-by: Vikas Chaudhary
    Signed-off-by: Saurav Kashyap
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     
  • * Cleanup qla4xxx_pci_mmio_enabled():
    don't want to return PCI_ERS_NEED_RESET if firmware hung.
    IDC will take care of it.
    * Request irq after initialize_adapter() in qla82xx_error_recovery().
    * Return all active commands from qla4xxx_pci_error_detected().
    * Cleanup ql4_def.h

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     
  • There is a possibility that the firmware dies while the rom
    lock is held. The only way to recover from this condition is
    to forcefully unlock.

    Signed-off-by: Shyam Sundar
    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Shyam Sundar
     
  • Switching from doorbell mechanism to CRB register based

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Shyam Sundar
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Shyam Sundar
     
  • Signed-off-by: Karen Higgins
    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Karen Higgins
     
  • AEN 8130 Corresponds to an event representing the insertion (detection)
    of a transceiver. It also reports the type of the SFP+.
    AEN 8131 corresponds to the removal of a transceiver.

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Shyam Sundar
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Shyam Sundar
     
  • The seconds_since_last_heartbeat should be checked for consecutive
    heartbeat checks. Currently it could happen that it gets set to
    max (2 seconds) for non-consecutive heartbeat checks.

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Lalit Chandivade
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Lalit Chandivade
     
  • Signed-off-by: Nilesh Javali
    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Nilesh Javali
     
  • Since interrupts are registered in start_firmware(load_risc) for 82xx,
    free them if init_firmware fails.

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Karen Higgins
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     
  • change data type of sense_len from uint8_t to uint16_t

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     
  • remove "ha->retry_reset_ha_cnt" from wait_for_hba_online as its
    initialize to zero at driver init time so it could always return
    QLA_ERROR from wait_for_hba_online() without waiting for hba to
    come online.

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     
  • Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     
  • * cleanup function qla4xxx_recovery_timeout
    - No need to wakeup dpc thread from function
    qla4xxx_recovery_timeout() as we are not doing anything
    in do_dpc() thread when wakeup from
    qla4xxx_recovery_timeout()

    * cleanup function qla4xxx_wait_for_hba_online
    - Remove hard coded value from qla4xxx_wait_for_hba_online().

    * cleanup function qla4xxx_start_firmware_from_flash
    - display seconds

    * cleanup function qla4_8xxx_load_risc
    - Remove redundant code.

    * cleanup function qla4xxx_get_firmware_status
    - update debug statement

    * cleanup function qla4_8xxx_try_start_fw
    - update return status

    Signed-off-by: Vikas Chaudhary
    Signed-off-by: Ravi Anand
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Vikas Chaudhary
     

25 Oct, 2010

23 commits

  • Deleting a SCSI device on a blocked fc_remote_port (before
    fast_io_fail_tmo fires) results in a hanging thread:

    STACK:
    0 schedule+1108 [0x5cac48]
    1 schedule_timeout+528 [0x5cb7fc]
    2 wait_for_common+266 [0x5ca6be]
    3 blk_execute_rq+160 [0x354054]
    4 scsi_execute+324 [0x3b7ef4]
    5 scsi_execute_req+162 [0x3b80ca]
    6 sd_sync_cache+138 [0x3cf662]
    7 sd_shutdown+138 [0x3cf91a]
    8 sd_remove+112 [0x3cfe4c]
    9 __device_release_driver+124 [0x3a08b8]
    10 device_release_driver+60 [0x3a0a5c]
    11 bus_remove_device+266 [0x39fa76]
    12 device_del+340 [0x39d818]
    13 __scsi_remove_device+204 [0x3bcc48]
    14 scsi_remove_device+66 [0x3bcc8e]
    15 sysfs_schedule_callback_work+50 [0x260d66]
    16 worker_thread+622 [0x162326]
    17 kthread+160 [0x1680b0]
    18 kernel_thread_starter+6 [0x10aaea]

    During the delete, the SCSI device is in moved to SDEV_CANCEL. When
    the FC transport class later calls scsi_target_unblock, this has no
    effect, since scsi_internal_device_unblock ignores SCSI devics in this
    state.

    It looks like all these are regressions caused by:
    5c10e63c943b4c67561ddc6bf61e01d4141f881f
    [SCSI] limit state transitions in scsi_internal_device_unblock

    Fix by rejecting offline and cancel in the state transition.

    Signed-off-by: Christof Schmitt
    [jejb: Original patch by Christof Schmitt, modified by Mike Christie]
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Mike Christie
     
  • Use the FCP_RSP_INFO length to correctly skip the FCP_RSP_INFO field.

    Reviewed-by: Swen Schillig
    Signed-off-by: Christof Schmitt
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • zfcp_unit_release calls put_device on the port. Ensure that get_device
    has been called before possibly triggering the release function
    through put_device or device_unregister.

    Reviewed-by: Swen Schillig
    Signed-off-by: Christof Schmitt
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • If an exchange config is executed while the local link is down, the
    request succeeds but the returned data is incomplete. Proceeding with
    the adapter activation is leading to an unpredictable behaviour (e.g.
    kernel panic) caused by invalid values. In such a scenario the
    recommended ERP is to retry the action and wait for a link up event.
    If the issue persists the activation has to fail.

    Signed-off-by: Swen Schillig
    Sigend-off-by: Christof Schmitt
    Signed-off-by: James Bottomley

    Swen Schillig
     
  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    Update broken web addresses in arch directory.
    Update broken web addresses in the kernel.
    Revert "drivers/usb: Remove unnecessary return's from void functions" for musb gadget
    Revert "Fix typo: configuation => configuration" partially
    ida: document IDA_BITMAP_LONGS calculation
    ext2: fix a typo on comment in ext2/inode.c
    drivers/scsi: Remove unnecessary casts of private_data
    drivers/s390: Remove unnecessary casts of private_data
    net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data
    drivers/infiniband: Remove unnecessary casts of private_data
    drivers/gpu/drm: Remove unnecessary casts of private_data
    kernel/pm_qos_params.c: Remove unnecessary casts of private_data
    fs/ecryptfs: Remove unnecessary casts of private_data
    fs/seq_file.c: Remove unnecessary casts of private_data
    arm: uengine.c: remove C99 comments
    arm: scoop.c: remove C99 comments
    Fix typo configue => configure in comments
    Fix typo: configuation => configuration
    Fix typo interrest[ing|ed] => interest[ing|ed]
    Fix various typos of valid in comments
    ...

    Fix up trivial conflicts in:
    drivers/char/ipmi/ipmi_si_intf.c
    drivers/usb/gadget/rndis.c
    net/irda/irnet/irnet_ppp.c

    Linus Torvalds
     
  • * 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/edac: (25 commits)
    i7300_edac: Properly initialize per-csrow memory size
    V4L/DVB: i7300_edac: better initialize page counts
    MAINTAINERS: Add maintainer for i7300-edac driver
    i7300-edac: CodingStyle cleanup
    i7300_edac: Improve comments
    i7300_edac: Cleanup: reorganize the file contents
    i7300_edac: Properly detect channel on CE errors
    i7300_edac: enrich FBD error info for corrected errors
    i7300_edac: enrich FBD error info for fatal errors
    i7300_edac: pre-allocate a buffer used to prepare err messages
    i7300_edac: Fix MTR x4/x8 detection logic
    i7300_edac: Make the debug messages coherent with the others
    i7300_edac: Cleanup: remove get_error_info logic
    i7300_edac: Add a code to cleanup error registers
    i7300_edac: Add support for reporting FBD errors
    i7300_edac: Properly detect the type of error correction
    i7300_edac: Detect if the device is on single mode
    i7300_edac: Adds detection for enhanced scrub mode on x8
    i7300_edac: Clear the error bit after reading
    i7300_edac: Add error detection code for global errors
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6: (27 commits)
    SLUB: Fix memory hotplug with !NUMA
    slub: Move functions to reduce #ifdefs
    slub: Enable sysfs support for !CONFIG_SLUB_DEBUG
    SLUB: Optimize slab_free() debug check
    slub: Move NUMA-related functions under CONFIG_NUMA
    slub: Add lock release annotation
    slub: Fix signedness warnings
    slub: extract common code to remove objects from partial list without locking
    SLUB: Pass active and inactive redzone flags instead of boolean to debug functions
    slub: reduce differences between SMP and NUMA
    Revert "Slub: UP bandaid"
    percpu: clear memory allocated with the km allocator
    percpu: use percpu allocator on UP too
    percpu: reduce PCPU_MIN_UNIT_SIZE to 32k
    vmalloc: pcpu_get/free_vm_areas() aren't needed on UP
    SLUB: Fix merged slab cache names
    Slub: UP bandaid
    slub: fix SLUB_RESILIENCY_TEST for dynamic kmalloc caches
    slub: Fix up missing kmalloc_cache -> kmem_cache_node case for memoryhotplug
    slub: Add dummy functions for the !SLUB_DEBUG case
    ...

    Linus Torvalds
     
  • * 'kvm-updates/2.6.37' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (321 commits)
    KVM: Drop CONFIG_DMAR dependency around kvm_iommu_map_pages
    KVM: Fix signature of kvm_iommu_map_pages stub
    KVM: MCE: Send SRAR SIGBUS directly
    KVM: MCE: Add MCG_SER_P into KVM_MCE_CAP_SUPPORTED
    KVM: fix typo in copyright notice
    KVM: Disable interrupts around get_kernel_ns()
    KVM: MMU: Avoid sign extension in mmu_alloc_direct_roots() pae root address
    KVM: MMU: move access code parsing to FNAME(walk_addr) function
    KVM: MMU: audit: check whether have unsync sps after root sync
    KVM: MMU: audit: introduce audit_printk to cleanup audit code
    KVM: MMU: audit: unregister audit tracepoints before module unloaded
    KVM: MMU: audit: fix vcpu's spte walking
    KVM: MMU: set access bit for direct mapping
    KVM: MMU: cleanup for error mask set while walk guest page table
    KVM: MMU: update 'root_hpa' out of loop in PAE shadow path
    KVM: x86 emulator: Eliminate compilation warning in x86_decode_insn()
    KVM: x86: Fix constant type in kvm_get_time_scale
    KVM: VMX: Add AX to list of registers clobbered by guest switch
    KVM guest: Move a printk that's using the clock before it's ready
    KVM: x86: TSC catchup mode
    ...

    Linus Torvalds
     
  • * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    i2c-viapro: Don't log nacks
    i2c/pca954x: Remove __devinit and __devexit from probe and remove functions
    MAINTAINERS: Add maintainer for PCA9541 I2C bus master selector driver
    i2c/mux: Driver for PCA9541 I2C Master Selector
    i2c: Optimize function i2c_detect()
    i2c: Discard warning message on device instantiation from user-space
    i2c-amd8111: Add proper error handling
    i2c: Change to new flag variable
    i2c: Remove unneeded inclusions of
    i2c: Let i2c_parent_is_i2c_adapter return the parent adapter
    i2c: Simplify i2c_parent_is_i2c_adapter
    i2c-pca-platform: Change device name of request_irq
    i2c: Fix Kconfig dependencies

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (47 commits)
    HID: fix mismerge in hid-lg
    HID: hidraw: fix window in hidraw_release
    HID: hid-sony: override usbhid_output_raw_report for Sixaxis
    HID: add absolute axis resolution calculation
    HID: force feedback support for Logitech RumblePad gamepad
    HID: support STmicroelectronics and Sitronix with hid-stantuml driver
    HID: magicmouse: Adjust major / minor axes to scale
    HID: Fix for problems with eGalax/DWAV multi-touch-screen
    HID: waltop: add support for Waltop Slim Tablet 12.1 inch
    HID: add NOGET quirk for AXIS 295 Video Surveillance Joystick
    HID: usbhid: remove unused hiddev_driver
    HID: magicmouse: Use hid-input parsing rather than bypassing it
    HID: trivial formatting fix
    HID: Add support for Logitech Speed Force Wireless gaming wheel
    HID: don't Send Feature Reports on Interrupt Endpoint
    HID: 3m: Adjust major / minor axes to scale
    HID: 3m: Correct touchscreen emulation
    HID: 3m: Convert to MT slots
    HID: 3m: Output proper orientation range
    HID: 3m: Adjust to sequential MT HID protocol
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: Makefile - replace the use of -objs with -y
    crypto: hifn_795x - use cancel_delayed_work_sync()
    crypto: talitos - sparse check endian fixes
    crypto: talitos - fix checkpatch warning
    crypto: talitos - fix warning: 'alg' may be used uninitialized in this function
    crypto: cryptd - Adding the AEAD interface type support to cryptd
    crypto: n2_crypto - Niagara2 driver needs to depend upon CRYPTO_DES
    crypto: Kconfig - update broken web addresses
    crypto: omap-sham - Adjust DMA parameters
    crypto: fips - FIPS requires algorithm self-tests
    crypto: omap-aes - OMAP2/3 AES hw accelerator driver
    crypto: updates to enable omap aes
    padata: add missing __percpu markup in include/linux/padata.h
    MAINTAINERS: Add maintainer entries for padata/pcrypt

    Linus Torvalds
     
  • Conflicts:
    include/linux/percpu.h
    mm/percpu.c

    Pekka Enberg
     
  • Transactions not acked can happen every now and then, in particular
    during device detection, and various transaction types can be used for
    this purpose. So stop logging this event, except when debugging is
    enabled. This is what other similar drivers (e.g. i2c-i801 or
    i2c-piix4) do.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • The underlying I2C adapter may or may not be present when this driver
    gets initialized, and may disappear later, so there is no safe time at
    which the probe and remove functions can be discarded.

    Signed-off-by: Guenter Roeck
    Signed-off-by: Jean Delvare

    Guenter Roeck
     
  • Signed-off-by: Guenter Roeck
    Signed-off-by: Jean Delvare

    Guenter Roeck
     
  • This patch adds support for PCA9541, an I2C Bus Master Selector.
    The driver is modeled as single channel I2C Multiplexer to be able to utilize
    the I2C multiplexer framework.

    Signed-off-by: Guenter Roeck
    Reviewed-by: Tom Grennan
    Acked-by: Jean Delvare

    Guenter Roeck
     
  • Check the class flags before allocating the temporary i2c_client
    structure, to avoid allocating it when we don't need it.

    Also optimize the inner loop a bit.

    Signed-off-by: Jean Delvare
    Cc: Jacob Pan

    Jean Delvare
     
  • The "new_device" sysfs interface has been there for quite some time
    now, nobody complained about it so it must be good enough. Time to
    remove the warning and call it stable.

    Signed-off-by: Jean Delvare
    Acked-by: Michael Lawnick

    Jean Delvare
     
  • The functions the functions amd_ec_wait_write and amd_ec_wait_read have an
    unsigned return type, but return a negative constant to indicate an error
    condition.

    A sematic match that finds this problem is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @exists@
    identifier f;
    constant C;
    @@

    unsigned f(...)
    { }
    //

    Fixing amd_ec_wait_write and amd_ec_wait_read leads to the need to adjust
    the return type of the functions amd_ec_write and amd_ec_read, which are
    the only functions that call amd_ec_wait_write and amd_ec_wait_read.
    amd_ec_write and amd_ec_read, in turn, are only called from within the
    function amd8111_access, which already returns a signed typed value. Each
    of the calls to amd_ec_write and amd_ec_read are updated using the
    following semantic patch:

    //
    @@
    @@

    + status = amd_ec_write
    - amd_ec_write
    (...);
    + if (status) return status;

    @@
    @@

    + status = amd_ec_read
    - amd_ec_read
    (...);
    + if (status) return status;
    //

    The patch also adds the declaration of the status variable.

    Signed-off-by: Julia Lawall
    Signed-off-by: Jean Delvare

    Julia Lawall
     
  • Replace EXTRA_CFLAGS with ccflags-y.

    Signed-off-by: matt mooney
    Signed-off-by: Jean Delvare

    matt mooney
     
  • These drivers don't use anything which is defined in .
    This header file was never meant to be included directly anyway, and
    will be deleted soon.

    Signed-off-by: Jean Delvare
    Acked-by: Ben Dooks
    Acked-by: Dave Airlie
    Cc: Hans Verkuil

    Jean Delvare
     
  • This makes the calling site's code clearer IMHO.

    Signed-off-by: Jean Delvare
    Acked-by: Michael Lawnick

    Jean Delvare
     
  • Only i2c devices can have their type set to i2c_adapter_type, so
    testing the bus type is redundant.

    Signed-off-by: Jean Delvare
    Cc: Michael Lawnick

    Jean Delvare