31 Jan, 2008

40 commits

  • * 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (454 commits)
    [POWERPC] Cell IOMMU fixed mapping support
    [POWERPC] Split out the ioid fetching/checking logic
    [POWERPC] Add support to cell_iommu_setup_page_tables() for multiple windows
    [POWERPC] Split out the IOMMU logic from cell_dma_dev_setup()
    [POWERPC] Split cell_iommu_setup_hardware() into two parts
    [POWERPC] Split out the logic that allocates struct iommus
    [POWERPC] Allocate the hash table under 1G on cell
    [POWERPC] Add set_dma_ops() to match get_dma_ops()
    [POWERPC] 83xx: Clean up / convert mpc83xx board DTS files to v1 format.
    [POWERPC] 85xx: Only invalidate TLB0 and TLB1
    [POWERPC] 83xx: Fix typo in mpc837x compatible entries
    [POWERPC] 85xx: convert sbc85* boards to use machine_device_initcall
    [POWERPC] 83xx: rework platform Kconfig
    [POWERPC] 85xx: rework platform Kconfig
    [POWERPC] 86xx: Remove unused IRQ defines
    [POWERPC] QE: Explicitly set address-cells and size cells for muram
    [POWERPC] Convert StorCenter DTS file to /dts-v1/ format.
    [POWERPC] 86xx: Convert all 86xx DTS files to /dts-v1/ format.
    [PPC] Remove 85xx from arch/ppc
    [PPC] Remove 83xx from arch/ppc
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: (26 commits)
    firewire: fw-sbp2: Use sbp2 device-provided mgt orb timeout for logins
    firewire: fw-sbp2: increase login orb reply timeout, fix "failed to login"
    firewire: replace subtraction with bitwise and
    firewire: fw-core: react on bus resets while the config ROM is being fetched
    firewire: enforce access order between generation and node ID, fix "giving up on config rom"
    firewire: fw-cdev: use device generation, not card generation
    firewire: fw-sbp2: use device generation, not card generation
    firewire: fw-sbp2: try to increase reconnect_hold (speed up reconnection)
    firewire: fw-sbp2: skip unnecessary logout
    firewire vs. ieee1394: clarify MAINTAINERS
    firewire: fw-ohci: Dynamically allocate buffers for DMA descriptors
    firewire: fw-ohci: CycleTooLong interrupt management
    firewire: Fix extraction of source node id
    firewire: fw-ohci: Bug fixes for packet-per-buffer support
    firewire: fw-ohci: Fix for dualbuffer three-or-more buffers
    firewire: fw-sbp2: remove unused misleading macro
    firewire: fw-sbp2: prepare for s/g chaining
    firewire: fw-sbp2: refactor workq and kref handling
    ieee1394: ohci1394: don't schedule IT tasklets on IR events
    ieee1394: sbp2: raise default transfer size limit
    ...

    Linus Torvalds
     
  • Paul Mackerras
     
  • Paul Mackerras
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:
    [WATCHDOG] use SGI_HAS_INDYDOG for INDYDOG depends

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus: (27 commits)
    lguest: use __PAGE_KERNEL instead of _PAGE_KERNEL
    lguest: Use explicit includes rateher than indirect
    lguest: get rid of lg variable assignments
    lguest: change gpte_addr header
    lguest: move changed bitmap to lg_cpu
    lguest: move last_pages to lg_cpu
    lguest: change last_guest to last_cpu
    lguest: change spte_addr header
    lguest: per-vcpu lguest pgdir management
    lguest: make pending notifications per-vcpu
    lguest: makes special fields be per-vcpu
    lguest: per-vcpu lguest task management
    lguest: replace lguest_arch with lg_cpu_arch.
    lguest: make registers per-vcpu
    lguest: make emulate_insn receive a vcpu struct.
    lguest: map_switcher_in_guest() per-vcpu
    lguest: per-vcpu interrupt processing.
    lguest: per-vcpu lguest timers
    lguest: make hypercalls use the vcpu struct
    lguest: make write() operation smp aware
    ...

    Manual conflict resolved (maybe even correctly, who knows) in
    drivers/lguest/x86/core.c

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6:
    PPC: Fix powerpc vio_find_name to not use devices_subsys
    Driver core: add bus_find_device_by_name function
    Module: check to see if we have a built in module with the same name
    x86: fix runtime error in arch/x86/kernel/cpu/mcheck/mce_amd_64.c
    Driver core: Fix up build when CONFIG_BLOCK=N

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm: (249 commits)
    KVM: Move apic timer migration away from critical section
    KVM: Put kvm_para.h include outside __KERNEL__
    KVM: Fix unbounded preemption latency
    KVM: Initialize the mmu caches only after verifying cpu support
    KVM: MMU: Fix dirty page setting for pages removed from rmap
    KVM: Portability: Move kvm_fpu to asm-x86/kvm.h
    KVM: x86 emulator: Only allow VMCALL/VMMCALL trapped by #UD
    KVM: MMU: Merge shadow level check in FNAME(fetch)
    KVM: MMU: Move kvm_free_some_pages() into critical section
    KVM: MMU: Switch to mmu spinlock
    KVM: MMU: Avoid calling gfn_to_page() in mmu_set_spte()
    KVM: Add kvm_read_guest_atomic()
    KVM: MMU: Concurrent guest walkers
    KVM: Disable vapic support on Intel machines with FlexPriority
    KVM: Accelerated apic support
    KVM: local APIC TPR access reporting facility
    KVM: Print data for unimplemented wrmsr
    KVM: MMU: Add cache miss statistic
    KVM: MMU: Coalesce remote tlb flushes
    KVM: Expose ioapic to ia64 save/restore APIs
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (21 commits)
    [SCSI] Revert "[SCSI] aacraid: fib context lock for management ioctls"
    [SCSI] bsg: copy the cmd_type field to the subordinate request for bidi
    [SCSI] handle scsi_init_queue failure properly
    [SCSI] destroy scsi_bidi_sdb_cache in scsi_exit_queue
    [SCSI] scsi_debug: add XDWRITEREAD_10 support
    [SCSI] scsi_debug: add bidi data transfer support
    [SCSI] scsi_debug: add get_data_transfer_info helper function
    [SCSI] remove use_sg_chaining
    [SCSI] bidirectional: fix up for the new blk_end_request code
    [SCSI] bidirectional command support
    [SCSI] implement scsi_data_buffer
    [SCSI] tgt: use scsi_init_io instead of scsi_alloc_sgtable
    [SCSI] aic7xxx: fix warnings with CONFIG_PM disabled
    [SCSI] aic79xx: fix warnings with CONFIG_PM disabled
    [SCSI] aic7xxx: fix ahc_done check SCB_ACTIVE for tagged transactions
    [SCSI] sgiwd93: use cached memory access to make driver work on IP28
    [SCSI] zfcp: fix sense_buffer access bug
    [SCSI] ncr53c8xx: fix sense_buffer access bug
    [SCSI] aic79xx: fix sense_buffer access bug
    [SCSI] hptiop: fix sense_buffer access bug
    ...

    Linus Torvalds
     
  • Fix kernel-doc empty line warning:
    Warning(linux-2.6.24-git8//drivers/base/class.c:866): bad line:

    Signed-off-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • To be more compliant with section 7.4.8 of the SBP-2 specification,
    use the mgt_ORB_timeout specified in the SBP-2 device's config rom
    for login ORB attempts (though with some sanity checks). A happy
    side-effect is that certain device and controller combinations that
    sometimes take more than 20 seconds to get synced up (like my laptop
    with just about any SBP-2 device) now function more reliably.

    Signed-off-by: Jarod Wilson
    Signed-off-by: Stefan Richter (silenced sparse)

    Jarod Wilson
     
  • Increase (and rename) the login orb reply timeout value to 20s
    to match that of the old firewire stack. 2s simply didn't give
    many devices enough time to spin up and reply.

    Fixes inability to recognize some devices.
    Failure mode was "orb reply timed out"/"failed to login".

    Signed-off-by: Jarod Wilson
    Signed-off-by: Stefan Richter (style, comments, changelog)

    Jarod Wilson
     
  • Replace an unnecessary subtraction with a bitwise AND when determining the
    value of ext_tcode in fw_fill_transaction() to save a cpu cycle or two in a
    somewhat critical path.

    Signed-off-by: Jarod Wilson
    Signed-off-by: Stefan Richter

    Jarod Wilson
     
  • read_rom() obtained a fresh new fw_device.generation for each read
    transaction. Hence it was able to continue reading in the middle of the
    ROM even if a bus reset happened. However the device may have modified
    the ROM during the reset. We would end up with a corrupt fetched ROM
    image then.

    Although all of this is quite unlikely, it is not impossible.
    Therefore we now restart reading the ROM if the bus generation changed.

    Note, the memory barrier in read_rom() is still necessary according to
    tests by Jarod Wilson, despite of the ->generation access being moved up
    in the call chain.

    Signed-off-by: Stefan Richter

    This is essentially what I've been beating on locally, and I've yet to hit
    another config rom read failure with it.

    Signed-off-by: Jarod Wilson

    Stefan Richter
     
  • fw_device.node_id and fw_device.generation are accessed without mutexes.
    We have to ensure that all readers will get to see node_id updates
    before generation updates.

    Fixes an inability to recognize devices after "giving up on config rom",
    https://bugzilla.redhat.com/show_bug.cgi?id=429950

    Signed-off-by: Stefan Richter

    Reviewed by Nick Piggin .

    Verified to fix 'giving up on config rom' issues on multiple system and
    drive combinations that were previously affected.

    Signed-off-by: Jarod Wilson
    Signed-off-by: Kristian Høgsberg

    Stefan Richter
     
  • We have to use the fw_device.generation here, not the fw_card.generation,
    because the generation must never be newer than the node ID when we emit
    a transaction. This cannot be guaranteed with fw_card.generation.

    Signed-off-by: Stefan Richter

    Verified in concert with subsequent memory barriers patch to fix 'giving
    up on config rom' issues on multiple system and drive combinations that
    were previously affected.

    Signed-off-by: Jarod Wilson

    Stefan Richter
     
  • There was a small window where a login or reconnect job could use an
    already updated card generation with an outdated node ID. We have to
    use the fw_device.generation here, not the fw_card.generation, because
    the generation must never be newer than the node ID when we emit a
    transaction. This cannot be guaranteed with fw_card.generation.

    Furthermore, the target's and initiator's node IDs can be obtained from
    fw_device and fw_card. Dereferencing their underlying topology objects
    is not necessary.

    Signed-off-by: Stefan Richter

    Verified in concert with subsequent memory barriers patch to fix 'giving
    up on config rom' issues on multiple system and drive combinations that
    were previously affected.

    Signed-off-by: Jarod Wilson

    Stefan Richter
     
  • Ask the target to grant 4 seconds instead of the standard and minimum of
    1 second window after bus reset for reconnection. This accelerates
    reconnection if there are more than one targets on the bus: If a login
    and inquiry to one target blocks the fw-sbp2 workqueue for more than 1s
    after bus reset, we now still can reconnect to the other target.

    Before that, fw-sbp2's reconnect attempts would be rejected with "error
    status: 0:9" (function rejected), and fw-sbp2 would finally re-login.
    All those futile reconnect attemps cost extra time until the target
    which needs re-login is ready for I/O again.

    The reconnect timeout field in the login ORB doesn't have to be honored
    by the target though. I found that we could get up to
    - allegedly 32768s from an old OXFW911 firmware
    - 256s from LSI bridges
    - 4s from OXUF922 and OXFW912 bridges,
    - 2s from TI bridges,
    - only the standard 1s from Initio and Prolific bridges and from
    Apple OpenFirmware in target mode.

    We just try to get 4 seconds which already covers the case of a few
    HDDs on the same bus quite nicely.

    A minor drawback occurs in the following (rare and impractical) border
    case:
    - two initiators are there, initiator 1 holds an exclusive login to
    a target,
    - initiator 1 goes off the bus,
    - target refuses login attempts from initiator 2 until reconnect_hold
    seconds after bus reset.

    An alternative approach to the issue at hand would be to parallelize
    fw-sbp2's reconnect and login work.

    Signed-off-by: Stefan Richter
    Acked-by: Jarod Wilson

    Stefan Richter
     
  • Don't attempt to send a logout ORB if the target was already unplugged
    or had its link switched off. If two targets are attached, this
    enhances the chance to quickly reconnect to the remaining target when
    one target is plugged out.

    Signed-off-by: Stefan Richter
    Acked-by: Jarod Wilson

    Stefan Richter
     
  • Previously, the fw-ohci driver used fixed-length buffers for storing
    descriptors for isochronous receive DMA programs. If an application
    (such as libdc1394) generated a DMA program that was too large, fw-ohci
    would reach the limit of its fixed-sized buffer and return an error to
    userspace.

    This patch replaces the fixed-length ring-buffer with a linked-list of
    page-sized buffers. Additional buffers can be dynamically allocated and
    appended to the list when necessary. For a particular context, buffers
    are kept around after use and reused as necessary, so there is no
    allocation taking place after the DMA program is generated for the first
    time.

    In addition, the buffers it uses are coherent for DMA so there is no
    syncing required before and after writes. This syncing wasn't properly
    done in the previous version of the code.

    -

    This is the fourth version of my patch that replaces a fixed-length
    buffer for DMA descriptors with a dynamically allocated linked-list of
    buffers.

    As we discovered with the last attempt, new context programs are
    sometimes queued from interrupt context, making it unacceptable to call
    tasklet_disable() from context_get_descriptors().

    This version of the patch uses ohci->lock for all locking needs instead
    of tasklet_disable/enable. There is a new requirement that
    context_get_descriptors() be called while holding ohci->lock. It was
    already held for the AT context, so adding the requirement for the iso
    context did not seem particularly onerous. In addition, this has the
    side benefit of allowing iso queue to be safely called from concurrent
    user-space threads, which previously was not safe.

    Signed-off-by: David Moore
    Signed-off-by: Kristian Høgsberg
    Signed-off-by: Jarod Wilson

    -

    Fixes the following issues:
    - Isochronous reception stopped prematurely if an application used a
    larger buffer. (Reproduced with coriander.)
    - Isochronous reception stopped after one or a few frames on VT630x
    in OHCI 1.0 mode. (Fixes reception in coriander, but dvgrab still
    doesn't work with these chips.)

    Patch update: struct member alignment, whitespace nits

    Signed-off-by: Stefan Richter

    David Moore
     
  • The firewire-ohci driver so far lacked the ability to resume cycle
    master duty after that condition happened, as added to ohci1394 in Linux
    2.6.18 by commit 57fdb58fa5a140bdd52cf4c4ffc30df73676f0a5. This ports
    this patch to fw-ohci.

    The "cycle too long" condition has been seen in practice
    - with IIDC cameras if a mode with packets too large for a speed is
    chosen,
    - sporadically when capturing DV on a VIA VT6306 card with ohci1394/
    ieee1394/ raw1394/ dvgrab 2.
    https://bugzilla.redhat.com/show_bug.cgi?id=415841#c7
    (This does not fix Fedora bug 415841.)

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Fix extraction of the source node id from the packet header.

    Signed-off-by: Rabin Vincent
    Signed-off-by: Stefan Richter

    Rabin Vincent
     
  • This patch corrects a number of bugs in the current OHCI 1.0
    packet-per-buffer support:

    1. Correctly deal with payloads that cross a page boundary. The
    previous version would not split the descriptor at such a boundary,
    potentially corrupting unrelated memory.

    2. Allow user-space to specify multiple packets per struct
    fw_cdev_iso_packet in the same way that dual-buffer allows. This is
    signaled by header_length being a multiple of header_size. This
    multiple determines the number of packets. The payload size allocated
    per packet is determined by dividing the total payload size by the
    number of packets.

    3. Make sync support work properly for packet-per-buffer.

    I have tested this patch with libdc1394 by forcing my OHCI 1.1
    controller to use the packet-per-buffer support instead of dual-buffer.

    I would greatly appreciate testing by those who have a DV devices and
    other types of iso streamers to make sure I didn't cause any
    regressions.

    Stefan, with this patch, I'm hoping that libdc1394 will work with all
    your OHCI 1.0 controllers now.

    The one bit of future work that remains for packet-per-buffer support is
    the automatic compaction of short payloads that I discussed with
    Kristian.

    Signed-off-by: David Moore
    Signed-off-by: Stefan Richter

    David Moore
     
  • This patch fixes the problem where different OHCI 1.1 controllers behave
    differently when a received iso packet straddles three or more buffers
    when using the dual-buffer receive mode. Two changes are made in order
    to handle this situation:

    1. The packet sync DMA descriptor is given a non-zero header length and
    non-zero payload length. This is because zero-payload descriptors are
    not discussed in the OHCI 1.1 specs and their behavior is thus
    undefined. Instead we use a header size just large enough for a single
    header and a payload length of 4 bytes for this first descriptor.

    2. As we process received packets in the context's tasklet, read the
    packet length out of the headers. Keep track of the running total of
    the packet length as "excess_bytes", so we can ignore any descriptors
    where no packet starts or ends. These descriptors may not have had
    their first_res_count or second_res_count fields updated by the
    controller so we cannot rely on those values.

    The main drawback of this patch is that the excess_bytes value might get
    "out of sync" with the packet descriptors if something strange happens
    to the DMA program. I'm not if such a thing could ever happen, but I
    appreciate any suggestions in making it more robust.

    Also, the packet-per-buffer support may need a similar fix to deal with
    issue 1, but I haven't done any work on that yet.

    Stefan, I'm hoping that with this patch, all your OHCI 1.1 controllers
    will work properly with an unmodified version of libdc1394.

    Signed-off-by: David Moore
    Signed-off-by: Stefan Richter

    David Moore
     
  • SBP2_MAX_SECTORS is nowhere used in fw-sbp2.
    It merely got copied over from sbp2 where it played a role in the past.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Signed-off-by: Stefan Richter

    Stefan Richter
     
  • This somewhat reduces the size of firewire-sbp2.ko.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Bug noted by Pieter Palmers: Isochronous transmit tasklets were
    scheduled on isochronous receive events, in addition to the proper
    isochronous receive tasklets.

    http://marc.info/?l=linux1394-devel&m=119783196222802

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • This patch speeds up sbp2 a little bit --- but more importantly, it
    brings the behavior of sbp2 and fw-sbp2 closer to each other. Like
    fw-sbp2, sbp2 now does not limit the size of single transfers to 255
    sectors anymore, unless told so by a blacklist flag or by module load
    parameters.

    Only very old bridge chips have been known to need the 255 sectors
    limit, and we have got one such chip in our hardwired blacklist. There
    certainly is a danger that more bridges need that limit; but I prefer to
    have this issue present in both fw-sbp2 and sbp2 rather than just one of
    them.

    An OXUF922 with 400GB 7200RPM disk on an S400 controller is sped up by
    this patch from 22.9 to 23.5 MB/s according to hdparm. The same effect
    could be achieved before by setting a higher max_sectors module
    parameter. On buses which use 1394b beta mode, sbp2 and fw-sbp2 will
    now achieve virtually the same bandwidth. Fw-sbp2 only remains faster
    on 1394a buses due to fw-core's gap count optimization.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • The code has been in "#if 0 - #endif" since Linux 2.6.12.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Convert ieee1394 from nopage to fault.
    Remove redundant vma range checks (correct resource range check is retained).

    Signed-off-by: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Stefan Richter

    Nick Piggin
     
  • Signed-off-by: Joe Perches
    Signed-off-by: Stefan Richter

    Joe Perches
     
  • Replace sg->length by sg_dma_len(sg). Rename a variable for shorter
    line lengths and eliminate some superfluous local variables.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Signed-off-by: Stefan Richter

    Stefan Richter
     
  • This reverts commit a119ee8ee3045bf559d4cf02d72b112f3de2a15b.

    Adaptec found this was causing system lockups.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • scsi_init_queue is expected to clean up allocated things when it
    fails.

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     
  • Needs to call kmem_cache_destroy for scsi_bidi_sdb_cache in
    scsi_exit_queue.

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     
  • Signed-off-by: FUJITA Tomonori
    Acked-by: Douglas Gilbert
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     
  • This enables fill_from_dev_buffer and fetch_to_dev_buffer to handle
    bidi commands.

    Signed-off-by: FUJITA Tomonori
    Acked-by: Douglas Gilbert
    Signed-off-by: James Bottomley

    FUJITA Tomonori