[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help: Information required for AXI DMA passthrough for PL masters in ZCU102 dev kit


  • To: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
  • From: Brian Woods <brian.woods@xxxxxxxxxx>
  • Date: Thu, 13 May 2021 08:13:17 -0700
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.62.198) smtp.rcpttodomain=xen.org smtp.mailfrom=xilinx.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=xilinx.com; dkim=none (message not signed); arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TZx3Rp6q5hBF7nQVjtvAERPp5rfvsruiNuQzZyIRM0A=; b=a2yTeo+YOhI93YF33Eq0okilFGRdViiDX1BVbjScwxZUlpkZR5uAkkvQQHz8+1NeZmnVHKsmynWYNcTFPfLq0w0jYUVae9xySX5MKygegsrZgl4n6sGwlMPb4Ef6CThaISs7UTo7XFlNRpINFenMk1Pmr5iFWR0A9VyhXmYNOHOMyE+0Tpzsm+Q8V336HkPfMrsvF16iYbuH4YpkPx9GlX63PbREtBXiA2LkNZBODOL42Xnz+yv+ZE3w1+iMEt/BgkspCuiMAJwXthH8l6NvTpPbLaF3cRhDsFw4O0VnXAQfcaTEDE6EpWcU4oQPBRI6y2s8BnTxaIrtf6w+cvrNpA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BNUIHz+tLjNf0r9+LV7VWPubqcmy/ZZdjypqrIfD41r18NEXJQdi8FEr/WUg3aE/xDn/s77UR6DE22lc/qQwOmD74wSF7iRvJSMopXKIDyuhZWZ1rquBspT1H53HyQFRTNElOxGQDDX6pfOSRo70DMd0Ar7gHvBnDl2CBas8DUsrfakZwfB4xIjncHZRJNHAGWF1wuNQ5zdEuxYpemErl7ebZAVzdX2I6oBi7YE9HcbAte8MyO5OzbviuL/Ezt3RIiRvZfT73/EXQZOnxXmkmHdu4Ahj0QY2f1cxOKM0GK/ZtkNy1Q2qu5SRnq7wTTQ+60U+2ergdOqMqnKOZZngpQ==
  • Cc: Julien Grall <julien@xxxxxxx>, Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, "xen-users@xxxxxxxxxxxxxxxxxxxx" <xen-users@xxxxxxxxxxxxxxxxxxxx>, <brian.woods@xxxxxxxxxx>, <fnuv@xxxxxxxxxx>, <edgari@xxxxxxxxxx>, <bwoods288@xxxxxxxxx>
  • Delivery-date: Sat, 15 May 2021 13:47:14 +0000
  • List-id: Xen user discussion <xen-users.lists.xenproject.org>

Prem,

Sorry for the late email, I've been under the weather and have been away
from my computer.  In the Zynq SOCs this is how the SMMU IDs in PL are
calculated:

14-10: TBU bits
9-6: Master ID bits
5-0: AXI ID bits

https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf
To look up the TBU value, see UG1085 and look for the "System Masters"
table which is table 16-4 on page 409.

For the master ID, see UG1085 and look for the "Master IDs List" table
which is table 16-13 on page 429.

The AXI ID bits is a bit trickery since it's going to be out in PL.
See: https://www.xilinx.com/support/answers/69447.html
With SmartConnect all the AXI IDs are 0, they aren't passed on.  There
are work arounds.  Here's a couple of examples (with example numbers):

AXI master -> PS slave port 0
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000001

AXI master -> SmartConnect -> PS slave port 0
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000000

AXI master -> SmartConnect -> PS slave port 0
                           -> PS slave port 1
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000000
        TBU bits: 00001, Master ID bits: 0001, AXI ID bits: 0000000

Two AXI masters -> SmartConnect -> PS slave port 0
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000000 (both share)

Two AXI masters -> SmartConnect -> PS slave port 0
                                -> PS slave port 1
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000000 (both share)
        TBU bits: 00001, Master ID bits: 0001, AXI ID bits: 0000000 (both share)

Two AXI masters -> sideband -> SmartConnect -> sideband -> PS slave port 0
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000001 (master #1)
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000002 (master #2)

Two AXI masters -> sideband -> SmartConnect -> sideband -> PS slave port 0
                                                        -> PS slave port 1
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000001 (master #1)
        TBU bits: 00001, Master ID bits: 0001, AXI ID bits: 0000001 (master #1)
        TBU bits: 00001, Master ID bits: 0000, AXI ID bits: 0000002 (master #2)
        TBU bits: 00001, Master ID bits: 0001, AXI ID bits: 0000002 (master #2)

The "sideband -> SmartConenct -> sideband" can also be functionally
replaced with "AXI Interconnect" to my knowledge.  So the AXI ID bits are
fairly simple but with some caveats.

You can also read in the SMMU faults from Xen and use:
https://static.docs.arm.com/ihi0062/dc/IHI0062D_c_system_mmu_architecture_specification.pdf
to decode them. That should tell you the SMMU IDs as well.

Let me know if this isn't clear or you have any other questions.

Brian

On Mon, May 10, 2021 at 06:49:07PM -0700, Stefano Stabellini wrote:
> On Mon, 10 May 2021, Julien Grall wrote:
> > On 26/04/2021 15:41, Prem Harikrishnan wrote:
> > > Hello everyone,
> > 
> > Hi Prem,
> > 
> > > I am using the latest version of the xilinx mpsoc zcu102 development board
> > > and i am trying to create a barematal application that uses the AXI DMA on
> > > the programmable logic, using the scatter gather example from the xilinx
> > > repository. This works perfectly well for the baremetal application. The
> > > diagram below represents the information flow. The AXI DMA and the AXI 
> > > data
> > > FIFO are in the Programable logic (FPGA). This AXI DMA is out of the box 
> > > IP
> > > from Vivado and uses a single channel (Does not use AxUSER) which means 
> > > the
> > > AXI ID cannot manually be set.
> > > 
> > > 
> > > Now i want to make this as a baremetal hypervisor guest, in future this 
> > > will
> > > be replaced by a custom IP with cache colouring enabled. I want to pass
> > > through the AXI DMA in the PL. (Not to be used by Dom0)
> > > 
> > > 
> > > I followed this tutorial Baremetal + DomU
> > > <https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842536/XEN+EL1+Baremetal+DomU>
> > > guest changed the base address to 0x4000000,(1GB allocated to Dom-0) to
> > > create my EL1 binary. I used Petalinux 2020.2 to generate my linux, xen
> > > image and use tftp to boot.
> > > 
> > >  From what i understand from the xilinx tutorials Xen+and+PL+Masters
> > > <https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842066/Xen+and+PL+Masters>
> > > section 3 and MPSOC SMMU
> > > <https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841981/Zynq+UltraScale+MPSOC+SMMU>
> > > section 4, stream ids are required by the SMMU to get the correct address
> > > translation.
> > > 
> > > I am still unable to figure out how to get the iommu property for my AXI 
> > > DMA
> > > and how to set the dtdev config for my hypervisor guest.
> > > 
> > > 
> > > I can also see some new updates with the XEN 2020.1 and 2020.2 releases
> > > which i can be useful to my application
> > > 
> > >   *   1:1 memory mappings for Xen virtual machines, enabling device
> > >     assignments without SMMU
> > >   *
> > >       Static assignment of PL blocks, including bus-mastering blocks, to
> > >     Xen virtual machines
> > >   *   Support for PL Device Passthrough to DomU in Xen
> > 
> > You are usiong a version of Xen that has been customised by Xilinx. So I 
> > would
> > recommend to contact them directly.
> > 
> > I have CCed Stefano who might be able to help you.
> 
> Hi Julien,
> 
> Many thanks for CC'ing me, I missed the email.
> 
> 
> Hi Prem,
> 
> Let me CC a few people that might be able to help.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.