20 Aug, 2008

3 commits

  • sbp2 was too quick to report .update() to the ieee1394 core as failed.
    (Logged as "Failed to reconnect to sbp2 device!".) The core would then
    unbind sbp2 from the device.

    This is not justified if the .update() failed because another bus reset
    happened. We check this and tell the ieee1394 that .update() succeeded,
    and the core will call sbp2's .update() for the new bus reset as well.

    This improves reconnection/re-login especially on buses with several
    disks as they may issue bus resets in close succession when they come
    online.

    Tested by Damien Benoist.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • nodemgr_node_probe checked for generation increments too late and
    therefore prematurely reported nodes as "suspended".

    Fixes http://bugzilla.kernel.org/show_bug.cgi?id=11349. Reported and
    tested by Damien Benoist.

    Signed-off-by: Stefan Richter

    Stefan Richter
     
  • Regression since commit 73cf60232ef16e1f8a64defa97214a1722db1e6c,
    "ieee1394: use class iteration api": The two loops for (1.) driver
    updates and (2.) driver probes were replaced by a single loop with
    bogus needs_probe checks. Hence updates and probes were now intermixed,
    and especially sbp2 updates (reconnects) held up longer than necessary.

    While we fix it, change the needs_probe flag to bool type for clarity.

    Tested by Damien Benoist.

    Signed-off-by: Stefan Richter

    Stefan Richter
     

25 Jul, 2008

1 commit

  • On 32-bit architectures PAGE_ALIGN() truncates 64-bit values to the 32-bit
    boundary. For example:

    u64 val = PAGE_ALIGN(size);

    always returns a value < 4GB even if size is greater than 4GB.

    The problem resides in PAGE_MASK definition (from include/asm-x86/page.h for
    example):

    #define PAGE_SHIFT 12
    #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT)
    #define PAGE_MASK (~(PAGE_SIZE-1))
    ...
    #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)

    The "~" is performed on a 32-bit value, so everything in "and" with
    PAGE_MASK greater than 4GB will be truncated to the 32-bit boundary.
    Using the ALIGN() macro seems to be the right way, because it uses
    typeof(addr) for the mask.

    Also move the PAGE_ALIGN() definitions out of include/asm-*/page.h in
    include/linux/mm.h.

    See also lkml discussion: http://lkml.org/lkml/2008/6/11/237

    [akpm@linux-foundation.org: fix drivers/media/video/uvc/uvc_queue.c]
    [akpm@linux-foundation.org: fix v850]
    [akpm@linux-foundation.org: fix powerpc]
    [akpm@linux-foundation.org: fix arm]
    [akpm@linux-foundation.org: fix mips]
    [akpm@linux-foundation.org: fix drivers/media/video/pvrusb2/pvrusb2-dvb.c]
    [akpm@linux-foundation.org: fix drivers/mtd/maps/uclinux.c]
    [akpm@linux-foundation.org: fix powerpc]
    Signed-off-by: Andrea Righi
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrea Righi
     

22 Jul, 2008

3 commits


16 Jul, 2008

1 commit


14 Jul, 2008

6 commits


19 Jun, 2008

1 commit

  • Rename and reorder some prompts and modify some help texts.
    The result:

    -------------------- IEEE 1394 (FireWire) support --------------------
    *** Enable only one of the two stacks, unless you know what you are doing ***
    New FireWire stack, EXPERIMENTAL
    OHCI-1394 controllers
    Storage devices (SBP-2 protocol)
    Stable FireWire stack
    OHCI-1394 controllers
    PCILynx controller
    Storage devices (SBP-2 protocol)
    Enable replacement for physical DMA in SBP2
    IP over 1394
    raw1394 userspace interface
    video1394 userspace interface
    dv1394 userspace interface (deprecated)
    Excessive debugging output

    The old prompts for reference:

    -------------------- IEEE 1394 (FireWire) support --------------------
    IEEE 1394 (FireWire) support - alternative stack, EXPERIMENTAL
    Support for OHCI FireWire host controllers
    Support for storage devices (SBP-2 protocol driver)
    IEEE 1394 (FireWire) support
    *** Subsystem Options ***
    Excessive debugging output
    *** Controllers ***
    Texas Instruments PCILynx support
    OHCI-1394 support
    *** Protocols ***
    OHCI-1394 Video support
    SBP-2 support (Harddisks etc.)
    Enable replacement for physical DMA in SBP2
    IP over 1394
    OHCI-DV I/O support (deprecated)
    Raw IEEE1394 I/O support

    Signed-off-by: Stefan Richter

    Stefan Richter
     

21 May, 2008

1 commit


02 May, 2008

2 commits


26 Apr, 2008

3 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    ieee1394: silence defined but not used warning in non-modular builds
    ieee1394: rawiso: requeue packet for transmission after skipped cycle

    Linus Torvalds
     
  • Currently the kernel will issue the following warning:
    drivers/ieee1394/raw1394.c:2938: warning: 'raw1394_id_table' defined but not used
    Add #ifdef MODULE guards around the declaration.

    Signed-off-by: Tony Breeds

    Ditto with dv1394_id_table and video1394_id_table.

    Signed-off-by: Stefan Richter

    Tony Breeds
     
  • As it seems, some host controllers have issues that can cause them to
    skip cycles now and then when using large packets. I suspect that this
    is due to DMA not succeeding in time. If the transmit fifo can't contain
    more than one packet (big packets), the DMA should provide a new packet
    each cycle (125us). I am under the impression that my current PCI
    express test system can't guarantee this.

    In any case, the patch tries to provide a workaround as follows:
    The DMA program descriptors are modified such that when an error occurs,
    the DMA engine retries the descriptor the next cycle instead of
    stalling. This way no data is lost. The side effect of this is that
    packets are sent with one cycle delay. This however might not be that
    much of a problem for certain protocols (e.g. AM824). If they use
    padding packets for e.g. rate matching they can drop one of those to
    resync the streams.

    The amount of skips between two userspace wakeups is counted. This
    number is then propagated to userspace through the upper 16 bits of the
    'dropped' parameter. This allows unmodified userspace applications due
    to the following:
    1) libraw simply passes this dropped parameter to the user application
    2) the meaning of the dropped parameter is: if it's nonzero, something
    bad has happened. The actual value of the parameter at this moment does
    not have a specific meaning.

    A libraw client can then retrieve the number of skipped cycles and
    account for them if needed.

    Signed-off-by: Pieter Palmers
    Signed-off-by: Stefan Richter

    Pieter Palmers
     

19 Apr, 2008

1 commit


18 Apr, 2008

12 commits


14 Mar, 2008

1 commit

  • Fix I/O errors due to SYM13FW500's inability to handle larger request
    sizes. Reported by Piergiorgio Sartor for
    firewire-sbp2 in https://bugzilla.redhat.com/show_bug.cgi?id=436879

    This fix is necessary because sbp2's default request size limit has been
    lifted since 2.6.25-rc1.

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

    Stefan Richter
     

20 Feb, 2008

1 commit


16 Feb, 2008

1 commit


02 Feb, 2008

1 commit

  • sg_dma_len(sg) is invalid before the s/g list is DMA-mapped.

    This fixes a post 2.6.24 regression which prevents access to SBP-2
    devices on several architectures, introduced by "ieee1394: sbp2: s/g
    list access cosmetics", commit 825f1df545ab0289185373b0eaf06fb0b3487422.

    Signed-off-by: Stefan Richter

    Stefan Richter
     

31 Jan, 2008

2 commits

  • 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