lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 26 Mar 2020 12:05:11 -0400
From:   Vitaly Mayatskih <v.mayatskih@...il.com>
To:     Sanjay R Mehta <Sanju.Mehta@....com>
Cc:     vkoul@...nel.org, gregkh@...uxfoundation.org,
        dan.j.williams@...el.com, Thomas.Lendacky@....com,
        Shyam-sundar.S-k@....com, Nehal-bakulchandra.Shah@....com,
        robh@...nel.org, mchehab+samsung@...nel.org, davem@...emloft.net,
        Jonathan.Cameron@...wei.com, linux-kernel@...r.kernel.org,
        dmaengine@...r.kernel.org
Subject: Re: [PATCH v3 0/3] Add AMD PassThru DMA Engine driver

dmatest measures around 30 MB/s for one ptdma channel in EPYC 7302p
and 11 GB/s for ioatdma channel in Xeon Gold 6248. Is it a driver
limitation?

I run dmatest as modprobe dmatest timeout=10000 transfer_size=512
test_buf_size=1048576 threads_per_chan=1 iterations=1000 run=1 wait=1


On Tue, Jan 21, 2020 at 4:06 AM Sanjay R Mehta <Sanju.Mehta@....com> wrote:
>
> From: Sanjay R Mehta <sanju.mehta@....com>
>
> This patch series adds support for AMD PassThru DMA Engine which
> performs high bandwidth memory-to-memory and IO copy operation and
> performs DMA transfer through queue based descriptor management.
>
> AMD Processor has multiple ptdma device instances and each engine has
> single queue. The driver also adds support for for multiple PTDMA
> instances, each device will get an unique identifier and uniquely
> named resources.
>
> v3:
>         - Fixed the sparse warnings.
>
> v2:
>         - Added controller description in cover letter
>         - Removed "default m" from Kconfig
>         - Replaced low_address() and high_address() functions with kernel
>           API's lower_32_bits & upper_32_bits().
>         - Removed the BH handler function pt_core_irq_bh() and instead
>           handling transaction in irq handler itself.
>         - Moved presetting of command queue registers into new function
>           "init_cmdq_regs()"
>         - Removed the kernel thread dependency to submit transaction.
>         - Increased the hardware command queue size to 32 and adding it
>           as a module parameter.
>         - Removed backlog command queue handling mechanism.
>         - Removed software command queue handling and instead submitting
>           transaction command directly to
>           hardware command queue.
>         - Added tasklet structure variable in "struct pt_device".
>           This is used to invoke pt_do_cmd_complete() upon receiving interrupt
>           for command completion.
>         - pt_core_perform_passthru() function parameters are modified and it is
>           now used to submit command directly to hardware from dmaengine framework.
>         - Removed below structures, enums, macros and functions, as these values are
>           constants. Making command submission simple,
>            - Removed "union pt_function"  and several macros like PT_VERSION,
>              PT_BYTESWAP, PT_CMD_* etc..
>            - enum pt_passthru_bitwise, enum pt_passthru_byteswap, enum pt_memtype
>              struct pt_dma_info, struct pt_data, struct pt_mem, struct pt_passthru_op,
>              struct pt_op,
>            - Removed functions -> pt_cmd_queue_thread() pt_run_passthru_cmd(),
>              pt_run_cmd(), pt_dev_init(), pt_dequeue_cmd(), pt_do_cmd_backlog(),
>              pt_enqueue_cmd(),
>         - Below functions, stuctures and variables moved from ptdma-ops.c
>            - Moved function pt_alloc_struct() to ptdma-pci.c as its used only there.
>            - Moved "struct pt_tasklet_data" structure to ptdma.h
>            - Moved functions pt_do_cmd_complete(), pt_present(), pt_get_device(),
>              pt_add_device(), pt_del_device(), pt_log_error() and its dependent
>              static variables pt_unit_lock, pt_units, pt_rr_lock, pt_rr, pt_error_codes,
>              pt_ordinal  to ptdma-dev.c as they are used only in that file.
>
> Links of the review comments for v2:
> 1. https://lkml.org/lkml/2019/12/27/630
> 2. https://lkml.org/lkml/2020/1/3/23
> 3. https://lkml.org/lkml/2020/1/3/314
> 4. https://lkml.org/lkml/2020/1/10/100
>
>
> Links of the review comments for v1:
>
> 1. https://lkml.org/lkml/2019/9/24/490
> 2. https://lkml.org/lkml/2019/9/24/399
> 3. https://lkml.org/lkml/2019/9/24/862
> 4. https://lkml.org/lkml/2019/9/24/122
>
> Sanjay R Mehta (3):
>   dmaengine: ptdma: Initial driver for the AMD PassThru DMA engine
>   dmaengine: ptdma: Register pass-through engine as a DMA resource
>   dmaengine: ptdma: Add debugfs entries for PTDMA information
>
>  MAINTAINERS                         |   6 +
>  drivers/dma/Kconfig                 |   2 +
>  drivers/dma/Makefile                |   1 +
>  drivers/dma/ptdma/Kconfig           |   7 +
>  drivers/dma/ptdma/Makefile          |  12 +
>  drivers/dma/ptdma/ptdma-debugfs.c   | 237 ++++++++++++
>  drivers/dma/ptdma/ptdma-dev.c       | 448 +++++++++++++++++++++++
>  drivers/dma/ptdma/ptdma-dmaengine.c | 704 ++++++++++++++++++++++++++++++++++++
>  drivers/dma/ptdma/ptdma-pci.c       | 269 ++++++++++++++
>  drivers/dma/ptdma/ptdma.h           | 378 +++++++++++++++++++
>  10 files changed, 2064 insertions(+)
>  create mode 100644 drivers/dma/ptdma/Kconfig
>  create mode 100644 drivers/dma/ptdma/Makefile
>  create mode 100644 drivers/dma/ptdma/ptdma-debugfs.c
>  create mode 100644 drivers/dma/ptdma/ptdma-dev.c
>  create mode 100644 drivers/dma/ptdma/ptdma-dmaengine.c
>  create mode 100644 drivers/dma/ptdma/ptdma-pci.c
>  create mode 100644 drivers/dma/ptdma/ptdma.h
>
> --
> 2.7.4
>


--
wbr, Vitaly

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ