1. 17 8月, 2012 1 次提交
  2. 27 2月, 2012 2 次提交
    • I
      carma-fpga: fix race between data dumping and DMA callback · 6c15d7af
      Ira Snyder 提交于
      When the system is under heavy load, we occasionally saw a problem where
      the system would get a legitimate interrupt when they should be
      disabled.
      
      This was caused by the data_dma_cb() DMA callback unconditionally
      re-enabling FPGA interrupts even when data dumping is disabled. When
      data dumping was re-enabled, the irq handler would fire while a DMA was
      in progress. The "BUG_ON(priv->inflight != NULL);" during the second
      invocation of the DMA callback caused the system to crash.
      
      To fix the issue, the priv->enabled boolean is moved under the
      protection of the priv->lock spinlock. The DMA callback checks the
      boolean to know whether to re-enable FPGA interrupts before it returns.
      
      Now that it is fixed, the driver keeps FPGA interrupts disabled when it
      expects that they are disabled, fixing the bug.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      6c15d7af
    • I
      carma-fpga: fix lockdep warning · 75ff85a8
      Ira Snyder 提交于
      Lockdep occasionally complains with the message:
      INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
      
      This is caused by calling videobuf_dma_unmap() under spin_lock_irq(). To
      fix the warning, we drop the lock before unmapping and freeing the
      buffer.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      75ff85a8
  3. 25 1月, 2012 1 次提交
  4. 16 11月, 2011 1 次提交
  5. 19 5月, 2011 1 次提交
    • I
      misc: Add CARMA DATA-FPGA Access Driver · c186f0e1
      Ira Snyder 提交于
      This driver allows userspace to access the data processing FPGAs on the
      OVRO CARMA board. It has two modes of operation:
      
      1) random access
      
      This allows users to poke any DATA-FPGA registers by using mmap to map
      the address region directly into their memory map.
      
      2) correlation dumping
      
      When correlating, the DATA-FPGA's have special requirements for getting
      the data out of their memory before the next correlation. This nominally
      happens at 64Hz (every 15.625ms). If the data is not dumped before the
      next correlation, data is lost.
      
      The data dumping driver handles buffering up to 1 second worth of
      correlation data from the FPGAs. This lowers the realtime scheduling
      requirements for the userspace process reading the device.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      c186f0e1