1. 16 10月, 2008 3 次提交
    • S
      ieee1394: sbp2: enforce s/g segment size limit · ed6ffd08
      Stefan Richter 提交于
      1. We don't need to round the SBP-2 segment size limit down to a
         multiple of 4 kB (0xffff -> 0xf000).  It is only necessary to
         ensure quadlet alignment (0xffff -> 0xfffc).
      
      2. Use dma_set_max_seg_size() to tell the DMA mapping infrastructure
         and the block IO layer about the restriction.  This way we can
         remove the size checks and segment splitting in the queuecommand
         path.
      
         This assumes that no other code in the ieee1394 stack uses
         dma_map_sg() with conflicting requirements.  It furthermore assumes
         that the controller device's platform actually allows us to set the
         segment size to our liking.  Assert the latter with a BUG_ON().
      
      3. Also use blk_queue_max_segment_size() to tell the block IO layer
         about it.  It cannot know it because our scsi_add_host() does not
         point to the FireWire controller's device.
      
      We can also uniformly use dma_map_sg() for the single segment case just
      like for the multi segment case, to further simplify the code.
      
      Also clean up how the page table is converted to big endian.
      
      Thanks to Grant Grundler and FUJITA Tomonori for advice.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      ed6ffd08
    • S
      cd8c79f1
    • S
      ieee1394: sbp2: stricter dma_sync · 0a77b17c
      Stefan Richter 提交于
      Two dma_sync_single_for_cpu() were called in the wrong place.
      Luckily they were merely for DMA_TO_DEVICE, hence nobody noticed.
      
      Also reorder the matching dma_sync_single_for_device() a little bit
      so that they reside in the same functions as their counterparts.
      This also avoids syncing the s/g table for requests which don't use it.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      0a77b17c
  2. 20 8月, 2008 1 次提交
    • S
      ieee1394: sbp2: let nodemgr retry node updates during bus reset series · a3384067
      Stefan Richter 提交于
      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: NStefan Richter <stefanr@s5r6.in-berlin.de>
      a3384067
  3. 14 7月, 2008 2 次提交
  4. 21 5月, 2008 1 次提交
  5. 18 4月, 2008 2 次提交
  6. 14 3月, 2008 1 次提交
  7. 20 2月, 2008 1 次提交
  8. 16 2月, 2008 1 次提交
  9. 02 2月, 2008 1 次提交
  10. 31 1月, 2008 3 次提交
    • S
      ieee1394: sbp2: raise default transfer size limit · 4e6343a1
      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: NStefan Richter <stefanr@s5r6.in-berlin.de>
      4e6343a1
    • S
      ieee1394: sbp2: s/g list access cosmetics · 825f1df5
      Stefan Richter 提交于
      Replace sg->length by sg_dma_len(sg).  Rename a variable for shorter
      line lengths and eliminate some superfluous local variables.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      825f1df5
    • S
      8c4ac094
  11. 12 1月, 2008 1 次提交
  12. 02 11月, 2007 1 次提交
  13. 23 10月, 2007 1 次提交
  14. 17 10月, 2007 1 次提交
  15. 26 8月, 2007 1 次提交
  16. 03 8月, 2007 1 次提交
  17. 10 7月, 2007 1 次提交
  18. 01 6月, 2007 1 次提交
    • S
      ieee1394: sbp2: offer SAM-conforming target port ID in sysfs · d7794c86
      Stefan Richter 提交于
      With "modprobe sbp2 long_ieee1394_id=y", the format of
      /sys/bus/scsi/devices/*:*:*:*/ieee1394_id is changed from e.g.
      0001041010004beb:0:0 to 0001041010004beb:00042c:0000.
      
      The longer format fully conforms to object identifier sizes as per
      SAM(-2...4) and reflects what the SAM target port identifier is meant to
      contain:  A Discovery ID allegedly specified by ISO/IEC 13213:1994 ---
      however there is no such thing; the authors of SAM probably meant
      Directory ID).  Especially target nodes with multiple dynamically added
      targets may use Directory IDs to persistently identify target ports.
      
      The new format is independent of implementation details of nodemgr.
      Thus the same ieee1394_id attribute format can be implemented in the new
      firewire stack.
      
      The ieee1394_id is typically used to create persistently named links in
      /dev/disk/by-id.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      d7794c86
  19. 28 5月, 2007 2 次提交
  20. 30 4月, 2007 4 次提交
    • A
      ieee1394: sbp2: include fixes · f84c922b
      Andrew Morton 提交于
      drivers/ieee1394/sbp2.c: In function 'sbp2util_access_timeout':
      drivers/ieee1394/sbp2.c:399: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
      drivers/ieee1394/sbp2.c:399: error: (Each undeclared identifier is reported only once
      drivers/ieee1394/sbp2.c:399: error: for each function it appears in.)
      drivers/ieee1394/sbp2.c:399: warning: implicit declaration of function 'signal_pending'
      drivers/ieee1394/sbp2.c:399: warning: implicit declaration of function 'schedule_timeout'
      drivers/ieee1394/sbp2.c: In function 'sbp2_prep_command_orb_sg':
      drivers/ieee1394/sbp2.c:1438: warning: implicit declaration of function 'page_address'
      drivers/ieee1394/sbp2.c:1438: warning: passing argument 2 of 'dma_map_single' makes pointer from integer without a cast
      drivers/ieee1394/sbp2.c: In function 'sbp2_handle_status_write':
      drivers/ieee1394/sbp2.c:1842: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
      
      Possibly due to changes in -mm, but this file should explicitly include the
      headers for the stuff it uses.
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (brought into alphabetic order)
      f84c922b
    • S
      ieee1394: sbp2: move some memory allocations into non-atomic context · 3d269cb5
      Stefan Richter 提交于
      When the command ORB pool is created, the ORB list won't be accessed
      concurrently.  Therefore we don't have to take the spinlock there.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      3d269cb5
    • S
      ieee1394: sbp2: optimize DMA direction of s/g tables · 2446a79f
      Stefan Richter 提交于
      Unlike the name suggests, "cmd->scatter_gather_element" holds only the
      s/g table, not the actual s/g elements.  Since the table is only read
      but never written by the device, DMA_BIDIRECTIONAL can be replaced by
      DMA_TO_DEVICE which may be cheaper on some architectures.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      2446a79f
    • S
      ieee1394: sbp2: enforce 32bit DMA mapping · 0555659d
      Stefan Richter 提交于
      In order to use OHCI-1394 physical DMA, all s/g elements, s/g tables,
      ORBs, and response buffers have to reside within the first 4 GB of the
      FireWire controller's physical address space.  Set the correct mask for
      DMA mappings.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      0555659d
  21. 09 2月, 2007 3 次提交
  22. 11 1月, 2007 1 次提交
  23. 30 12月, 2006 2 次提交
  24. 08 12月, 2006 4 次提交