Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754586AbbERS4t (ORCPT ); Mon, 18 May 2015 14:56:49 -0400 Received: from mail-la0-f66.google.com ([209.85.215.66]:34987 "EHLO mail-la0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754320AbbERS4s (ORCPT ); Mon, 18 May 2015 14:56:48 -0400 From: Dmitry Kalinkin To: linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org Cc: Martyn Welch , Manohar Vanga , Greg Kroah-Hartman , Igor Alekseev , Dmitry Kalinkin Subject: [PATCH 0/6] vme: DMA improvements Date: Mon, 18 May 2015 21:56:27 +0300 Message-Id: <1431975393-19735-1-git-send-email-dmitry.kalinkin@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2270 Lines: 48 The first item in this submission documents previously introduced vme_master_mmap() call. Following, there are three fixes for the tsi148 driver's DMA. There was one bug that rendered it imposible to use DMA lists with more than one item. The other was related to the place where dma_map_single was called on the first DMA descriptor in the DMA list. The last bug was about DMA transfer not stopping at interruption by signal, which is a possible DoS attack vector. I also made an attempt to fix the same issue in the ca91cx42 driver. I don't have access to this hardware to test, so this is based only on my understanding of the datasheet (checked ca91c042's errata as well). A new /sys/bus/vme/dma0 device with a new ioctl for making DMA transfers was introduced in vme_user driver. The logic of the function is similar to the one found in similar existing drivers. One question that I had while implementing this feature was whether we should keep vme_dma_attr objects until vme_dma_list_exec() call. API doesn't specify this, the existing vme bridge drivers copy all information from attributes during vme_dma_list_add(). So for simplicity this implementation frees vme_dma_attr's before vme_dma_list_exec() is done. A simple test against AVM16 board displays speeds around 45 MiB/s for A32/D32 reads for both BLT and MBLT (with MBLT being slightly faster). Dmitry Kalinkin (6): Documentation: mention vme_master_mmap() in VME API vme: tsi148: fix DMA lists longer that one item vme: tsi148: fix first DMA item mapping vme: stop DMA transfer on interruption staging: vme_user: refactor llseek to switch(){} staging: vme_user: provide DMA functionality Documentation/vme_api.txt | 6 ++ drivers/staging/vme/devices/vme_user.c | 188 +++++++++++++++++++++++++++++++-- drivers/staging/vme/devices/vme_user.h | 11 ++ drivers/vme/bridges/vme_ca91cx42.c | 15 ++- drivers/vme/bridges/vme_tsi148.c | 42 +++++--- 5 files changed, 237 insertions(+), 25 deletions(-) -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/