[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: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
  • From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
  • Date: Mon, 21 Jun 2021 10:19:31 -0700
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.62.198) smtp.rcpttodomain=evoleotech.com 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=SphoMi1J51jdT9K/koeOFh/KUbF54cdhMKdVp5GGBoA=; b=HvCZOYw3FAzp7qGiMYaSWur8k1yetJGaRlrteGoscHsapcSy42OKzGcvAXoAGC0Hb16jQberdQ7bu5jFGEQe417VC5qk680lElLbo2A6Uc5yNrJPTAVU3vP2lAk2gBgC3xSYJyfBMe1tbcgyV6If6Vy8CtIDS0ok8QiZAlAwxEGOjL4MDoe8mm26E1SVkxUqLo8col+vWMstdPvqKHSi6o7xbXPsNajV/b4K1eMvIbHwJp1gh479yWfls84qI55x8IerPm8fB4CK155gAE4RIIzl0N7eHwKOkfOf31vtbh+ybSwNr0f+MVx9GbqsMy24WjxjkyajVR1jb19dQmXvhg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C4aCm16wlyXfXvAa198i2NbH8WgqMHBy+uunqr/abzk2gEVj9vUyek1Fm6Yb6rVR+uoS77s6J4DFNG2u8CHZ5u37dHeXnQK2IxIP2tYwbOoU30b0oV1xPT0VnL0NNSuIB7WyY/x3PojGnZk+Xjy2Dzr3y/r8CB/LHKSqu3XBPSnx35EWppBRO8wzrf2x3M/aMJmLbfo9bHrxV4e8UaUziD2HNyUy6XjTwakVFCp/gWgNm3Y4R1bT5XsZtn+0CP+DRvYFR82td02VRFHuqLzObTeNYr63L40ibB9YCnSmfH6v24VcbsalyoPZ8aRUXK3ues02MvJ0YOlk9Da5VybJqQ==
  • Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>, "xen-users@xxxxxxxxxxxxxxxxxxxx" <xen-users@xxxxxxxxxxxxxxxxxxxx>, "JOVITAC@xxxxxxxxxx" <JOVITAC@xxxxxxxxxx>, "fnuv@xxxxxxxxxx" <fnuv@xxxxxxxxxx>, "brian.woods@xxxxxxxxxx" <brian.woods@xxxxxxxxxx>
  • Delivery-date: Mon, 21 Jun 2021 17:20:39 +0000
  • List-id: Xen user discussion <xen-users.lists.xenproject.org>

Excellent! Thanks for letting me know.


On Fri, 18 Jun 2021, Prem Harikrishnan wrote:
> Hi Stefano,
> 
> Thank you very much for your detailed reply.  I now have xen booting from 
> qspi, i followed your instructions, the only additional thing i
> had to change is the boot script offset in petalinux u boot config. Thank you 
> again for your support.
> 
> Best Regards,
> Prem 
> 
> ___________________________________________________________________________________________________________________________________________
> From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> Sent: Tuesday, June 15, 2021 22:17
> To: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> Cc: Stefano Stabellini <stefanos@xxxxxxxxxx>; xen-users@xxxxxxxxxxxxxxxxxxxx 
> <xen-users@xxxxxxxxxxxxxxxxxxxx>; JOVITAC@xxxxxxxxxx
> <JOVITAC@xxxxxxxxxx>; fnuv@xxxxxxxxxx <fnuv@xxxxxxxxxx>; 
> brian.woods@xxxxxxxxxx <brian.woods@xxxxxxxxxx>
> Subject: Re: Help: Information required for AXI DMA passthrough for PL 
> masters in ZCU102 dev kit  
> We don't have a recipe ready. It is not something we test. However I
> think it should be possible.
> 
> The first step would be try to generate a BOOT.BIN for QSPI booting and
> write it to QSPI. The goal is to get to the u-boot prompt, with
> everything booted from QSPI. Then the next step is to add Xen, Linux,
> the DTB and Linux ramdisk. (Of course if you are OK with loading Xen and
> the other binaries from somewhere else like the SD card then it is going
> to work as is.)
> 
> You should be able to write each binary to QSPI as separate partitions.
> 
> At that point, you are only missing a boot.scr that can load them and
> boot. ImageBuilder supports custom u-boot load commands by setting the
> LOAD_CMD variable. In this case you'd need to set LOAD_CMD to something
> like "sf read", but given that the other command arguments are not
> filenames, ImageBuilder won't be able to handle it anyway.
> 
> But you can take an ImageBuilder-generated boot.source, substitute the
> "tftpb" commands with the appropriate "sf read" commands and call
> mkimage to get a boot.scr.
> 
> Now you should be able to run boot.scr from the u-boot prompt and load
> everything from QSPI.
> 
> This is some relevant info:
> 
> https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842465/U-Boot+QSPI+Driver
> 
> 
> I know it is a bit complex but I think it should work OK.
> 
> 
> 
> On Tue, 15 Jun 2021, Prem Harikrishnan wrote:
> > Hi Stefano,
> >
> > Is it possible to boot XEN from QSPI? Is there an image builder script 
> > already available to generate boot.scr? Please let me know.
> > Thanks and Best Regards,
> > Prem
> >
> >__________________________________________________________________________________________________________________________________________
> _
> > From: Xen-users <xen-users-bounces@xxxxxxxxxxxxxxxxxxxx> on behalf of Prem 
> > Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> > Sent: Tuesday, June 1, 2021 18:07
> > To: Mubin Usman Sayyed <MUBINUSM@xxxxxxxxxx>; Stefano Stabellini 
> > <stefanos@xxxxxxxxxx>
> > Cc: xen-users@xxxxxxxxxxxxxxxxxxxx <xen-users@xxxxxxxxxxxxxxxxxxxx>; Jovita 
> > Castelino <JOVITAC@xxxxxxxxxx>
> > Subject: Re: Help: Information required for AXI DMA passthrough for PL 
> > masters in ZCU102 dev kit  
> > Hi Stefano and Mubin,
> >
> > Thank you very much for helping me setup up FreeRTOS and baremetal guests, 
> > everything works as expected and I also get expected
> performance
> > in both baremetal and hypervisor guests. Thank you again for your prompt 
> > support during the past few weeks.
> >
> > Best Regrards,
> > Prem
> >
> >__________________________________________________________________________________________________________________________________________
> _
> > From: Mubin Usman Sayyed <MUBINUSM@xxxxxxxxxx>
> > Sent: Tuesday, June 1, 2021 05:38
> > To: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>; Stefano 
> > Stabellini <stefanos@xxxxxxxxxx>
> > Cc: xen-users@xxxxxxxxxxxxxxxxxxxx <xen-users@xxxxxxxxxxxxxxxxxxxx>; Jovita 
> > Castelino <JOVITAC@xxxxxxxxxx>
> > Subject: RE: Help: Information required for AXI DMA passthrough for PL 
> > masters in ZCU102 dev kit  
> >
> > In case of FreeRTOS,  you need to use APIs from FreeRTOS port for interrupt 
> > handling
> >  
> > (https://github.com/Xilinx/embeddedsw/blob/master/ThirdParty/bsp/freertos10_xilinx/examples/freertos_intr_example.c#L192
> >  and line 194).
> > Please make sure that you are taking care of that in DMA interrupt example .
> >
> >  
> >
> > Thanks,
> >
> > Mubin
> >
> >  
> >
> > From: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> > Sent: Tuesday, June 1, 2021 2:48 AM
> > To: Stefano Stabellini <stefanos@xxxxxxxxxx>
> > Cc: xen-users@xxxxxxxxxxxxxxxxxxxx; Jovita Castelino <JOVITAC@xxxxxxxxxx>; 
> > Mubin Usman Sayyed <MUBINUSM@xxxxxxxxxx>
> > Subject: Re: Help: Information required for AXI DMA passthrough for PL 
> > masters in ZCU102 dev kit
> >
> >  
> >
> >  
> >
> > Hi Stefano and Mubin,
> >
> > Thank you very much for your replies.
> >
> > @Stefano Stabellini Sorry to bother you again, and thank you for pointing 
> > this out, the TTC0 is by default enabled for FreeRTOS to
> generate
> > ticks, although this says only for R5 core, i would have never figured this 
> > out. As soon as I added the irqs and iomem and gave a xen
> > passthrough in the xen.dtsi as you have suggested, FreeRTOS guest started 
> > working for other peripherals except for my DMA (FreeRTOS guest
> > does not work with interrupt and DMA).
> >
> >  
> >
> > I can see my DMA is enabled because i have LEDs configured to blink for 
> > every interrupt I get from the PL. I don't see my interrupts
> being
> > processed, but when I destroy the guest, I get this output periodically 
> > when an interrupt occurs.
> >
> >  
> >
> > (XEN) smmu: /smmu@fd800000: Unexpected global fault, this could be serious
> > (XEN) smmu: /smmu@fd800000:     GFSR 0x80000002, GFSYNR0 0x00000002, 
> > GFSYNR1 0x00000e80, GFSYNR2 0x00000000
> >
> > (XEN) smmu: /smmu@fd800000: Unexpected global fault, this could be serious
> > (XEN) smmu: /smmu@fd800000:     GFSR 0x80000002, GFSYNR0 0x00000002, 
> > GFSYNR1 0x00000e80, GFSYNR2 0x00000000
> >
> > (XEN) smmu: /smmu@fd800000: Unexpected global fault, this could be serious
> > (XEN) smmu: /smmu@fd800000:     GFSR 0x80000002, GFSYNR0 0x00000002, 
> > GFSYNR1 0x00000e80, GFSYNR2 0x00000000
> >
> >  
> >
> > From section 3.6 of the wiki 
> > https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842066/Xen+and+PL+Masters
> >
> > Xen and PL Masters - Xilinx Wiki - Confluence
> >
> > 3.4 Stream IDs in the Device Tree. For Xen based systems the stream IDs of 
> > PL masters must be added to the Linux Dom0 device tree.
> > Automated device tree generation does not generate the stream IDs for the 
> > PL masters so that the user must add them into the device tree
> > manually.
> >
> > xilinx-wiki.atlassian.net
> >
> > The fault indicates an unidentified stream ID has been received by the SMMU 
> > as shown in the GFSR register. The GFSYNR1 register contains
> > the stream ID that was unidentified. A stream ID of 0xE80 was unidentified 
> > in the above fault.
> >
> >  
> >
> > But I think i have already added that in my smmu and iommu in xen.dtsi 
> > because my baremetal application works well as expected. I have
> > attached my xen.dtsi, system.dtsi, baremetal.cfg(working) and 
> > freertos.cfg(not working).
> >
> > What could I be missing here? Do I have to enable the ttc0 in the device 
> > tree?
> >
> > Also what does (XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 99990 
> > KHz mean when XEN boots up?
> >
> > Thanks, I look forward for your reply.
> >
> >  
> >
> > Best Regards,
> >
> > Prem
> >
> >  
> >
> >  
> >
> >
>
> >________________________________________________________________________________________________________________________________________
> >
> >
> > From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > Sent: Friday, May 28, 2021 20:43
> > To: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>; 
> > xen-users@xxxxxxxxxxxxxxxxxxxx <xen-users@xxxxxxxxxxxxxxxxxxxx>;
> JOVITAC@xxxxxxxxxx
> > <JOVITAC@xxxxxxxxxx>; MUBINUSM@xxxxxxxxxx <MUBINUSM@xxxxxxxxxx>
> > Subject: Re: Help: Information required for AXI DMA passthrough for PL 
> > masters in ZCU102 dev kit
> >
> >  
> >
> > From the gpa address, it looks like FreeRTOS is trying to access the TTC
> > timer? If you look at device tree, the corresponding node is
> > timer@ff110000.
> >
> > If FreeRTOS is configured to access the TTC timer, then you need to
> > assign it to it. Did you assign the TTC timer to the FreeRTOS domU by
> > any chance?
> >
> > You can do that by adding:
> >
> > irqs = [ 68, 69, 70 ]
> > iomem = [ "0xff110,1" ]
> >
> >
> > On Fri, 28 May 2021, Prem Harikrishnan wrote:
> > > Hi Stefano,
> > > Thanks for your reply. I am pretty sure I followed the steps you 
> > > mentioned below to run the FreeRTOS hello world example. I already
> added
> > > printfs and i can see XEN cannot start the scheduler and i get the 
> > > following out put on XEN.
> > >
> > > Parsing config from freertos.cfg (XEN) Dom2 colors: [ 8 ]
> > > (XEN) memory.c:255:d0v0 Could not allocate order=9 extent: id=2 
> > > memflags=0xc0 (0 of 64)
> > > (XEN) memory_map:add: dom2 gfn=ff010 mfn=ff010 nr=1 cache=0
> > > (XEN) sched_null.c:344: 1 <-- d2v0
> > > (XEN) traps.c:1973:d2v0 HSR=0x93820007 pc=0x00000040012b08 gva=0xff11000c 
> > > gpa=0x000000ff11000c
> > >
> > >
> > > I also see that according to this article
> > > https://forums.xilinx.com/t5/Adaptable-Advantage-Blog/Partner-FreeRTOS-as-a-Xen-Virtual-Machine/ba-p/947030
> > > [52662iFAD1733707609204?v=v2]
> > > Partner: FreeRTOS as a Xen Virtual Machine - Community Forums
> > > Contributed by Jeff Kubascik, Embedded Systems Engineer at DornerWorks 
> > > What is FreeRTOS? The FreeRTOS kernel is a market leading
> > real-time
> > > operating system for embedded systems. As embedded applications grow in 
> > > complexity, there is a growing need for a lightweight kernel
> > > capable of task scheduling...
> > > forums.xilinx.com
> > > FreeRTOS does not run out of the box for XEN, although the article is 2 
> > > years old, I am not sure if there are any updates on this after
> > > that. Can you please confirm?
> > >
> > > Thanks and Best Regards,
> > > Prem
> > >
> >>_________________________________________________________________________________________________________________________________________
> _
> > _
> > > From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > > Sent: Friday, May 28, 2021 02:51
> > > To: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> > > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>; 
> > > xen-users@xxxxxxxxxxxxxxxxxxxx <xen-users@xxxxxxxxxxxxxxxxxxxx>;
> > JOVITAC@xxxxxxxxxx
> > > <JOVITAC@xxxxxxxxxx>; MUBINUSM@xxxxxxxxxx <MUBINUSM@xxxxxxxxxx>
> > > Subject: Re: Help: Information required for AXI DMA passthrough for PL 
> > > masters in ZCU102 dev kit  
> > > +Mubin
> > >
> > >
> > > Hi Prem,
> > >
> > > Did you make sure to build FreeRTOS as "hypervisor guest"? I think
> > > FreeRTOS is built to run at EL3 by default so if that is not changed
> > > there are errors when run on any hypervisor. It is possible to build
> > > FreeRTOS to run on Xen but it requires a couple of manual steps:
> > >
> > > - source settings64.sh from Vitis builds
> > > - xsct
> > > - set WORKSPACE .
> > > - setws -switch $WORKSPACE
> > > - app create -name freertos-hello-world -template {FreeRTOS Hello World} 
> > > -proc psu_cortexa53_0 -hw {xsa path} -os freertos10_xilinx
> > > - bsp config stdin psu_uart_1
> > > - bsp config stdout psu_uart_1
> > > - bsp config hypervisor_guest true
> > > - Go to application source path and modify the linker script start 
> > > address to 0x40000000,
> > > - app build -name freertos-hello-world
> > > - Run command to generate BIN file from executable 
> > > "aarch64-linux-gnu-objcopy -O binary --gap-fill 0  <elf path> BOOT.BIN"
> > >
> > > The resulting BOOT.BIN can be started a Xen DomU guest. Mubin, CC'ed,
> > > might be able to provide additional info.
> > >
> > >
> > >
> > > On Thu, 27 May 2021, Prem Harikrishnan wrote:
> > > > Hi Stefano,
> > > > Sorry to bother you again.
> > > > I am currently trying to run my custom IP which sends periodic dma 
> > > > interrupts to the PS with cache coloring enabled. I have now
> > compiled
> > > my
> > > > guest running with FreeRTOS and it generates a trap.
> > > > Petalinux and VITIS IDE Version is 2020.2.
> > > >
> > > > Please find the log attached. After the trap occurs, for every 
> > > > interrupt XEN prints (XEN) smmu: /smmu@fd800000: Unhandled context
> > fault:
> > > > fsr=0x402, iova=0x41000000, fsynr=0x12, cb=1
> > > >
> > > > root@pilbara:/etc/xen# xl create -c apu_freertos.cfg Parsing config 
> > > > from apu_freertos.cfg
> > > > (XEN) Dom1 colors: [ 8 ]
> > > > (XEN) memory.c:255:d0v0 Could not allocate order=9 extent: id=1 
> > > > memflags=0xc0 (0 of 64)
> > > > (XEN) memory_map:add: dom1 gfn=ff010 mfn=ff010 nr=1 cache=0
> > > > (XEN) memory_map:add: dom1 gfn=a0010 mfn=a0010 nr=1 cache=0
> > > > (XEN) smmu: /smmu@fd800000: d1: p2maddr 0x000000087f554000
> > > > (XEN) sched_null.c:344: 1 <-- d1v0
> > > > (XEN) traps.c:1973:d1v0 HSR=0x93820007 pc=0x00000040013188 
> > > > gva=0xff11000c gpa=0x000000ff11000c
> > > > (XEN) smmu: /smmu@fd800000: Unhandled context fault: fsr=0x402, 
> > > > iova=0x41000000, fsynr=0x12, cb=1
> > > > (XEN) smmu: /smmu@fd800000: Unhandled context fault: fsr=0x402, 
> > > > iova=0x41000000, fsynr=0x12, cb=1
> > > > (XEN) smmu: /smmu@fd800000: Unhandled context fault: fsr=0x402, 
> > > > iova=0x41000000, fsynr=0x12, cb=1
> > > > (XEN) smmu: /smmu@fd800000: Unhandled context fault: fsr=0x402, 
> > > > iova=0x41000000, fsynr=0x12, cb=1
> > > >
> > > > The same application works as expected without FreeRTOS, i.e as a 
> > > > baremetal guest. I look forward for your comment on this.
> > > >
> > > > Although i see performance degradation, normally i can measure delta 
> > > > time for each interrupt configured to 1ms (without XEN), with
> XEN
> > > for
> > > > the same measurement shows 16 ms for each interval (but the performance 
> > > > is not a priority for now).
> > > > Thanks and Best Regards,
> > > > Prem
> > > >
> >>>________________________________________________________________________________________________________________________________________
> _
> > _
> > > _
> > > > From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > > > Sent: Tuesday, May 18, 2021 20:09
> > > > To: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> > > > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>; 
> > > > xen-users@xxxxxxxxxxxxxxxxxxxx <xen-users@xxxxxxxxxxxxxxxxxxxx>;
> > > JOVITAC@xxxxxxxxxx
> > > > <JOVITAC@xxxxxxxxxx>
> > > > Subject: Re: Help: Information required for AXI DMA passthrough for PL 
> > > > masters in ZCU102 dev kit  
> > > > Great to hear! Thank you for reporting back.
> > > >
> > > >
> > > > On Tue, 18 May 2021, Prem Harikrishnan wrote:
> > > > > Dear Stefano,
> > > > > Thank you very much for your guidance and support. I finally fixed 
> > > > > the issue. I made an error in base memory address like you
> pointed
> > > > out.
> > > > > I actually modified the base address correctly to 0x40000000 but the 
> > > > > default C code had an additional offset of 0x1100000 , and the
> > > DomU
> > > > > memory allocated was only 8MB. I either had to change the offset or 
> > > > > allocate more memory to the DomU guest which i missed until you
> > > > pointed
> > > > > out. Additionally i had to set to AxPROT bits to 0x2 in Vivado and 
> > > > > the SMID required is 0xE80.
> > > > >
> > > > > Thanks again i was able get my custom IP also working as an AXI 
> > > > > master from PL.
> > > > >
> > > > > Best Regards,
> > > > > Prem
> > > > >
> >>>>_______________________________________________________________________________________________________________________________________
> _
> > _
> > > _
> > > > _
> > > > > From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > > > > Sent: Tuesday, May 18, 2021 02:35
> > > > > To: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> > > > > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>; Brian Woods 
> > > > > <brian.woods@xxxxxxxxxx>; Julien Grall <julien@xxxxxxx>;
> Stefano
> > > > > Stabellini <sstabellini@xxxxxxxxxx>; xen-users@xxxxxxxxxxxxxxxxxxxx 
> > > > > <xen-users@xxxxxxxxxxxxxxxxxxxx>; fnuv@xxxxxxxxxx
> > > <fnuv@xxxxxxxxxx>;
> > > > > edgari@xxxxxxxxxx <edgari@xxxxxxxxxx>; bwoods288@xxxxxxxxx 
> > > > > <bwoods288@xxxxxxxxx>; Renato Costa Amorim
> <renato.amorim@xxxxxxxxxxxxxx>;
> > > > > JOVITAC@xxxxxxxxxx <JOVITAC@xxxxxxxxxx>
> > > > > Subject: Re: Help: Information required for AXI DMA passthrough for 
> > > > > PL masters in ZCU102 dev kit  
> > > > > Your configuration looks correct as far as I can tell.
> > > > >
> > > > > You need dtdev because it triggers the SMMU configuration for your PL
> > > > > block. You don't need device_tree because your baremetal application 
> > > > > is
> > > > > not going to read it, but it is not going to cause any issues either.
> > > > >
> > > > > When you say "the execution does not complete the loop at line 244", 
> > > > > it
> > > > > means that you see the execution entering the loop and then never
> > > > > leaving? Like an infinite loop?
> > > > >
> > > > > If so, then I imagine the issue could be that the application is
> > > > > crashing when trying to access TxBufferPtr, which is pointing to
> > > > > TX_BUFFER_BASE, which is:
> > > > >
> > > > >
> > > > > #ifndef DDR_BASE_ADDR
> > > > > #warning CHECK FOR THE VALID DDR ADDRESS IN XPARAMETERS.H, \
> > > > >                  DEFAULT SET TO 0x01000000
> > > > > #define MEM_BASE_ADDR           0x01000000
> > > > > #else
> > > > > #define MEM_BASE_ADDR           (DDR_BASE_ADDR + 0x1000000)
> > > > > #endif
> > > > >
> > > > > #define TX_BUFFER_BASE          (MEM_BASE_ADDR + 0x00100000)
> > > > >
> > > > >
> > > > >
> > > > > Can you double check that TX_BUFFER_BASE is pointing to a correct
> > > > > address? Memory starts at 0x40000000 in a Xen DomU.
> > > > >
> > > > > Maybe MEM_BASE_ADDR/DDR_BASE_ADDR is not set correctly?
> > > > >
> > > > >
> > > > > On Mon, 17 May 2021, Prem Harikrishnan wrote:
> > > > > > Hi Stefano,
> > > > > > Thanks again for your reply and your suggestion.  I did try to 
> > > > > > replace the Xil_DCacheFlushRange with
> > Xil_DCacheInvalidateRange(works
> > > > only
> > > > > > in EL3), I added printfs to debug, i can see that the execution 
> > > > > > does not complete the loop at line 244
> > > > > > https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/axidma/examples/xaxidma_example_simple_poll.c
> > > > > >   and
> > > > > > Xil_DCacheFlushRange is not reached. Please find attached my xen 
> > > > > > bootlog.txt.
> > > > > > I am still unable to find out why??
> > > > > >
> > > > > > Can you please atleast verify that my xen.dtsi, and pl.dtb is 
> > > > > > correct? and do i need dtdev and device_tree in my guest config
> file
> > > when
> > > > > it
> > > > > > is already added to xen.dtsi?
> > > > > >
> > > > > > Best Regards,
> > > > > > Prem
> > > > > >
> > > > > >
> >>>>>______________________________________________________________________________________________________________________________________
> _
> > _
> > > _
> > > > _
> > > > > _
> > > > > > From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > > > > > Sent: Saturday, May 15, 2021 00:25
> > > > > > To: Prem Harikrishnan <prem.harikrishnan@xxxxxxxxxxxxxx>
> > > > > > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>; Brian Woods 
> > > > > > <brian.woods@xxxxxxxxxx>; Julien Grall <julien@xxxxxxx>;
> > Stefano
> > > > > > Stabellini <sstabellini@xxxxxxxxxx>; xen-users@xxxxxxxxxxxxxxxxxxxx 
> > > > > > <xen-users@xxxxxxxxxxxxxxxxxxxx>; fnuv@xxxxxxxxxx
> > > > <fnuv@xxxxxxxxxx>;
> > > > > > edgari@xxxxxxxxxx <edgari@xxxxxxxxxx>; bwoods288@xxxxxxxxx 
> > > > > > <bwoods288@xxxxxxxxx>; Renato Costa Amorim
> > <renato.amorim@xxxxxxxxxxxxxx>;
> > > > > > JOVITAC@xxxxxxxxxx <JOVITAC@xxxxxxxxxx>
> > > > > > Subject: Re: Help: Information required for AXI DMA passthrough for 
> > > > > > PL masters in ZCU102 dev kit  
> > > > > > Hi Prem,
> > > > > >
> > > > > > Some older versions of Xil_DCacheFlushRange were implemented using
> > > > > > deprecated set/way instructions that are known to cause problems in
> > > > > > virtualized environments.
> > > > > >
> > > > > > More recent implementations use the "dc civac" intruction that 
> > > > > > shouldn't
> > > > > > have any issues.
> > > > > >
> > > > > > Can you double-check that you are calling the 64-bit version 
> > > > > > implemented
> > > > > > by CIVAC?
> > > > > >
> >>>>>https://github.com/Xilinx/embeddedsw/blob/875dcc7a4dca47ccb18eda0182f3577e598f8917/lib/bsp/standalone/src/arm/ARMv8/64bit/xil_cache.c#
> L
> > 4
> > > 1
> > > > 4
> > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Fri, 14 May 2021, Prem Harikrishnan wrote:
> > > > > > > Hi Stefano, 
> > > > > > > Thanks for your reply. Yes the axidma application is a baremetal 
> > > > > > > application from the xilinx vitis ide example. 
> > > > > > > Also yes, I have already run hello world as DomU guest, with 
> > > > > > > UART1.
> > > > > > >
> > > > > > > I am using the simple mode using polling and not interrupts(they 
> > > > > > > are disabled in the c code), which is Why I didn't include in
> > the
> > > > > guest
> > > > > > > config file. This works well when I compile it normally (as EL3). 
> > > > > > > When compiled as hypervisor guest, the execution stops before
> > the
> > > > > > > function xil_dcacheflushrange(). Please find the c code attached
> > > > > > > in 
> > > > > > > https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/axidma/examples/xaxidma_example_simple_poll.c
> > > > > > >  
> > > > > > >
> > > > > > > I found the SATA example similar to my use case, also using DMA 
> > > > > > > and SMMU. I just used it as a reference to create my pl.dtb to
> > pass
> > > > > > through
> > > > > > > in the guest config.(from pl.dtsi, which I manually created).
> > > > > > >
> > > > > > > Thanks and Best Regards,
> > > > > > > Prem
> > > > > > >
> > > > > > > Get Outlook for Android
> > > > > > >
> >>>>>>_____________________________________________________________________________________________________________________________________
> _
> > _
> > > _
> > > > _
> > > > > _
> > > > > > _
> > > > > > > From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > > > > > > Sent: Friday 14 May 2021, 23:16
> > > > > > > To: Prem Harikrishnan
> > > > > > > Cc: Brian Woods; Stefano Stabellini; Julien Grall; Stefano 
> > > > > > > Stabellini; xen-users@xxxxxxxxxxxxxxxxxxxx; fnuv@xxxxxxxxxx;
> > > > > > edgari@xxxxxxxxxx;
> > > > > > > bwoods288@xxxxxxxxx; Renato Costa Amorim; JOVITAC@xxxxxxxxxx
> > > > > > > Subject: Re: Help: Information required for AXI DMA passthrough 
> > > > > > > for PL masters in ZCU102 dev kit
> > > > > > >
> > > > > > > I take that the guest kernel 
> > > > > > > "/bin/xaxidma_example_simple_poll_1.bin" is
> > > > > > > a baremetal application? Can you run it successfully, just 
> > > > > > > printing
> > > > > > > "hello world", if you only assign the UART and nothing else?
> > > > > > >
> > > > > > > I am asking just to verify that you can run the baremetal VM
> > > > > > > successfully, aside from the PL device assignment.
> > > > > > >
> > > > > > >
> > > > > > > In regards to the PL device assignment, I'll let Brian answer on 
> > > > > > > the
> > > > > > > Vivado configuration and SMID calculation. But I noticed that you 
> > > > > > > only
> > > > > > > assigned IRQ 54 to the DomU which is the one for UART1. You 
> > > > > > > haven't
> > > > > > > assigned any IRQs for axi_dma_0. Looking at 
> > > > > > > pl_from_petalinux.dtsi, it
> > > > > > > looks like there are two related IRQs: 121 and 122.
> > > > > > >
> > > > > > > Finally, why did you mention SATA passthrough in your reply? I 
> > > > > > > don't
> > > > > > > follow: I cannot see any SATA controller assignment in your
> > > > > > > configuration.
> > > > > > >
> > > > > > >
> > > > > > > On Fri, 14 May 2021, Prem Harikrishnan wrote:
> > > > > > > > Dear Brian, Stefano and Julien,
> > > > > > > >
> > > > > > > > Thank you very much for your replies.
> > > > > > > > Hi Brian and Stefano, Can you please help me with the following 
> > > > > > > > questions?
> > > > > > > >
> > > > > > > > @Brian Woods Please find attached my vivado configuration, when 
> > > > > > > > i added my AXI DMA now running on simple polling
> > mode(previously
> > > i
> > > > > > tried
> > > > > > > it
> > > > > > > > with Scatter Gather mode), Run Automation automatically 
> > > > > > > > generated, 1 AXI Interconnect and 1 smart connect. Since there 
> > > > > > > > is
> only
> > 1
> > > > > master
> > > > > > > and
> > > > > > > > I use the S_AXI _HP0_FPD, I finally get a value of 0xE80 for 
> > > > > > > > the stream IDs.
> > > > > > > > https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842066/Xen+and+PL+Masters
> > > > > > > >  According to this link section 6.5 I have
> > > > manually
> > > > > > tied
> > > > > > > > of AxPROT bits to value of 0x2 to create non secure 
> > > > > > > > transactions. Can you please confirm that my Vivado 
> > > > > > > > configuration is
> > correct?
> > > I
> > > > > can
> > > > > > > > update you soon with an ILA trace on Vivado.
> > > > > > > >
> > > > > > > > @Stefano Stabellini Please find attached my pl.dtsi generated 
> > > > > > > > from petalinux and system.dtsi also generated after manually
> > adding
> > > > > > > xen.dtsi.
> > > > > > > > https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/384663561/Building+Xen+Hypervisor+with+Petalinux+2020.1+and+2020.2
> Using
> > > this
> > > > > > SATA
> > > > > > > > passthrough, i made my own pl.dtsi for passthrough used in 
> > > > > > > > dma.cfg. I could really use your help to identify what is 
> > > > > > > > missing
> in
> > > my
> > > > > xen
> > > > > > > > configuration.
> > > > > > > >
> > > > > > > > Thanks and Best Regards,
> > > > > > > > Prem
> > > > > > > >
> >>>>>>>____________________________________________________________________________________________________________________________________
> _
> > _
> > > _
> > > > _
> > > > > _
> > > > > > _
> > > > > > > _
> > > > > > > > From: Brian Woods <brian.woods@xxxxxxxxxx>
> > > > > > > > Sent: Thursday, May 13, 2021 17:13
> > > > > > > > To: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > > > > > > > Cc: Julien Grall <julien@xxxxxxx>; Prem Harikrishnan 
> > > > > > > > <prem.harikrishnan@xxxxxxxxxxxxxx>; Stefano Stabellini
> > > > <sstabellini@xxxxxxxxxx>;
> > > > > > > > xen-users@xxxxxxxxxxxxxxxxxxxx 
> > > > > > > > <xen-users@xxxxxxxxxxxxxxxxxxxx>; brian.woods@xxxxxxxxxx 
> > > > > > > > <brian.woods@xxxxxxxxxx>;
> > fnuv@xxxxxxxxxx
> > > > > > > > <fnuv@xxxxxxxxxx>; edgari@xxxxxxxxxx <edgari@xxxxxxxxxx>; 
> > > > > > > > bwoods288@xxxxxxxxx <bwoods288@xxxxxxxxx>
> > > > > > > > Subject: Re: Help: Information required for AXI DMA passthrough 
> > > > > > > > for PL masters in ZCU102 dev kit  
> > > > > > > > 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®.