1. 13 7月, 2007 3 次提交
    • D
      xor: make 'xor_blocks' a library routine for use with async_tx · 685784aa
      Dan Williams 提交于
      The async_tx api tries to use a dma engine for an operation, but will fall
      back to an optimized software routine otherwise.  Xor support is
      implemented using the raid5 xor routines.  For organizational purposes this
      routine is moved to a common area.
      
      The following fixes are also made:
      * rename xor_block => xor_blocks, suggested by Adrian Bunk
      * ensure that xor.o initializes before md.o in the built-in case
      * checkpatch.pl fixes
      * mark calibrate_xor_blocks __init, Adrian Bunk
      
      Cc: Adrian Bunk <bunk@stusta.de>
      Cc: NeilBrown <neilb@suse.de>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      685784aa
    • D
      dmaengine: make clients responsible for managing channels · d379b01e
      Dan Williams 提交于
      The current implementation assumes that a channel will only be used by one
      client at a time.  In order to enable channel sharing the dmaengine core is
      changed to a model where clients subscribe to channel-available-events.
      Instead of tracking how many channels a client wants and how many it has
      received the core just broadcasts the available channels and lets the
      clients optionally take a reference.  The core learns about the clients'
      needs at dma_event_callback time.
      
      In support of multiple operation types, clients can specify a capability
      mask to only be notified of channels that satisfy a certain set of
      capabilities.
      
      Changelog:
      * removed DMA_TX_ARRAY_INIT, no longer needed
      * dma_client_chan_free -> dma_chan_release: switch to global reference
        counting only at device unregistration time, before it was also happening
        at client unregistration time
      * clients now return dma_state_client to dmaengine (ack, dup, nak)
      * checkpatch.pl fixes
      * fixup merge with git-ioat
      
      Cc: Chris Leech <christopher.leech@intel.com>
      Signed-off-by: NShannon Nelson <shannon.nelson@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      d379b01e
    • D
      dmaengine: refactor dmaengine around dma_async_tx_descriptor · 7405f74b
      Dan Williams 提交于
      The current dmaengine interface defines mutliple routines per operation,
      i.e. dma_async_memcpy_buf_to_buf, dma_async_memcpy_buf_to_page etc.  Adding
      more operation types (xor, crc, etc) to this model would result in an
      unmanageable number of method permutations.
      
      	Are we really going to add a set of hooks for each DMA engine
      	whizbang feature?
      		- Jeff Garzik
      
      The descriptor creation process is refactored using the new common
      dma_async_tx_descriptor structure.  Instead of per driver
      do_<operation>_<dest>_to_<src> methods, drivers integrate
      dma_async_tx_descriptor into their private software descriptor and then
      define a 'prep' routine per operation.  The prep routine allocates a
      descriptor and ensures that the tx_set_src, tx_set_dest, tx_submit routines
      are valid.  Descriptor creation and submission becomes:
      
      struct dma_device *dev;
      struct dma_chan *chan;
      struct dma_async_tx_descriptor *tx;
      
      tx = dev->device_prep_dma_<operation>(chan, len, int_flag)
      tx->tx_set_src(dma_addr_t, tx, index /* for multi-source ops */)
      tx->tx_set_dest(dma_addr_t, tx, index)
      tx->tx_submit(tx)
      
      In addition to the refactoring, dma_async_tx_descriptor also lays the
      groundwork for definining cross-channel-operation dependencies, and a
      callback facility for asynchronous notification of operation completion.
      
      Changelog:
      * drop dma mapping methods, suggested by Chris Leech
      * fix ioat_dma_dependency_added, also caught by Andrew Morton
      * fix dma_sync_wait, change from Andrew Morton
      * uninline large functions, change from Andrew Morton
      * add tx->callback = NULL to dmaengine calls to interoperate with async_tx
        calls
      * hookup ioat_tx_submit
      * convert channel capabilities to a 'cpumask_t like' bitmap
      * removed DMA_TX_ARRAY_INIT, no longer needed
      * checkpatch.pl fixes
      * make set_src, set_dest, and tx_submit descriptor specific methods
      * fixup git-ioat merge
      * move group_list and phys to dma_async_tx_descriptor
      
      Cc: Jeff Garzik <jeff@garzik.org>
      Cc: Chris Leech <christopher.leech@intel.com>
      Signed-off-by: NShannon Nelson <shannon.nelson@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      7405f74b
  2. 12 7月, 2007 5 次提交
  3. 08 7月, 2007 2 次提交
  4. 07 7月, 2007 2 次提交
    • Y
      potential compiler error, irqfunc caller sites update · 0da2f0f1
      Yoann Padioleau 提交于
      In 7d12e780 David Howells performed
      this evolution:
       "IRQ: Maintain regs pointer globally rather than passing to IRQ handlers"
      
      He correctly updated many of the function definitions that were using this
      extra regs pointer parameter but forgot to update some caller sites of
      those functions.  The reason the modifications was not properly done on all
      drivers is that some drivers were rarely compiled because they are for
      AMIGA, or that some code sites were inside #ifdefs where the option is not
      set or inside #if 0.
      
      Here is the semantic patch that found the occurences
      and fixed the problem.
      
      @ rule1 @
      identifier fn;
      identifier irq, dev_id;
      typedef irqreturn_t;
      @@
      
      static irqreturn_t fn(int irq, void *dev_id)
      {
         ...
      }
      
      @@
      identifier rule1.fn;
      expression E1, E2, E3;
      @@
      
       fn(E1, E2
      -   ,E3
         )
      Signed-off-by: NYoann Padioleau <padator@wanadoo.fr>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jeff Garzik <jeff@garzik.org>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0da2f0f1
    • B
      PNP SMCf010 quirk: work around Toshiba Portege 4000 ACPI issues · 41a53114
      Bjorn Helgaas 提交于
      When we enable the SMCf010 IR device, the Toshiba Portege 4000 BIOS claims
      the device is working, but it really isn't configured correctly.  The BIOS
      *will* configure it, but only if we call _SRS after (1) reversing the order
      of the SIR and FIR I/O port regions and (2) changing the IRQ from
      active-high to active-low.
      
      This patch addresses the 2.6.22 regression:
          "no irda0 interface (2.6.21 was OK), smsc does not find chip"
      
      I tested this on a Portege 4000.  The smsc-ircc2 driver correctly detects
      the device, and "irattach irda0 -s && irdadump" shows transmitted and
      received packets.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Cc: Andrey Borzenkov <arvidjaar@mail.ru>
      Cc: Samuel Ortiz <samuel@sortiz.org>
      Cc: "Linus Walleij (LD/EAB)" <linus.walleij@ericsson.com>
      Cc: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
      Cc: Adam Belay <ambx1@neo.rr.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      41a53114
  5. 05 7月, 2007 1 次提交
    • L
      Remove the blink driver · 2bcb1b7d
      Linus Torvalds 提交于
      Yeah, we could have just disabled it, but there's work on a new one that
      isn't as fundamentally broken, so there really doesn't seem to be any
      point in keeping it around.
      
      The recent timer cleanup broke the only valid use, and when I say
      "valid", I obviously mean "totally broken".  So it's not like it works,
      or really even can work in the current format that uses the unsafe
      "panic" LED blinking routines..
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2bcb1b7d
  6. 04 7月, 2007 12 次提交
  7. 03 7月, 2007 10 次提交
  8. 02 7月, 2007 5 次提交
    • P
      3c589_cs: fix local_bh_enable warning · 63ac9b91
      Patrick McHardy 提交于
      Russell King wrote:
      > Having upgraded from 2.6.16 to 2.6.22-rc6, I'm now seeing the following.
      >
      > Looks like netfilter is calling local_bh_enable() with IRQs disabled,
      > which would appear to be illegal.  Thankfully, this is a warn-once
      > warning.
      >
      > WARNING: at /home/rmk/git/linux-2.6-rmk/kernel/softirq.c:138 local_bh_enable()
      > [...]
      > [<c01447fc>] (nf_conntrack_destroy+0x0/0x2c) from [<c012c05c>] (__kfree_skb+0xd0/0x100)
      > [<c012bf8c>] (__kfree_skb+0x0/0x100) from [<c012c0d8>] (kfree_skb+0x4c/0x50)
      >  r5:c12a3800 r4:00000300
      > [<c012c08c>] (kfree_skb+0x0/0x50) from [<bf03cbb0>] (el3_start_xmit+0xb8/0xd0 [3c589_cs])
      > [<bf03caf8>] (el3_start_xmit+0x0/0xd0 [3c589_cs]) from [<c01324dc>] (dev_hard_start_xmit+0x1a8/0x244)
      >  r7:c12a3800 r6:c1a9aa00 r5:c1a9aa00 r4:c12a3800
      > [<c0132334>] (dev_hard_start_xmit+0x0/0x244) from [<c013fcc0>] (__qdisc_run+0xb0/0x198)
      
      Thats a bug in the 3c589_cs driver. Patch attached.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      63ac9b91
    • U
      libata: PATA-mode fixes for sis_sata · a3cabb27
      Uwe Koziolek 提交于
      Changed PATA handler for PATA-ports used by sata_sis.
      This patch was originally submitted by Jeff Garzik.
      
      Added PCI-ID 1180 for SiS966 Controller in pata_sis.
      The 1180 mode is fully compatible to other SiS PATA-controller.
      
      The PCI-ID 1183 is SATA in PATA-emulation, but not fully compatible
      to SiS5513/5518. sata_sis.c is forwarding this ID to pata_sis.
      1183 is not working if simply added to pata_sis.
      This handling fixes issues with SiS968.
      Signed-off-by: NUwe Koziolek <uwe.koziolek@gmx.net>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      a3cabb27
    • T
      libata: add HTS541616J9SA00 to NCQ blacklist · e14cbfa6
      Tejun Heo 提交于
      Another member of HTS5416* family doing spurious NCQ completion.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Enrico Sardi <enricoss@tiscali.it>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e14cbfa6
    • R
      sata_nv: allow changing queue depth · 1e0b5ab8
      Robert Hancock 提交于
      The sata_nv driver was missing the change_queue_depth hook in the SCSI host
      template which the other NCQ-capable libata drivers had. This made it impossible
      to change the queue depth by user request. Add this in.
      Signed-off-by: NRobert Hancock <hancockr@shaw.ca>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      1e0b5ab8
    • T
      sata_inic162x: disable LBA48 devices · 90c93785
      Tejun Heo 提交于
      sata_inic162x can't do LBA48 properly yet and is likely to corrupt
      data on drives larger than LBA28 limit.  Disable LBA48 devices during
      device configuration.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      90c93785