11 Dec, 2009

8 commits


10 Dec, 2009

32 commits

  • This patch fix for sata IO circular lock dependency. When we call task_done
    for SATA IO, we have got pm8001_ha->lock ,and in sas_ata_task_done, it will
    get (dev->sata_dev.ap->lock. then cause circular lock dependency .So we
    should drop pm8001_ha->lock when we call task_done for SATA task.

    Signed-off-by: Jack Wang
    Signed-off-by: Lindar Liu
    Signed-off-by: James Bottomley

    jack wang
     
  • This driver supports a subset of HP Smart Array Controllers.
    It is a SCSI alternative to the cciss driver.

    [akpm@linux-foundation.org: avoid helpful cleanup patches]
    [achiang@hp.com: make device attrs static]
    [akpm@linux-foundation.org: msleep() does set_current_state() itself]
    Signed-off-by: Stephen M. Cameron
    Signed-off-by: Mike Miller
    Signed-off-by: Alex Chiang
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     
  • Signed-off-by: Karen Xie
    Signed-off-by: James Bottomley

    kxie@chelsio.com
     
  • Removed duplicate function call and not-so-useful comment line

    Signed-off-by: Anil Veerabhadrappa
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Anil Veerabhadrappa
     
  • Due to typo error driver was failing TMF Abort Task request when
    ctask->sc != NULL. Fixed code to fail TMF ABORT Task request only when
    ctask->sc == NULL. Clear age component (19 most significant bits) of
    reference ITT carried in iSCSI TMF PDU. Age component is internal to
    initiator side and only lower bits of ITT as defined by ISCSI_ITT_MASK
    is is sent on wire. Retrieve LUN directly from the ref_sc and update
    SQ wqe as per chip HSI (Host Software Interface) specification

    Signed-off-by: Anil Veerabhadrappa
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Anil Veerabhadrappa
     
  • Only affects 5771x (10G chipsets) devices

    This is an optimized CQ arming algoritm which takes into account the
    number of outstanding tasks

    Signed-off-by: Anil Veerabhadrappa
    Signed-off-by: James Bottomley

    Anil Veerabhadrappa
     
  • This issue was discovered during 10G iscsi testing

    Default value of 'sq_size' module parameter is '0' which means driver
    should use predefined SQ queue size when setting up iscsi connection.

    roundup_pow_of_two(0) results in '1' and forces driver to setup
    connections with send queue size of '1' and results in lower
    performance as well

    Signed-off-by: Anil Veerabhadrappa
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Anil Veerabhadrappa
     
  • Signed-off-by: Anil Veerabhadrappa
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Anil Veerabhadrappa
     
  • After commits c82f63e411f1b58427c103bd95af2863b1c96dd1 (PCI: check saved
    state before restore) and 4b77b0a2ba27d64f58f16d8d4d48d8319dda36ff (PCI:
    Clear saved_state after the state has been restored) PCI drivers are
    prevented from restoring the device standard configuration registers
    twice in a row. These changes introduced a regression on ipr EEH
    recovery.

    The ipr device driver saves the PCI state only during the device probe
    and restores it on ipr_reset_restore_cfg_space() during IOA resets. This
    behavior is causing the EEH recovery to fail after the second error
    detected, since the registers are not being restored.

    One possible solution would be saving the registers after restoring
    them. The problem with this approach is that while recovering from an
    EEH error if pci_save_state() results in an EEH error, the adapter/slot
    will be reset, and end up back in ipr_reset_restore_cfg_space(), but it
    won't have a valid saved state to restore, so pci_restore_state() will
    fail.

    The following patch introduces a workaround for this problem, hacking
    around the PCI API by setting pdev->state_saved = true before we do the
    restore. It fixes the EEH regression and prevents that we hit another
    EEH error during EEH recovery.

    [jejb: fix is a hack ... Jesse and Rafael will fix properly]
    Signed-off-by: Kleber Sacilotto de Souza
    Acked-by: Brian King
    Cc: Jesse Barnes
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Kleber Sacilotto de Souza
     
  • If the LLD wants its own WWNN/WWPN to be used, it should implement the
    netdev_ops.ndo_fcoe_get_wwn(). If that is the case, we query the LLD and use
    the queried WWNN/WWPN from the LLD.

    Signed-off-by: Yi Zou
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • Powerpc 44x uses 36 bit real address while the real address defined in
    MPT Fusion driver is of type 32 bit. This causes ioremap to fail and
    driver fails to initialize. This fix changes the data types
    representing the real address from unsigned long 32-bit types to
    resource_size_t which is 64-bit. The driver has been tested, the disks
    get discovered correctly and can do IO.

    [jejb: added printk fix for resource_size_t object]
    Signed-off-by: Pravin Bathija
    Acked-by: "Desai, Kashyap"
    Signed-off-by: James Bottomley

    Pravin Bathija
     
  • Signed-off-by: Giridhar Malavali
    Signed-off-by: James Bottomley

    Giridhar Malavali
     
  • Fix to accommodate a hardware bug in multiqueue mode that does not
    work properly when acknowledgement of MSIX Interrupts is disabled.

    Signed-off-by: Anirban Chakraborty
    Signed-off-by: Giridhar Malavali
    Signed-off-by: James Bottomley

    Anirban Chakraborty
     
  • Removed the module parameters ql2xqfulltracking and ql2xqfullrampup
    since the queue depth ramp up/down functionality is moved to scsi-ml.

    Signed-off-by: Giridhar Malavali
    Signed-off-by: James Bottomley

    Giridhar Malavali
     
  • Fix crash in qla2x00_fdmi_register() due to the dpc
    thread executing before the scsi host has been fully
    added.

    Unable to handle kernel NULL pointer dereference (address 00000000000001d0)
    qla2xxx_7_dpc[4140]: Oops 8813272891392 [1]

    Call Trace:
    [] show_stack+0x50/0xa0
    sp=e00000b07c59f930 bsp=e00000b07c591400
    [] show_regs+0x820/0x860
    sp=e00000b07c59fb00 bsp=e00000b07c5913a0
    [] die+0x1a0/0x2e0
    sp=e00000b07c59fb00 bsp=e00000b07c591360
    [] ia64_do_page_fault+0x8c0/0x9e0
    sp=e00000b07c59fb00 bsp=e00000b07c591310
    [] ia64_native_leave_kernel+0x0/0x270
    sp=e00000b07c59fb90 bsp=e00000b07c591310
    [] qla2x00_fdmi_register+0x850/0xbe0 [qla2xxx]
    sp=e00000b07c59fd60 bsp=e00000b07c591290
    [] qla2x00_configure_loop+0x1930/0x34c0 [qla2xxx]
    sp=e00000b07c59fd60 bsp=e00000b07c591128
    [] qla2x00_loop_resync+0x1b0/0x2e0 [qla2xxx]
    sp=e00000b07c59fdf0 bsp=e00000b07c5910c0
    [] qla2x00_do_dpc+0x9a0/0xce0 [qla2xxx]
    sp=e00000b07c59fdf0 bsp=e00000b07c590fa0
    [] kthread+0x110/0x140
    sp=e00000b07c59fe00 bsp=e00000b07c590f68
    [] kernel_thread_helper+0xd0/0x100
    sp=e00000b07c59fe30 bsp=e00000b07c590f40
    [] start_kernel_thread+0x20/0x40
    sp=e00000b07c59fe30 bsp=e00000b07c590f40

    crash> dis a000000207197350
    0xa000000207197350 : [MMI] ld1 r45=[r14];;
    crash> scsi_qla_host.host 0xe00000b058c73ff8
    host = 0xe00000b058c73be0,
    crash> Scsi_Host.shost_data 0xe00000b058c73be0
    shost_data = 0x0, <<<<<<<<<<<

    The fc_transport fc_* workqueue threads have yet to be created.

    crash> ps | grep _7
    3891 2 2 e00000b075c80000 IN 0.0 0 0 [scsi_eh_7]
    4140 2 3 e00000b07c590000 RU 0.0 0 0 [qla2xxx_7_dpc]

    The thread creating adding the Scsi_Host is blocked due to other
    activity in sysfs.

    crash> bt 3762
    PID: 3762 TASK: e00000b071e70000 CPU: 3 COMMAND: "modprobe"
    #0 [BSP:e00000b071e71548] schedule at a000000100727e00
    #1 [BSP:e00000b071e714c8] __mutex_lock_slowpath at a0000001007295a0
    #2 [BSP:e00000b071e714a8] mutex_lock at a000000100729830
    #3 [BSP:e00000b071e71478] sysfs_addrm_start at a0000001002584f0
    #4 [BSP:e00000b071e71440] create_dir at a000000100259350
    #5 [BSP:e00000b071e71410] sysfs_create_subdir at a000000100259510
    #6 [BSP:e00000b071e713b0] internal_create_group at a00000010025c880
    #7 [BSP:e00000b071e71388] sysfs_create_group at a00000010025cc50
    #8 [BSP:e00000b071e71368] dpm_sysfs_add at a000000100425050
    #9 [BSP:e00000b071e71310] device_add at a000000100417d90
    #10 [BSP:e00000b071e712d8] scsi_add_host at a00000010045a380
    #11 [BSP:e00000b071e71268] qla2x00_probe_one at a0000002071be950
    #12 [BSP:e00000b071e71248] local_pci_probe at a00000010032e490
    #13 [BSP:e00000b071e71218] pci_device_probe at a00000010032ecd0
    #14 [BSP:e00000b071e711d8] driver_probe_device at a00000010041d480
    #15 [BSP:e00000b071e711a8] __driver_attach at a00000010041d6e0
    #16 [BSP:e00000b071e71170] bus_for_each_dev at a00000010041c240
    #17 [BSP:e00000b071e71150] driver_attach at a00000010041d0a0
    #18 [BSP:e00000b071e71108] bus_add_driver at a00000010041b080
    #19 [BSP:e00000b071e710c0] driver_register at a00000010041dea0
    #20 [BSP:e00000b071e71088] __pci_register_driver at a00000010032f610
    #21 [BSP:e00000b071e71058] (unknown) at a000000207200270
    #22 [BSP:e00000b071e71018] do_one_initcall at a00000010000a9c0
    #23 [BSP:e00000b071e70f98] sys_init_module at a0000001000fef00
    #24 [BSP:e00000b071e70f98] ia64_ret_from_syscall at a00000010000c740

    So, it appears that qla2xxx dpc thread is moving forward before the
    scsi host has been completely added.

    This patch moves the setting of the init_done (and online) flag to
    after the call to scsi_add_host() to hold off the dpc thread.

    Found via large lun count testing using 2.6.31.

    Signed-off-by: Michael Reed
    Acked-by: Giridhar Malavali
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Michael Reed
     
  • So libosd has decided to sacrifice some code simplicity for the sake of
    a clean API. One of these things is the possibility for users to call
    osd_end_request, in any condition at any state. This opens up some
    problems with calling blk_put_request when out-side of the completion
    callback but calling __blk_put_request when detecting a from-completion
    state.

    The current hack was working just fine until exofs decided to operate on
    all devices in parallel and wait for the sum of the requests, before
    deallocating all osd-requests at once. There are two new possible cases
    1. All request in a group are deallocated as part of the last request's
    async-done, request_queue is locked.
    2. All request in a group where executed asynchronously, but
    de-allocation was delayed to after the async-done, in the context of
    another thread. Async execution but request_queue is not locked.

    The solution I chose was to separate the deallocation of the osd_request
    which has the information users need, from the deallocation of the
    internal(2) requests which impose the locking problem. The internal
    block-requests are freed unconditionally inside the async-done-callback,
    when we know the queue is always locked. If at osd_end_request time we
    still have a bock-request, then we know it did not come from within an
    async-done-callback and we can call the regular blk_put_request.

    The internal requests were used for carrying error information after
    execution. This information is now copied to osd_request members for
    later analysis by user code.

    The external API and behaviour was unchanged, except now it really
    supports what was previously advertised.

    Reported-by: Vineet Agarwal
    Signed-off-by: Boaz Harrosh
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Boaz Harrosh
     
  • On the large servers, I/O port resource may not be assigned to all
    the PCI devices since it is limited (to 64KB on Intel Architecture[1])
    and it may also be fragmented (I/O base register of PCI-to-PCI bridge
    will usually be aligned to a 4KB boundary[2]).
    If no I/O port resource is assigned to devices, those devices do not
    work.

    [1] Some machines support 64KB I/O port space per PCI segment.
    [2] Some P2P bridges support optional 1KB aligned I/O base.

    Therefore, I made a patch for MegaRAID SAS driver to make PCI legacy
    I/O port free. I have also tested the patch and it had no problem.

    The way to make PCI legacy I/O port free is the same as Fusion-MPT
    driver's and it has been merged into 2.6.30.4.

    This has already been fixed in e1000 and lpfc.

    As a result of the above, the driver can handle its device even when
    there are a huge number of PCI devices being used on the system and no
    I/O port region assigned to the device.

    Signed-off-by: Noriyuki Fujii
    Acked-by: "Yang, Bo"
    Signed-off-by: James Bottomley

    Noriyuki Fujii
     
  • A thin provisioned device may temporarily be out of sufficient
    allocation units to fulfill a write request. In that case it will
    return a space allocation in progress error. Wait a bit and retry the
    write.

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

    Martin K. Petersen
     
  • Implement a function for handling discard requests that sends either
    WRITE SAME(16) or UNMAP(10) depending on parameters indicated by the
    device in the block limits VPD.

    Extract unmap constraints and report them to the block layer.

    Based in part by a patch by Christoph Hellwig .

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

    Martin K. Petersen
     
  • Based on patch originally by Jeff Mahoney

    enclosure_status is expected to be a NULL terminated array of strings
    but isn't actually NULL terminated. When writing an invalid value to
    /sys/class/enclosure/.../.../status, it goes off the end of the array
    and Oopses.

    Fix by making the assumption true and adding NULL at the end.

    Reported-by: Artur Wojcik
    Signed-off-by: James Bottomley

    James Bottomley
     
  • dio transfer always resets mdata->page_order to zero. It breaks
    high-order pages previously allocated for non-dio transfer.

    This patches adds reserved_page_order to st_buffer structure to save
    page order for non-dio transfer.

    http://bugzilla.kernel.org/show_bug.cgi?id=14563

    When enlarge_buffer() allocates 524288 from 0, st uses six-order page
    allocation. So mdata->page_order is 6 and frp_seg is 2.

    After that, if st uses dio, sgl_map_user_pages() sets
    mdata->page_order to 0 for st_do_scsi(). After that, when we call
    normalize_buffer(), it frees only free frp_seg * PAGE_SIZE (2 * 4096)
    though we should free frp_seg * PAGE_SIZE << 6 (2 * 4096 << 6). So we
    see buffer_size is set to 516096 (524288 - 8192).

    Reported-by: Joachim Breuer
    Tested-by: Joachim Breuer
    Acked-by: Kai Makisara
    Signed-off-by: FUJITA Tomonori
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     
  • This patch allows for future addition of various async messages
    from the chip. This ensures that the driver won't hit a BUG_ON if
    the Firmware used is newer than inbox driver and so is using
    latest async messages.

    Signed-off-by: Jayamohan Kallickal
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Jayamohan Kallickal
     
  • This is support for Adaptec ASC-1045/1405 SAS/SATA HBA on mvsas, which
    is based on Marvell 88SE6440 chipset.

    Signed-off-by: Srinivas
    Cc: Andy Yan
    Signed-off-by: James Bottomley

    Srinivas
     
  • PMC-Sierra mgmt application uses SMI-S model. According to SMI-S, the
    object model exposed by the SMI-S provider should show an StoragePool
    which contains member disks of a RAID Virtual disk and StorageVolume
    based on the StoragePool. But according to SMI-S, there is a possibility
    where StoragePool is created but StorageVolume is not yet created. To
    satisfy this scenario, we are trying a hidden RAID Virtual disk. The
    hidden RAID virtual disk will not be exposed to OS. Once a StorageVolume
    is created for this RAID virtual disk it is exposed.

    Signed-off-by: Anil Ravindranath
    Signed-off-by: James Bottomley

    Anil Ravindranath
     
  • If transport_class_register fails we should unregister any
    registered classes, or we will leak memory or other
    resources.

    I did a quick modprobe of scsi_transport_fc to test the
    patch.

    Signed-off-by: Mike Christie
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Mike Christie
     
  • Internal command scsih_cmds init is included in mpt2sas_base_attach.

    Signed-off-by: Kashyap Desai
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • This patch adds two new IBM storage devices which can use rdac device handlers.

    Signed-off-by: Babu Moger
    Signed-off-by: James Bottomley

    Moger, Babu
     
  • In testing 2.6.31 on one of our ia64 platforms I've encountered a hang
    due to the driver using hardware ATEs which are a limited resource.
    This is because the driver does not set the dma consistent mask to
    64 bits.

    Signed-off-by: Michael Reed
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Michael Reed
     
  • * 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
    ACPICA: Update version to 20091112.
    ACPICA: Add additional module-level code support
    ACPICA: Deploy new create integer interface where appropriate
    ACPICA: New internal utility function to create Integer objects
    ACPICA: Add repair for predefined methods that must return sorted lists
    ACPICA: Fix possible fault if return Package objects contain NULL elements
    ACPICA: Add post-order callback to acpi_walk_namespace
    ACPICA: Change package length error message to an info message
    ACPICA: Reduce severity of predefined repair messages, Warning to Info
    ACPICA: Update version to 20091013
    ACPICA: Fix possible memory leak for Scope ASL operator
    ACPICA: Remove possibility of executing _REG methods twice
    ACPICA: Add repair for bad _MAT buffers
    ACPICA: Add repair for bad _BIF/_BIX packages

    Linus Torvalds
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: (41 commits)
    hwmon: (adt7475) Add VID support for the ADT7476
    hwmon: (adt7475) Add an entry in MAINTAINERS
    hwmon: (adt7475) Add support for the ADT7476
    hwmon: (adt7475) Voltage attenuators can be bypassed
    hwmon: (adt7475) Print device information on probe
    hwmon: (adt7475) Handle alternative pin functions
    hwmon: (adt7475) Move sysfs files removal to a separate function
    hwmon: (adt7475) Add support for the ADT7490
    hwmon: (adt7475) Improve device detection
    hwmon: (adt7475) Add missing static marker
    hwmon: (adt7475) Rework voltage inputs handling
    hwmon: (adt7475) Implement pwm_use_point2_pwm_at_crit
    hwmon: (adt7475) New documentation
    hwmon: (adt7475) Add support for the ADT7473
    hwmon: (f71882fg) Add support for the f71889fg (version 2)
    hwmon: (f71882fg) Fix sysfs file removal
    hwmon: (f71882fg) Cleanup sysfs attr creation 2/2
    hwmon: (f71882fg) Cleanup sysfs attr creation 1/2
    hwmon: (thmc50) Stop using I2C_CLIENT_MODULE_PARM
    hwmon: Add Freescale MC13783 ADC driver
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: ice1724 - aureon - modify WM8770 Master & DAC volume
    ALSA: hda/realtek: quirk for D945GCLF2 mainboard
    ALSA: hda - Terradici HDA controllers does not support 64-bit mode
    ALSA: document: Add direct git link to grub hda-analyzer
    ALSA: radio/sound/miro: fix build, cleanup depends/selects
    ALSA: hda - Generalize EAPD inversion check in patch_analog.c
    ASoC: Wrong variable returned on error
    ALSA: snd-usb-us122l: add product IDs of US-122MKII and US-144MKII
    ALSA: hda - Exclude unusable ADCs for ALC88x
    ALSA: hda - Add missing Line-Out and PCM switches as slave
    ALSA: hda - iMac 9,1 sound patch.
    ALSA: opti93x: set MC indirect registers base from PnP data

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (51 commits)
    Input: appletouch - give up maintainership
    Input: dm355evm_kbd - switch to using sparse keymap library
    Input: wistron_btns - switch to using sparse keymap library
    Input: add generic support for sparse keymaps
    Input: fix memory leak in force feedback core
    Input: wistron - remove identification strings from DMI table
    Input: psmouse - remove identification strings from DMI tables
    Input: atkbd - remove identification strings from DMI table
    Input: i8042 - remove identification strings from DMI tables
    DMI: allow omitting ident strings in DMI tables
    Input: psmouse - do not carry DMI data around
    Input: matrix-keypad - switch to using dev_pm_ops
    Input: keyboard - fix lack of locking when traversing handler->h_list
    Input: gpio_keys - scan gpio state at probe and resume time
    Input: keyboard - add locking around event handling
    Input: usbtouchscreen - add support for ET&T TC5UH touchscreen controller
    Input: xpad - add two new Xbox 360 devices
    Input: polled device - do not start polling if interval is zero
    Input: polled device - schedule first poll immediately
    Input: add S3C24XX touchscreen driver
    ...

    Linus Torvalds