22 Jun, 2006

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (85 commits)
    [SCSI] 53c700: remove reliance on deprecated cmnd fields
    [SCSI] hptiop: don't use cmnd->bufflen
    [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver
    [SCSI] aacraid: small misc. cleanups
    [SCSI] aacraid: Update supported product information
    [SCSI] aacraid: Fix return code interpretation
    [SCSI] scsi_transport_sas: fix panic in sas_free_rphy
    [SCSI] remove RQ_SCSI_* flags
    [SCSI] remove scsi_request infrastructure
    [SCSI] mptfusion: change driver revision to 3.03.10
    [SCSI] mptfc: abort of board reset leaves port dead requiring reboot
    [SCSI] mptfc: fix fibre channel infinite request/response loop
    [SCSI] mptfc: set fibre channel fw target missing timers to one second
    [SCSI] mptfusion: move fc event/reset handling to mptfc
    [SCSI] spi transport: don't allow dt to be set on SE or HVD buses
    [SCSI] aic7xxx: expose the bus setting to sysfs
    [SCSI] scsi: remove Documentation/scsi/cpqfc.txt
    [SCSI] drivers/scsi: Use ARRAY_SIZE macro
    [SCSI] Remove last page_address from dc395x.c
    [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver
    ...

    Fixed up conflicts in drivers/message/fusion/mptbase.c manually (due to
    the sparc interrupt cleanups)

    Linus Torvalds
     

20 Jun, 2006

1 commit

  • This ugly hack was long overdue to die.

    It was a way to print out Sparc interrupts in a more freindly format,
    since IRQ numbers were arbitrary opaque 32-bit integers which vectored
    into PIL levels. These 32-bit integers were not necessarily in the
    0-->NR_IRQS range, but the PILs they vectored to were.

    The idea now is that we will increase NR_IRQS a little bit and use a
    virtualreal IRQ number mapping scheme similar to PowerPC.

    That makes this IRQ printing hack irrelevant, and furthermore only a
    handful of drivers actually used __irq_itoa() making it even less
    useful.

    Signed-off-by: David S. Miller

    David S. Miller
     

11 Jun, 2006

9 commits

  • With Achim patch the last user (gdth) is switched away from scsi_request
    so we an kill it now. Also disables some code in i2o_scsi that was
    broken since the sg driver stopped using scsi_requests.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: James Bottomley

    Christoph Hellwig
     
  • Bump driver version number to reflect addition of various
    fibre channel patches.

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

    Michael Reed
     
  • The driver uses msleep_interruptible() in the code path responsible
    for resetting the card's ports via the lsiutil command. If a
    is received during the reset it can leave a port in such
    a state that the only way to regain its use is to reboot the system.
    Changing from msleep_interruptible() to msleep() corrects the problem.

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

    Michael Reed
     
  • While doing board reset testing I was able to put the system in
    an infinite request/response loop between the scsi layer and
    mptscsih_qcmd() by aborting the reset. This patch installs
    a "SETUP RESET" handler which calls fc_remote_port_delete()
    for all registered rports. This blocks the target which
    prevents the loop. Additionally, should the reset fail to
    complete, the transport will now terminate i/o to the target.

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

    Michael Reed
     
  • The fibre channel firmware provides a timer which is similar in purpose
    to the fibre channel transport's device loss timer. The effect of this
    timer is to extend the total time that a target will be missing beyond
    the value associated with the transport's timer. This patch changes
    the firmware timer to a default of one second which significantly reduces
    the lag between when a target goes missing and the notification of the
    fibre channel transport.

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

    Michael Reed
     
  • Move fibre channel event and reset handling to mptfc. This will
    result in fewer changes over time that need to be applied to
    either mptbase.c or mptscsih.c.

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

    Michael Reed
     
  • James Bottomley
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
    [SPARC64]: Avoid JBUS errors on some Niagara systems.
    [FUSION]: Fix mptspi.c build with CONFIG_PM not set.
    [TG3]: Handle Sun onboard tg3 chips more correctly.
    [SPARC64]: Dump local cpu registers in sun4v_log_error()

    Linus Torvalds
     
  • From: Markus Lidel

    - Fixed locking of struct i2o_exec_wait in Executive-OSM

    - Removed LCT Notify in i2o_exec_probe() which caused freeing memory and
    accessing freed memory during first enumeration of I2O devices

    - Added missing locking in i2o_exec_lct_notify()

    - removed put_device() of I2O controller in i2o_iop_remove() which caused
    the controller structure get freed to early

    - Fixed size of mempool in i2o_iop_alloc()

    - Fixed access to freed memory in i2o_msg_get()

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

    Signed-off-by: Markus Lidel
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Markus Lidel
     

10 Jun, 2006

1 commit


31 May, 2006

1 commit

  • MPT fusion driver initialization fails while second kernel is booting,
    after a system crash (if kdump kernel is configured). Oops message is
    pasted below.

    *****************************************************************************
    Fusion MPT base driver 3.03.08
    Copyright (c) 1999-2005 LSI Logic Corporation
    Fusion MPT SAS Host driver 3.03.08 ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKA] -> GSI 5 (level, low) -> IRQ 5
    mptbase: Initiating ioc0 bringup
    BUG: unable to handle kernel paging request at virtual address 00002608
    printing eip:
    c11782fd
    *pde = 00000000
    Oops: 0000 [#1]
    Modules linked in:
    CPU: 0
    EIP: 0060:[] Not tainted VLI
    EFLAGS: 00010046 (2.6.17-rc1-16M #2)
    EIP is at mptscsih_io_done+0x27/0x3a3
    eax: c4fed000 ebx: c4fed000 ecx: 00002600 edx: 00000298
    esi: c11782d6 edi: 00002600 ebp: 00000000 esp: c1332f74
    ds: 007b es: 007b ss: 0068
    Process swapper (pid: 0, threadinfo=c1332000 task=c128f9c0) Stack: 0000006c 00000020 00000298 00002600 c4fed000 c4fed000 c11782d6 0000260 0
    00000000 c1172c49 c4fed000 c1305b40 00000005 00000000 c1172d75 c48877e0
    c1029687 00000000 c1307fb8 00000000 c1305a00 00000001 00000000 c1307fb8
    Call Trace:
    mptscsih_io_done+0x0/0x3a3 mpt_turbo_reply+0xbb/0xd3
    mpt_interrupt+0x22/0x2b misrouted_irq+0x63/0xcb
    note_interrupt+0x43/0x98 __do_IRQ+0x68/0x8f
    do_IRQ+0x36/0x4e
    =======================
    common_interrupt+0x1a/0x20 mwait_idle+0x1a/0x2a
    cpu_idle+0x40/0x5c start_kernel+0x17a/0x17c Code: 5e 5f 5d c3 55 89 cd 57 56 53 83 ec 14 89 54 24 0c 89 44 24 10 8b 90 cc 00 00 00 8b 4c 24 0c 81 c2 98 02 00 00 85 ed 89 54 24 08 b7 79 08 89 fe 74 04 0f b7 75 08 66 39 f7 75 0d 8b 44 24 0c
    *******************************************************************************

    o Kdump capture kernel boot fails during initialization of MPT fusion driver.
    (LSI Logic / Symbios Logic SAS1064E PCI-Express Fusion-MPT SAS (rev 01))

    o Problem is easily reproducible, if system crashed while some disk activity
    like cp operation was going on.

    o After a system crash, devices are not shutdown and capture kernel starts
    booting while skipping BIOS. Hence underlying device is left in operational
    state. In this case scsi contoller was left with interrupt line asserted
    reply FIFO was not empty. When driver starts initializing in the second
    kernel, it receives the interrupt the moment request_irq() is called.
    Interrupt handler, reads the message from reply FIFO and tries to access
    the associated message frame and panics, as in the new kernel's context
    that message frame is not valid at all.

    o In this scenario, probably we should delay the request_irq() call. First
    bring up the IOC, reset it if needed and then should register for irq.

    o I have tested the patch with SAS1064E and 53c1030 controllers.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Acked-by: "Moore, Eric Dean"
    Signed-off-by: James Bottomley

    Vivek Goyal
     

20 May, 2006

1 commit

  • All registered reset callback handlers are called during reset processing.
    The mptspi modules has its own reset callback handler, just recently
    added for issuing domain validation after host reset. If either the mptsas or
    mptfc driver are loaded, this callback could be called. Thus resulting
    in domain validation being issued for sas or fibre end devices.

    Fix this by having mptbase.c check the bus type against the driver
    type and only call the reset handler if they match (or if it's a
    non-bus specific reset handler).

    Signed-off-by: James Bottomley

    James Bottomley
     

10 May, 2006

1 commit

  • A race condition exists in mptfc between the thread registering a device
    with the fc transport and the scan work generated by the transport.
    This race existed prior to the application of the mptfc bug fix patch.

    mptfc_register_dev() calls fc_remote_port_add() with the FC_RPORT_ROLE_TARGET
    bit set in the rport ids passed to the function. Having this bit set causes
    fc_remote_port_add() to schedule a scan of the device.

    This scan can execute before mptfc_register_dev() can fill in the dd_data
    in the rport structure. When this happens, mptfc_target_alloc() will fail
    because dd_data is null.

    Attached is a patch which fixes the problem. The patch changes the rport ids
    passed to fc_remote_port_add() to not have the TARGET bit set. This prevents
    the scan from being scheduled. After mptfc_register_dev() fills in the rport
    dd_data field, fc_remote_port_rolechg() is called, changing the role of the
    rport to TARGET. Thus, the scan is scheduled after dd_data is filled
    in which prevents the failure in mptfc_target_alloc().

    Signed-off-by: Michael Reed
    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    mdr@sgi.com
     

04 May, 2006

1 commit


28 Apr, 2006

1 commit

  • Bug fix for stack overflow in EventDescriptionStr, (a function
    for debuging firmware events). We allocated 50 bytes on local stack
    for buff[], however there are places in the code where we've attempted
    copying in greater than 50 bytes into buff[].

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Eric Moore
     

26 Apr, 2006

2 commits

  • mptbase.h

    bump version number to 3.03.09

    remove unneeded flags
    define workq and remove old fc specific locks

    mptbase.c

    initialize new lock and don't initialize two removed locks

    mptscsih.c

    when firmware reports target is no longer there, return
    DID_REQUEUE for fc hosts so that i/o doesn't get killed until
    the transport has an opportunity to manage the loss via its
    dev loss timer

    when the "eh_abort" routine is called, check to see if the
    driver has the command or not before looking to see if a reset
    is pending. James Smart and I talked about this and believe
    that the API for this routine is: if driver doesn't have
    command, return SUCCESS. This change helps prevent a target
    from being taken offline. SUCCESS is returned because it's
    likely that the command completed after error recovery timed
    it out but before it could be aborted.

    provide a routine to queue work to newly created workq, and
    use it.

    remove "ioc" from mptscsih_abort() it was only used one time.
    the other references were via hd->ioc, so I just moved it....
    net change in references to ioc via hd->ioc is zero

    move hd->resetPending test and hd->timeouts increment to after
    the test for whether the command to be aborted remains known
    to the driver

    Make certain that the workq exists before queuing work to it.

    mptfc.c

    no longer need to lock rport data structures as I was able to
    single thread the code! I fixed up the debug code to
    eliminate compilation messages due to type mismatch in the
    printk. Got rid of some no longer needed rport flags.
    Initialize and destroy the workq used for the rescan work.

    simplify the logic regarding the increment of
    fc_rescan_work_count. use post increment and test for zero
    vs. pre increment and test for one; eliminate work_count
    variable: queue_work can be called with the work_lock held as
    it doesn't sleep

    Signed-off-by: Michael Reed
    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • This patch handles case where raid hidden components
    are not being removed when power turned off to device
    attached to expander, as well as the case of
    exposing raid components when power is turned back on
    to devices attached to an expander. (This is a repost
    of this patch, with mptsas_is_end_device declared
    further up in the code.)

    This patch contains some other miscellaneous bug fix's.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     

14 Apr, 2006

1 commit

  • Driver panic when RAID logical volume was present when driver
    loaded, or when a RAID logical volume was created on the fly.

    This issue was created in due to recent scsi_transport_sas change,
    when sas_read_port_mode_page was added into the mptsas drivers
    slave_config entry point.

    This new API expects that all sdev's to be assocated to an rphy, however
    that is not the case for logical volumes, as they are created using
    scsi_add_device, instead of sas_rphy_add().

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     

29 Mar, 2006

1 commit

  • Mark the f_ops members of inodes as const, as well as fix the
    ripple-through this causes by places that copy this f_ops and then "do
    stuff" with it.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

27 Mar, 2006

1 commit

  • Modify well over a dozen mempool users to call mempool_create_slab_pool()
    rather than calling mempool_create() with extra arguments, saving about 30
    lines of code and increasing readability.

    Signed-off-by: Matthew Dobson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Dobson
     

26 Mar, 2006

1 commit

  • This patch fixes i2o_dump_hrt output from dmesg:

    iop0: HRT has 1 entries of 16 bytes each.
    Adapter 00000012: TID 0000:[HPC*]:PCI 1: Bus 1 Device 22
    Function 0

    Signed-off-by: Vasily Averin
    Cc: Markus Lidel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vasily Averin
     

20 Mar, 2006

1 commit


15 Mar, 2006

10 commits

  • version bump

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • This adds support for hot adding and removing
    expanders, and its associated attached devices.
    When there is a change in topology,
    the fusion firmware sends the
    MPI_EVENT_SAS_DISCOVERY event to the driver.
    The driver will read firmware config pages
    to determine what changes took place, and refresh
    drivers view of the world stored in ioc->sas_topology.

    Here is the details of the action the driver does:

    (1) Expander Added : The mptsas_discovery_work
    workqueue is called. Config pages read, and
    ioc->sas_topology is refreshed. The sas_phy_add()
    is called for each phy of the expander. The
    expanders attached devices are added via
    sas_rphy_add(). Added end devices are handled within
    the MPT_ADD_DEVICE logic in mptsas_hotplug_work
    workqueue.

    (2) Expander Delete : The sas_rphy_delete() will be
    called for the top most compenent of the parent that the
    expander is attached to. The sas_rphy_delete call
    will delete all the children phys, rphys, and end devices.
    This is handled from mptsas_discovery_work workqueue.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • Suppport for exposing hidden raid components
    for sg interface. The sdev->no_uld_attach flag
    will set set accordingly.

    The sas module supports adding/removing raid
    volumes using online storage management application
    interface.

    This patch rely's on patch's provided to me
    by Christoph Hellwig, that exports device_reprobe.
    I will post those patch's on behalf of Christoph.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • Changelog:
    (1) fix memory leak: p->phy_info
    (2) initialize device_info and port_info data fields
    (3) initialize the hba firmware handle
    (4) initialize phy_id for attached phy_info data fields
    (5) initialize attached phy_info data fields

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • exclosure should be enclosure

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • Cleanup of mptsas firmware event handlers.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • It makes no sense in keeping the target_id and bus_id
    in the VirtDevice structure, when it can be obtained
    from the VirtTarget structure.

    In addition, this patch fix's couple compilation bugs
    in mptfc.c when MPT_DEBUG_FC is enabled. This
    provided by Micheal Reed.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • Patch previously provided from Adrian Bunk ,
    moving some functions to static. This is already in
    the -mm tree.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • Created a debug level MPT_DEBUG_VERBOSE_EVENTS.
    Moving some of the more vebose debug messages
    for firwmare events into new debug level. Also
    added some more firmware events descriptions.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     
  • This header is provided to better understand
    loginfo codes returned by the mpt fusion firmware.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Moore, Eric
     

13 Mar, 2006

1 commit


12 Mar, 2006

1 commit


01 Mar, 2006

1 commit

  • This is the first half of a patch to add the generic domain validation
    to mptspi. It also creates a secondary "virtual" channel for raid
    component devices since these are now exported with no_uld_attach.

    What Eric and I would have really liked is to export all physical
    components on channel 0 and all raid components on channel 1.
    Unfortunately, this would result in device renumbering on platforms with
    mixed RAID/Physical devices which was considered unacceptable for
    userland stability reasons.

    Still to be done is to plug back the extra parameter setting and DV
    pieces on reset and hotplug.

    Signed-off-by: James Bottomley

    James Bottomley
     

28 Feb, 2006

3 commits