This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/TDA2PXEVM: vision sdk dump data through Null link, but system crash and reboot

Part Number: TDA2PXEVM

Tool/software: Linux

hi all, 

  i design the follow link connect, i want dump the dispDistSrc link data through Null link, but the andriod system crash.

                                          Dup -> Gate_Null (A15) -> Null_vid1 (A15)

   DispDistSrc_Android -> Dup ->  Gate_Android -> Display_vid1

set the Null_vid1 parameter as following:

void chains_DemoDisplay_SetNullPrms(NullLink_CreateParams *pPrm)
{
    pPrm->dumpDataType = NULL_LINK_COPY_TYPE_FILE;
    strcpy((char*)pPrm->nameDataFile[0], "/data/vid1_raw_file_dump.dat");
}

crash log as following:

[   58.232770] Internal error: Oops: 2a05 [#1] PREEMPT SMP ARM
[   58.239898] Modules linked in: cmemk(O) memcache(O) pvrsrvkm(O) input_polldev ti_fpd3_serdes sd_mod usb_storage scsi_mod
[   58.250897] CPU: 0 PID: 1430 Comm: apps.out Tainted: G        W  O    4.4.117-gc33c12e #1
[   58.259109] Hardware name: Generic DRA74X (Flattened Device Tree)
[   58.265228] task: cf728e00 task.stack: cf6fe000
[   58.269784] PC is at v7_dma_inv_range+0x30/0x48 [memcache]
[   58.275296] LR is at DMA_devIoctl+0x248/0x288 [memcache]
[   58.280631] pc : [<bf02a074>]    lr : [<bf02a3cc>]    psr: 600f0013
[   58.280631] sp : cf6ffed0  ip : 00000014  fp : cf6fff04
[   58.292157] r10: 00000000  r9 : 00000004  r8 : 00000004
[   58.297402] r7 : cf636780  r6 : 9defa76c  r5 : 00000000  r4 : c120394c
[   58.303956] r3 : 0000003f  r2 : 00000040  r1 : 00000000  r0 : 00000000
[   58.310511] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   58.317675] Control: 30c5387d  Table: 8f71a1c0  DAC: fffffffd
[   58.323444]
[   58.323444] SP: 0xcf6ffe50:
[   58.327729] fe50  00000002 dc8ba675 bf02a074 600f0013 ffffffff cf6ffeb4 00000004 00000004
[   58.336017] fe70  cf6fff04 cf6ffe80 c020d498 c0201278 00000000 00000000 00000040 0000003f
[   58.344300] fe90  c120394c 00000000 9defa76c cf636780 00000004 00000004 00000000 cf6fff04
[   58.352582] feb0  00000014 cf6ffed0 bf02a3cc bf02a074 600f0013 ffffffff c120394c bf02a390
[   58.360864] fed0  00000000 00000000 00000000 00000000 00000225 dc8ba675 d1253150 c120394c
[   58.369145] fef0  cf691798 0000fdfd cf6fff7c cf6fff08 c039a23c bf02a190 cf6fff1c dc8ba675
[   58.377426] ff10  ee36ef10 cfb31880 c120da08 0000000b cf6fff10 c02081a4 cf6fe000 dc8ba675
[   58.385706] ff30  c123d564 c123affc 9defa76c 0000da08 cf636780 00000004 cf6fff7c cf6fff58
[   58.393989]
[   58.393989] FP: 0xcf6ffe84:
[   58.398277] fe84  00000000 00000040 0000003f c120394c 00000000 9defa76c cf636780 00000004
[   58.406558] fea4  00000004 00000000 cf6fff04 00000014 cf6ffed0 bf02a3cc bf02a074 600f0013
[   58.414838] fec4  ffffffff c120394c bf02a390 00000000 00000000 00000000 00000000 00000225
[   58.423121] fee4  dc8ba675 d1253150 c120394c cf691798 0000fdfd cf6fff7c cf6fff08 c039a23c
[   58.431403] ff04  bf02a190 cf6fff1c dc8ba675 ee36ef10 cfb31880 c120da08 0000000b cf6fff10
[   58.439684] ff24  c02081a4 cf6fe000 dc8ba675 c123d564 c123affc 9defa76c 0000da08 cf636780
[   58.447967] ff44  00000004 cf6fff7c cf6fff58 c04eab28 dc8ba675 00000000 cf636781 cf636780
[   58.456249] ff64  9defa76c 0000da08 00000004 cf6fffa4 cf6fff80 c039a49c c0399e08 837be068
[   58.464532]
[   58.464532] R4: 0xc12038cc:
[   58.468818] 38cc  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   58.477102] 38ec  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   58.485384] 390c  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   58.493665] 392c  00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000001
[   58.501945] 394c  dc8ba675 003fb0d6 00000000 00000009 c021aa00 c021aa20 c021b430 c021b434
[   58.510227] 396c  c0200044 c021b460 c021b46c c021b3e0 c021b3f8 00000024 c021b4b0 c021b4e0
[   58.518509] 398c  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   58.526790] 39ac  00000000 c021b364 c021b39c 90f00000 c021ad74 c021ad30 00000022 ffffffff
[   58.535073]
[   58.535073] R7: 0xcf636700:
[   58.539359] 6700  00000000 00000000 00000000 c0a027f8 00000000 00000000 00000000 00000048
[   58.547642] 6720  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   58.555923] 6740  00000000 00000000 00000000 00000000 00000000 00000000 00000000 ffff0000
[   58.564204] 6760  ffff0000 d0116448 d0116540 d0116400 d0116400 000002c0 00000001 00000000
[   58.572489] 6780  00000000 00000000 ee36ef10 cfb31880 cf691798 bf02a67c 00000000 00000003
[   58.580772] 67a0  00020002 0000001f 00000001 00000000 cf6367b0 cf6367b0 00000000 00000000
[   58.589051] 67c0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   58.597335] 67e0  cf64b900 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   58.605618] Process apps.out (pid: 1430, stack limit = 0xcf6fe210)
[   58.611824] Stack: (0xcf6ffed0 to 0xcf700000)
[   58.616200] fec0:                                     00000000 00000000 00000000 00000000
[   58.624413] fee0: 00000225 dc8ba675 d1253150 c120394c cf691798 0000fdfd cf6fff7c cf6fff08
[   58.632627] ff00: c039a23c bf02a190 cf6fff1c dc8ba675 ee36ef10 cfb31880 c120da08 0000000b
[   58.640841] ff20: cf6fff10 c02081a4 cf6fe000 dc8ba675 c123d564 c123affc 9defa76c 0000da08
[   58.649054] ff40: cf636780 00000004 cf6fff7c cf6fff58 c04eab28 dc8ba675 00000000 cf636781
[   58.657269] ff60: cf636780 9defa76c 0000da08 00000004 cf6fffa4 cf6fff80 c039a49c c0399e08
[   58.665482] ff80: 837be068 837be068 9defa7a8 00000036 c02081a4 cf6fe000 00000000 cf6fffa8
[   58.673695] ffa0: c0207fe0 c039a434 837be068 837be068 00000004 0000da08 9defa76c 9defa764
[   58.681909] ffc0: 837be068 837be068 9defa7a8 00000036 837155d4 83717240 837829e8 837197b4
[   58.690122] ffe0: 00000000 9defa750 a70e2e3d a710e43c 600f0010 00000004 ff261011 ff250e12
[   58.698331] Backtrace:
[   58.700807] [<bf02a184>] (DMA_devIoctl [memcache]) from [<c039a23c>] (do_vfs_ioctl+0x440/0x62c)
[   58.709542]  r6:0000fdfd r5:cf691798 r4:c120394c
[   58.714209] [<c0399dfc>] (do_vfs_ioctl) from [<c039a49c>] (SyS_ioctl+0x74/0x84)
[   58.721548]  r9:00000004 r8:0000da08 r7:9defa76c r6:cf636780 r5:cf636781 r4:00000000
[   58.729374] [<c039a428>] (SyS_ioctl) from [<c0207fe0>] (ret_fast_syscall+0x0/0x40)
[   58.736974]  r9:cf6fe000 r8:c02081a4 r7:00000036 r6:9defa7a8 r5:837be068 r4:837be068
[   58.744797] Code: 1e070f3e e1110003 e1c11003 1e071f3e (ee070f36)
[   58.751016] ---[ end trace 1b9ea86ae3fcf40e ]---
[   58.755691] Kernel panic - not syncing: Fatal exception
[   58.760942] CPU1: stopping
[   58.763666] CPU: 1 PID: 146 Comm: logd.klogd Tainted: G      D W  O    4.4.117-gc33c12e #1
[   58.771965] Hardware name: Generic DRA74X (Flattened Device Tree)
[   58.778081] Backtrace:
[   58.780550] [<c020c80c>] (dump_backtrace) from [<c020ca08>] (show_stack+0x18/0x1c)
[   58.788149]  r6:60070193 r5:c1241e94 r4:00000000 r3:dc8ba675
[   58.793870] [<c020c9f0>] (show_stack) from [<c0b166b0>] (dump_stack+0x94/0xa8)
[   58.801126] [<c0b1661c>] (dump_stack) from [<c021052c>] (handle_IPI+0x320/0x33c)
[   58.808550]  r6:00000000 r5:c1085518 r4:00000005 r3:dc8ba675
[   58.814269] [<c021020c>] (handle_IPI) from [<c0201510>] (gic_handle_irq+0x78/0x7c)
[   58.821868]  r10:ab387830 r9:ab387747 r8:fa213000 r7:fa212000 r6:ed70bfb0 r5:fa21200c
[   58.829773]  r4:c12048c0 r3:00000005
[   58.833381] [<c0201498>] (gic_handle_irq) from [<c020d7e8>] (__irq_usr+0x48/0x60)
[   58.840893] Exception stack(0xed70bfb0 to 0xed70bff8)
[   58.845966] bfa0:                                     abcf3568 00000002 ab3876b0 becb9f9e
[   58.854180] bfc0: 00000041 abcf3568 00000002 00000054 7fffffff ab387747 ab387830 cccccccd
[   58.862391] bfe0: ab922000 ab38769c ab922034 abceade2 80070030 ffffffff
[   58.869030]  r8:30c5387d r7:30c5387d r6:ffffffff r5:80070030 r4:abceade2 r3:abcf3568
[   58.876852] Rebooting in 5 seconds..

could you help me find out the problem?

  • Hi,

    Can you set CONFIG_ARM_LPAE=n in ti_config_fragments/auto.cfg in the kernel, and perform a clean build and let us know if the issue is observed?

    Regards
    Shravan
  • hi shravan,

    i grep my kernel dir:


    arch/arm/mach-omap2/board-generic.c:#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    arch/arm/mach-omap2/board-generic.c:#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    arch/arm/mach-omap2/board-generic.c:#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    arch/arm/mach-keystone/keystone.c:#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    arch/arm/mach-highbank/highbank.c:#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
    arch/arm/mm/init.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/init.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/fault.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/pgd.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/pgd.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/pgd.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/pgd.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/idmap.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/idmap.c:#else       /* !CONFIG_ARM_LPAE */
    arch/arm/mm/idmap.c:#endif      /* CONFIG_ARM_LPAE */
    arch/arm/mm/proc-macros.S:#if !defined (CONFIG_ARM_LPAE) && \
    arch/arm/mm/proc-v7.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/proc-v7.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/proc-v7.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/proc-v7.S:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/proc-v7.S:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/proc-v7.S:#endif    /* CONFIG_ARM_LPAE */
    arch/arm/mm/mmu.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#endif        /* !CONFIG_ARM_LPAE */
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/mmu.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/context.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/dump.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/dump.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/dump.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/fault.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/fault.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/fault.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/fault.c:#endif /* CONFIG_ARM_LPAE */
    arch/arm/mm/fault.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/mm/fault.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/ioremap.c:#if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE)
    arch/arm/mm/ioremap.c:#ifndef CONFIG_ARM_LPAE
    arch/arm/mm/ioremap.c:#if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE)
    arch/arm/mm/ioremap.c:#if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE)
    arch/arm/kernel/head.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/head.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/head.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/head.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/head.S:#if defined(CONFIG_ARM_LPAE) && defined(CONFIG_CPU_ENDIAN_BE8)
    arch/arm/kernel/head.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/head.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/head.S:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/smp.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/kernel/machine_kexec.c:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/pgtable.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/pgtable.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/atomic.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/pgalloc.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/pgalloc.h:#else    /* !CONFIG_ARM_LPAE */
    arch/arm/include/asm/pgalloc.h:#endif   /* CONFIG_ARM_LPAE */
    arch/arm/include/asm/pgalloc.h:#ifndef CONFIG_ARM_LPAE
    arch/arm/include/asm/pgalloc.h: if (__LINUX_ARM_ARCH__ >= 6 && !IS_ENABLED(CONFIG_ARM_LPAE))
    arch/arm/include/asm/tlb.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/tlb.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/memory.h:#if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE)
    arch/arm/include/asm/pgtable-hwdef.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/bug.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/page.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/proc-fns.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/proc-fns.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/include/asm/proc-fns.h:#ifdef CONFIG_ARM_LPAE
    arch/arm/configs/keystone_defconfig:CONFIG_ARM_LPAE=y
    arch/arm/configs/axm55xx_defconfig:CONFIG_ARM_LPAE=y
    arch/arm/configs/dntc_android_defconfig:CONFIG_ARM_LPAE=y
    ti_config_fragments/dra7_only.cfg:CONFIG_ARM_LPAE=y
    ti_config_fragments/lpae.cfg:CONFIG_ARM_LPAE=y
    include/config/auto.conf:CONFIG_ARM_LPAE=y
    include/generated/autoconf.h:#define CONFIG_ARM_LPAE 1
    .config:CONFIG_ARM_LPAE=y
    .config.old:CONFIG_ARM_LPAE=y

    i wonder to know which one should modify to n?

  • hi Shravan,
    i track the A15 null link source code, i found the bug is that when the null link receive the new data come message, call NullLink_drvProcessFrames() to handle, but get the prev link full buffer(bitstreamBuf->bufAddr) is NULL pointer, so after call the OSA_memCacheInv((UInt32)bitstreamBuf->bufAddr, bitstreamBuf->fillLength);
    lead the system to crash. but i do not know why the buffer is NULL, the other path " DispDistSrc_Android -> Dup -> Gate_Android -> Display_vid1" can display nomally on my screen.
  • Hi,

    As indicated in the previous post please modify the file  'ti_config_fragments/auto.cfg' in the kernel. Please set CONFIG_ARM_LPAE=n in this file and perform a clean build.


    Regards

    Shravan

  • hi Shravan,
    i change the CONFIG_ARM_LPAE=n and clean and rebuild my kernel and andriod system, but the problem is not resoved.
  • Hi,

    Thank you. Just to confirm when you zcat /proc/config.gz | grep LPAE it indicates not-set?
    Can you also confirm where the buffer is being allocated from (is it from SR_1 or using cmem?)

    From your use-case I notice that the null-link gets the buffers from Disp_dist link.
    Can you check the address exported to each link by the previous link and indicate where the allocation fails (E.g check address provided by disp_dist link to dup link. read this address from the dup link and make sure its the same as that provided by the disp_dist link, similarly perform the check between dup and null_link).

    Regards
    Shravan
  • hi Shravan,
    (1)
    i zcat the config as following:
    jacinto6evm:/vendor/bin # zcat /proc/config.gz | grep LPAE
    # CONFIG_ARM_LPAE is not set
    # CONFIG_IOMMU_IO_PGTABLE_LPAE is not set

    (2)
    before running demo, we must excute memcache_load.sh, as following:

    insmod /vendor/lib/modules/cmemk.ko phys_start=0xA9000000 phys_end=0xAD000000

    if [ ! -f /dev/memcache ]
    then
    major=`cat /proc/devices | grep memcache | cut -d ' ' -f1`
    mknod /dev/memcache c ${major} 0
    fi

    (3)
    i change the link as following:
    Dup -> Gate_Null -> Null_vid1 (A15) (i think it is the same as: Dup -> Gate_Null ->IPC_OUT[RTOS] -> IPC_IN[A15] ->Null_vid1(A15) )

    DispDistSrc_Android -> Dup -> Gate_Android -> Display_vid1
    i track the buffer follow between links as following:

    DispDistSrc link: /dev/vdrm-controller-0, bufferAddr = 0xf0b00000
    [Dup link] [0] payload = 0x99fa4a88, buffaddr = 0xf0b00000
    [Dup link] [1] payload = 0x99fa4a88, buffaddr = 0xf0b00000
    [IPC OUT] [RTOS] payload = 0x99fa4a88, buffaddr = 0xf0b00000
    [IPC IN] [A15] payload = 0x8ca2b8f8, buffaddr = 0x0
    Null link write bufAddr: 0x0, bufList.buffers[bufId]->payload = 0x8ca2ba08 [type: 0], pVidFrame->metaBufAddr = 0x0, size = 0, fillLength = 0

    i can see the buffer from IPC_OUT[RTOS] to IPC_IN[A15] has been changed to NULL.

    I add log in IPC IN of A15:

     [HOST] [HOST  ]    110.080156 s: [IPC IN] [A15] bufferType = 0, pBuffer->payloadSize = 72
     [HOST] [HOST  ]    110.080156 s: [IPC IN] [A15] memPhys2Virt: before (0xf1b00000)
     [HOST] [HOST  ]    110.080156 s: [IPC IN] [A15] memPhys2Virt: after (0x0)
     [HOST] [HOST  ]    110.080186 s: [IPC IN] [A15] index = 6, pIpcBuffer->payload = 0xa5796b90, pIpcBuffer->payload->buffaddr = 0xf1b00000
     [HOST] [HOST  ]    110.080186 s: [IPC IN] [A15] pSysBuffer->payload = 0x88e92e48, pSysBuffer->payload->buffaddr = 0x0

    I found that when call IpcInLink_drvTranslateSystemBufferPayloadPtrs() -> OSA_memPhys2Virt()  return NULL pointer.

    why? the memory space is not enough?

    i can dump the data from DispDistSrc link by call OSA_memMap() map the physics address to virtual address, then fwrite the data to file.

    but i can not call OSA_memPhys2Virt() to map the address. 

    thanks!

  • Hi,

    From your logs below:

    [Dup link] [0] payload = 0x99fa4a88, buffaddr = 0xf0b00000
    [Dup link] [1] payload = 0x99fa4a88, buffaddr = 0xf0b00000
    [IPC OUT] [RTOS] payload = 0x99fa4a88, buffaddr = 0xf0b00000

    The buffaddr passed to the RTOS links is 0xf0b00000. This is a virtual address and can't be accessed to IPU.
    When the buffer comes back from RTOS to Linux (through IPC), the driver on Linux assumes 0xf0b00000 is a physical address and tries to provide a virtual address for the same and fails. This is why you notice this error.
    Please ensure the physical address is passed to the RTOS links and not the virtual address.

    Regards
    Shravan
  • hi Shravan,
    Thanks , i don't think this buffaddr is virtual address, because i can call OSA_memMap() to map this address to virtual then call fwrite to dump the data, and i can see the image by 7yuv tool.

    what's more, this path DispDistSrc_Android -> Dup -> Gate_Android -> Display_vid1 is OK. so i dont think the buffAddr from DispDispSrc link is wrong.

  • Hi, 

    Does that mean 0xf0b00000 is a physical address? If that's the case where does this region belong to (SR0 / SR1.. etc).

    If 0xf0b00000 is a physical address how are you passing it to IPU? Have you modified the AMMU configuration? By default the IPU can access only 1GB of DDR.

    Regards

    Shravan

  • hi Shravan,
    DispDistSrc link: /dev/vdrm-controller-0, bufferAddr = 0xf0b00000
    the bufferAddr is get by the following code:
    memset(&paddr, 0, sizeof(paddr));
    paddr.v_gem_handle = nb->v_gem_handle[0];
    ret = ioctl(pObj->v_fd, V_CTRL_IOCTL_PROVIDER_GEM_TO_PADDR, &paddr);
    OSA_assert(ret == 0);
    vidBuffer->bufAddr[0] = (Void *)paddr.paddr + nb->offsets[0];

    it is get from VDrm GEM memeory.
  • Hi,

    Any reason why you're sending a buffer from A15 to M4 and getting that buffer back to A15? The CMA region from which DRM application allocates buffer isn't mmapped in Vision-SDK.
    While this isn't recommended (to send buffer from A15 to M4 back to A15), you can try to add the below args to your kernel bootargs "cma=64M@0xf0000000" (tweak the size and address as per your convenience).
    You also then need to mmap the above size and address as part of OSA_memInit in Vision-SDK.

    Regards
    Shravan