LKML Archive mirror
 help / color / mirror / Atom feed
From: Sinan Kaya <okaya@codeaurora.org>
To: marc.zyngier@arm.com, mark.rutland@arm.com, timur@codeaurora.org,
	devicetree@vger.kernel.org
Cc: dmaengine@vger.kernel.org, cov@codeaurora.org,
	vinod.koul@intel.com, jcm@redhat.com, shankerd@codeaurora.org,
	vikrams@codeaurora.org, eric.auger@linaro.org,
	agross@codeaurora.org, arnd@arndb.de,
	linux-arm-msm@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH V14 0/9] dma: add Qualcomm Technologies HIDMA driver
Date: Fri, 26 Feb 2016 11:21:05 -0500	[thread overview]
Message-ID: <56D07B71.4080209@codeaurora.org> (raw)
In-Reply-To: <1454646882-24369-1-git-send-email-okaya@codeaurora.org>

Hi Marc Zyngier, Mark Rutland;

I'm looking forward to hear your feedback on this series. 

On 2/4/2016 11:34 PM, Sinan Kaya wrote:
> The Qualcomm Technologies HIDMA device has been designed
> to support virtualization technology. The driver has been
> divided into two to follow the hardware design.
> 
> 1. HIDMA Management driver
> 2. HIDMA Channel driver
> 
> Each HIDMA HW consists of multiple channels. These channels
> share some set of common parameters. These parameters are
> initialized by the management driver during power up.
> Same management driver is used for monitoring the execution
> of the channels. Management driver can change the performance
> behavior dynamically such as bandwidth allocation and
> prioritization in the future.
> 
> The management driver is executed in host context and
> is the main management entity for all channels provided by
> the device.
> 
> ------------------------
> What's new
> ------------------------
> - Add back default number of descriptors.
> - Fix compilation error in VFIO ACPI support.
> - Merge the event-channel patch back to DTS and channel driver.
> 
> ------------------------
> Git repos
> ------------------------
> QEMU Support
> https://www.codeaurora.org/cgit/quic/qemu/qemu/log/?h=v2.5.0-sriov
> 
> ------------------------
> History of Changes
> ------------------------
> dma: hidma: Add Device Tree Binding
> Changes from V13: (https://lkml.org/lkml/2016/1/29/672)
> * merged event-channel change.
> 
> dma: add Qualcomm Technologies HIDMA channel driver
> Changes from V13: (https://lkml.org/lkml/2016/1/29/685)
> * add back default descriptor count
> * merged event-channel change.
> 
> dma: qcom_hidma: add support for object hierarchy
> Changes from V13: (https://lkml.org/lkml/2016/1/29/680)
> * initialize platform info data structure.
> * configure DMA by calling of_dma_configure. DMA mask was not set when
> * IOMMU driver is not present for the children devices.
> 
> vfio, platform: add support for ACPI while detecting the reset driver
> Changes from V13: (https://lkml.org/lkml/2016/1/29/679)
> * add forgotten pointer during merge
> * clarify the driver loading rules in commit message
> 
> ------------------------
> FAQ
> ------------------------
> - This doesn't seem to tie into KVM or VFIO, and as far as I can tell
>   there's no mechanism for associating channels with a particular virtual
>   address space (i.e. no configuration of an external or internal IOMMU),
>   nor pinning of guest pages to allow for DMA to occur safely.
> 
>    I'm using VFIO platform driver for this purpose. VFIO platform driver is
>    capable of assigning any platform device to a guest machine with this
>    driver.
> 
> - Are there additional patches, or do you have some userspace that works
>   with this in some limited configuration?
> 
>    No, these are the only patches. We have one patch for the QEMU but from
>    kernel perspective this is it. I just rely on the platform VFIO driver
>    to do the work.
> 
> - How do host and guest communicate, what is the infrastructure, how is
>   HIDMA meant to be used?
> 
>    They don't. Guest machine uses HIDMA channel driver to offload DMA
>    operations in isolation. The guest machine owns the HW registers for the
>    channel. It doesn't need to trap to host for register read/writes etc.
> 
>    All guest machine pages used are assumed to be pinned similar to VFIO
>    PCI. The reason is performance. The IOMMU takes care of the address
>    translation for me.
> 
> - How do host and guest communicate?
>    They don't.
> 
> - How is the integration performed in the hypervisor?
> 
>    Hypervisor has a bunch of channel resources. For each guest machine, the
>    channel gets unbound from the hypervisor. Channels get bind to each VFIO
>    platform device and then control is given to the guest machine.
> 
>    Once the guest machine is shutdown, VFIO driver still owns the channel
>    device. It can assign the device to another guest machine.
> 
> - Does the HYP side requires any context switch (and how is that done)?
> 
>    No communication is needed.
> 
> - What makes it safe?
>    No communication is needed.
> 
> - Does the HYP side requires any context switch (and how is that done)?
> 
>    I don't believe this requires any context-switch -- it's the same as
>    assigning any other platform device other than additional proeprties
>    being controlled in the managament interface.
> 
> - I'm concerned with how this is safe, and with the userspace interface.
>   e.g. if the user wants to up the QoS for a VM, how to they find the
>   right channel in sysfs  to alter?
> 
>    The HW supports changing the QoS values on the flight. In order to
>    locate the object, I'm exporting a chid attribute in sysfs.
> 
>    Each management object has one priority and weight file per channel that
>    is indexed by the channel id read from the DMA object.
>    /sys/devices/platform/hidma-mgmt*/chanops/chan*/priority
>    /sys/devices/platform/QCOM8060:*/chanops/chan*/priority
> 
> - So what is that hypervisor code used for? Is that your reset driver?
> 
>    The HIDMA "management" driver which runs at the hypervisor owns the
>    management HW. Management driver serves two purposes.
> 
>    1. Common bus parameter configuration (could be called reset driver).
>    2. Fine tuning the HW resources on the flight.
> 
> Sinan Kaya (9):
>   dma: qcom_bam_dma: move to qcom directory
>   dma: hidma: Add Device Tree binding
>   dma: add Qualcomm Technologies HIDMA management driver
>   dma: add Qualcomm Technologies HIDMA channel driver
>   dma: qcom_hidma: implement lower level hardware interface
>   dma: qcom_hidma: add debugfs hooks
>   dma: qcom_hidma: add support for object hierarchy
>   vfio, platform: add support for ACPI while detecting the reset driver
>   vfio, platform: add QTI HIDMA reset driver
> 
>  Documentation/ABI/testing/sysfs-platform-hidma     |   9 +
>  .../ABI/testing/sysfs-platform-hidma-mgmt          |  97 +++
>  .../devicetree/bindings/dma/qcom_hidma_mgmt.txt    |  89 ++
>  drivers/dma/Kconfig                                |  11 +-
>  drivers/dma/Makefile                               |   2 +-
>  drivers/dma/qcom/Kconfig                           |  29 +
>  drivers/dma/qcom/Makefile                          |   5 +
>  drivers/dma/{qcom_bam_dma.c => qcom/bam_dma.c}     |   4 +-
>  drivers/dma/qcom/hidma.c                           | 746 +++++++++++++++++
>  drivers/dma/qcom/hidma.h                           | 162 ++++
>  drivers/dma/qcom/hidma_dbg.c                       | 219 +++++
>  drivers/dma/qcom/hidma_ll.c                        | 927 +++++++++++++++++++++
>  drivers/dma/qcom/hidma_mgmt.c                      | 407 +++++++++
>  drivers/dma/qcom/hidma_mgmt.h                      |  39 +
>  drivers/dma/qcom/hidma_mgmt_sys.c                  | 295 +++++++
>  drivers/vfio/platform/reset/Kconfig                |   9 +
>  drivers/vfio/platform/reset/Makefile               |   2 +
>  .../vfio/platform/reset/vfio_platform_amdxgbe.c    |   3 +-
>  .../platform/reset/vfio_platform_calxedaxgmac.c    |   3 +-
>  .../vfio/platform/reset/vfio_platform_qcomhidma.c  |  99 +++
>  drivers/vfio/platform/vfio_platform_common.c       |  80 +-
>  drivers/vfio/platform/vfio_platform_private.h      |  41 +-
>  22 files changed, 3235 insertions(+), 43 deletions(-)
>  create mode 100644 Documentation/ABI/testing/sysfs-platform-hidma
>  create mode 100644 Documentation/ABI/testing/sysfs-platform-hidma-mgmt
>  create mode 100644 Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt
>  create mode 100644 drivers/dma/qcom/Kconfig
>  create mode 100644 drivers/dma/qcom/Makefile
>  rename drivers/dma/{qcom_bam_dma.c => qcom/bam_dma.c} (99%)
>  create mode 100644 drivers/dma/qcom/hidma.c
>  create mode 100644 drivers/dma/qcom/hidma.h
>  create mode 100644 drivers/dma/qcom/hidma_dbg.c
>  create mode 100644 drivers/dma/qcom/hidma_ll.c
>  create mode 100644 drivers/dma/qcom/hidma_mgmt.c
>  create mode 100644 drivers/dma/qcom/hidma_mgmt.h
>  create mode 100644 drivers/dma/qcom/hidma_mgmt_sys.c
>  create mode 100644 drivers/vfio/platform/reset/vfio_platform_qcomhidma.c
> 


-- 
Sinan Kaya
Qualcomm Technologies, Inc. on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

  parent reply	other threads:[~2016-02-26 16:21 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-05  4:34 [PATCH V14 0/9] dma: add Qualcomm Technologies HIDMA driver Sinan Kaya
2016-02-05  4:34 ` [PATCH V14 1/9] dma: qcom_bam_dma: move to qcom directory Sinan Kaya
2016-03-11  2:13   ` Vinod Koul
2016-02-05  4:34 ` [PATCH V14 2/9] dma: hidma: Add Device Tree binding Sinan Kaya
2016-03-11  2:16   ` Vinod Koul
2016-02-05  4:34 ` [PATCH V14 3/9] dma: add Qualcomm Technologies HIDMA management driver Sinan Kaya
2016-03-11  2:16   ` Vinod Koul
2016-02-05  4:34 ` [PATCH V14 4/9] dma: add Qualcomm Technologies HIDMA channel driver Sinan Kaya
2016-03-11  2:17   ` Vinod Koul
2016-02-05  4:34 ` [PATCH V14 5/9] dma: qcom_hidma: implement lower level hardware interface Sinan Kaya
2016-03-11  2:06   ` Vinod Koul
2016-03-11  3:08     ` Okaya
2016-03-11 16:02     ` Sinan Kaya
2016-03-11 16:32       ` Vinod Koul
2016-03-11 16:44         ` Sinan Kaya
2016-03-11 19:29           ` Sinan Kaya
2016-03-11 21:59             ` Sinan Kaya
2016-03-13 16:00               ` Vinod Koul
2016-03-14 13:53                 ` Sinan Kaya
2016-03-13 15:59             ` Vinod Koul
2016-03-14 13:56               ` Sinan Kaya
2016-02-05  4:34 ` [PATCH V14 6/9] dma: qcom_hidma: add debugfs hooks Sinan Kaya
2016-02-05  4:34 ` [PATCH V14 7/9] dma: qcom_hidma: add support for object hierarchy Sinan Kaya
2016-02-05  4:34 ` [PATCH V14 8/9] vfio, platform: add support for ACPI while detecting the reset driver Sinan Kaya
2016-02-26 16:24   ` Sinan Kaya
2016-02-26 17:15   ` Eric Auger
2016-02-26 19:21     ` Sinan Kaya
2016-03-02 18:34     ` Sinan Kaya
2016-03-03 23:14       ` Eric Auger
2016-03-04  5:20         ` Sinan Kaya
2016-03-07  4:09           ` Eric Auger
2016-03-07 15:30             ` Sinan Kaya
2016-03-08  4:46               ` Eric Auger
2016-03-08  5:07                 ` Sinan Kaya
2016-03-08 15:44                   ` Sinan Kaya
2016-02-05  4:34 ` [PATCH V14 9/9] vfio, platform: add QTI HIDMA " Sinan Kaya
2016-02-26 17:52   ` Eric Auger
2016-02-26 19:05     ` Sinan Kaya
2016-02-08 10:14 ` [PATCH V14 0/9] dma: add Qualcomm Technologies HIDMA driver Christoffer Dall
2016-02-08 14:24   ` Sinan Kaya
2016-02-08 17:00     ` Christoffer Dall
2016-02-26 16:21 ` Sinan Kaya [this message]
2016-02-26 16:52   ` Timur Tabi
2016-03-02 18:40     ` Sinan Kaya
2016-03-03  3:44       ` Vinod Koul
2016-03-03 15:22         ` Sinan Kaya

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56D07B71.4080209@codeaurora.org \
    --to=okaya@codeaurora.org \
    --cc=agross@codeaurora.org \
    --cc=arnd@arndb.de \
    --cc=cov@codeaurora.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=eric.auger@linaro.org \
    --cc=jcm@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=shankerd@codeaurora.org \
    --cc=timur@codeaurora.org \
    --cc=vikrams@codeaurora.org \
    --cc=vinod.koul@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).