ROCK 5B Debug Party Invitation

I couldn’t run gstreamer with kmsdrm or gles2 on Ubuntu CLI, so i built the kernel on rock5b and tried gstreamer but i got artifacts. It is the same setup for Debian 11.5 and Ubuntu 22.04, the only difference is that on Ubuntu i cross-compiled the kernel. For some reason, they behave differently.

i figured out how to use gstreamer with hw decoding on Ubuntu. The only issue i had is with hevc 10bit, surprisingly ffplay has no issues playing it, but the way it displays the video on screen is a bit annoying, it tries to scale the 1920x1080 video to something like 1920x9??.

Playing Big_Buck_Bunny_1080_10s_10MB.mp4 (H264)

gst-launch-1.0 filesrc location=Big_Buck_Bunny_1080_10s_10MB.mp4 ! qtdemux ! h264parse ! mppvideodec ! glimagesink
Setting pipeline to PAUSED ...
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayGBM\)\ gldisplaygbm0";
Pipeline is PREROLLED ...0 %)
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Got EOS from element "pipeline0".
Execution ended after 0:00:10.000724467
Setting pipeline to NULL ...
Freeing pipeline ...

CPU usage:

Playing jellyfish-30-mbps-hd-hevc.mkv (HEVC)

gst-launch-1.0 filesrc location=jellyfish-30-mbps-hd-hevc.mkv ! matroskademux ! h265parse ! mppvideodec ! glimagesink
Setting pipeline to PAUSED ...
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayGBM\)\ gldisplaygbm0";
Pipeline is PREROLLED ...0 %)
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:30.031330520
Setting pipeline to NULL ...
Freeing pipeline ...

CPU usage:

Playing tos-4096x1720-tiles.mkv (4K) on 1920x1080

gst-launch-1.0 filesrc location=tos-4096x1720-tiles.mkv ! matroskademux ! h265parse ! mppvideodec ! glimagesink
Setting pipeline to PAUSED ...
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayGBM\)\ gldisplaygbm0";
Pipeline is PREROLLED ...0 %)
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Got EOS from element "pipeline0".
Execution ended after 0:12:14.167728212
Setting pipeline to NULL ...
Freeing pipeline ...

CPU usage:

Now i need to find out how to replicate it to Debian…

Reminder: If you have a board with dram > 4 GB you need to wait for the librga fix.

UPDATE

Cross-compiled the kernel for Debian 11.5 Image and i can confirm that building the kernel natively breaks rkdvec2 (or mpp, whatever) , FFmpeg works fine but i still have a lot of dropped frames with gstreamer. Need to find where i got the correct plugin that works on Ubuntu.

Playing jellyfish-20-mbps-hd-hevc-10bit.mkv

CPU usage

cpu

UPDATE 2

Finally, gstreamer is working with Debian 11.5 X11. The missing bits are:

  • HEVC 10bit does not work
  • Works only for boards with 4 GB RAM (we need to wait for the new SDK or if Radxa can handle the source code for the librga which runs on boards with 8 GB or more)

That’s all Folks!

Playing jellyfish-5-mbps-hd-hevc.mkv (HEVC - H265)

sudo GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=jellyfish-5-mbps-hd-hevc.mkv ! matroskademux ! h265parse ! mppvideodec ! glimagesink

CPU Usage:
gstreamer-X11-cpu

UPDATE 3

Play youtube videos, sometimes it gets stuck or breaks the pipe, experimental.

  • Install youtube-dl

    sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
    sudo chmod a+rx /usr/local/bin/youtube-dl

  • Get a real youtube link, for example: https://youtu.be/HSE_X3XUoiw?list=RDMMHSE_X3XUoiw

  • play youtube with hw accel
    sudo /usr/local/bin/youtube-dl https://www.youtube.com/watch?v=HSE_X3XUoiw -o - | GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=/dev/stdin ! qtdemux ! h264parse ! mppvideodec ! glimagesink

You can also try with ffplay, i get better results plus audio until i find a way to play video + audio with gstreamer.

sudo /usr/local/bin/youtube-dl https://www.youtube.com/watch?v=HSE_X3XUoiw -o - | ffplay - -autoexit -loglevel quiet

Important: run sudo ls before firing the youtube-dl command or it get stuck waiting for the password

UPDATE 4

If you want to play with more than one camera on Rock 5B, you can add an extra H264 USB Camera (30 fps).
Tested with gstreamer and ffmpeg.

CSI camera is on /dev/video11 and H264 USB Camera is on /dev/video23 for this test. Attached to USB 3.0

sudo GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 v4l2src device=/dev/video23 ! video/x-h264,width=1920,height=1080,framerate=30/1 ! h264parse ! mppvideodec ! glimagesink

CPU usage:

the LAST one, testing encode and decode:

gst-launch-1.0 filesrc location=Big_Buck_Bunny_1080_10s_10MB.mp4 ! qtdemux ! h264parse ! mppvideodec ! video/x-raw,formate=NV12 ! mpph264enc ! avimux ! filesink location=Big_Buck_Bunny_1080_10s_10MB.avi

That’s it.

1 Like

Been looking at the Nvme and wondering if there are any ways to lower idle, have,'t even mounted it but installing adds approx 2 watts.

 nvme list
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     S35ENX0K704091       SAMSUNG MZVLW256HEHP-000L7               1          31.61  GB / 256.06  GB    512   B +  0 B   5L7QCXB7

Guess its getting a bit old as was one I had spare and also does anyone have any recommendations for energy efficient Nvme specifically for this type of laptop/notebook level where a performance model is really lost on a entry level desktop style cpu?

Prob its just and old nvme and not the most efficient anyway, but here is the info

 nvme id-ctrl -H /dev/nvme0n1
NVME Identify Controller:
vid       : 0x144d
ssvid     : 0x144d
sn        : S35ENX0K704091
mn        : SAMSUNG MZVLW256HEHP-000L7
fr        : 5L7QCXB7
rab       : 2
ieee      : 002538
cmic      : 0
  [3:3] : 0     ANA not supported
  [2:2] : 0     PCI
  [1:1] : 0     Single Controller
  [0:0] : 0     Single Port

mdts      : 0
cntlid    : 0x2
ver       : 0x10200
rtd3r     : 0x186a0
rtd3e     : 0x4c4b40
oaes      : 0
[14:14] : 0     Endurance Group Event Aggregate Log Page Change Notice Not Supported
[13:13] : 0     LBA Status Information Notices Not Supported
[12:12] : 0     Predictable Latency Event Aggregate Log Change Notices Not Supported
[11:11] : 0     Asymmetric Namespace Access Change Notices Not Supported
  [9:9] : 0     Firmware Activation Notices Not Supported
  [8:8] : 0     Namespace Attribute Changed Event Not Supported

ctratt    : 0
  [9:9] : 0     UUID List Not Supported
  [7:7] : 0     Namespace Granularity Not Supported
  [5:5] : 0     Predictable Latency Mode Not Supported
  [4:4] : 0     Endurance Groups Not Supported
  [3:3] : 0     Read Recovery Levels Not Supported
  [2:2] : 0     NVM Sets Not Supported
  [1:1] : 0     Non-Operational Power State Permissive Not Supported
  [0:0] : 0     128-bit Host Identifier Not Supported

rrls      : 0
crdt1     : 0
crdt2     : 0
crdt3     : 0
oacs      : 0x17
  [9:9] : 0     Get LBA Status Capability Not Supported
  [8:8] : 0     Doorbell Buffer Config Not Supported
  [7:7] : 0     Virtualization Management Not Supported
  [6:6] : 0     NVMe-MI Send and Receive Not Supported
  [5:5] : 0     Directives Not Supported
  [4:4] : 0x1   Device Self-test Supported
  [3:3] : 0     NS Management and Attachment Not Supported
  [2:2] : 0x1   FW Commit and Download Supported
  [1:1] : 0x1   Format NVM Supported
  [0:0] : 0x1   Security Send and Receive Supported

acl       : 7
aerl      : 3
frmw      : 0x16
  [4:4] : 0x1   Firmware Activate Without Reset Supported
  [3:1] : 0x3   Number of Firmware Slots
  [0:0] : 0     Firmware Slot 1 Read/Write

lpa       : 0x3
  [3:3] : 0     Telemetry host/controller initiated log page Not Supported
  [2:2] : 0     Extended data for Get Log Page Not Supported
  [1:1] : 0x1   Command Effects Log Page Supported
  [0:0] : 0x1   SMART/Health Log Page per NS Supported

elpe      : 63
npss      : 4
avscc     : 0x1
  [0:0] : 0x1   Admin Vendor Specific Commands uses NVMe Format

apsta     : 0x1
  [0:0] : 0x1   Autonomous Power State Transitions Supported

wctemp    : 342
cctemp    : 345
mtfa      : 0
hmpre     : 0
hmmin     : 0
tnvmcap   : 256060514304
unvmcap   : 0
rpmbs     : 0
 [31:24]: 0     Access Size
 [23:16]: 0     Total Size
  [5:3] : 0     Authentication Method
  [2:0] : 0     Number of RPMB Units

edstt     : 35
dsto      : 0
fwug      : 0
kas       : 0
hctma     : 0
  [0:0] : 0     Host Controlled Thermal Management Not Supported

mntmt     : 0
mxtmt     : 0
sanicap   : 0
  [31:30] : 0   Additional media modification after sanitize operation completes successfully is not defined
  [29:29] : 0   No-Deallocate After Sanitize bit in Sanitize command Supported
    [2:2] : 0   Overwrite Sanitize Operation Not Supported
    [1:1] : 0   Block Erase Sanitize Operation Not Supported
    [0:0] : 0   Crypto Erase Sanitize Operation Not Supported

hmminds   : 0
hmmaxd    : 0
nsetidmax : 0
anatt     : 0
anacap    : 0
  [7:7] : 0     Non-zero group ID Not Supported
  [6:6] : 0     Group ID does not change
  [4:4] : 0     ANA Change state Not Supported
  [3:3] : 0     ANA Persistent Loss state Not Supported
  [2:2] : 0     ANA Inaccessible state Not Supported
  [1:1] : 0     ANA Non-optimized state Not Supported
  [0:0] : 0     ANA Optimized state Not Supported

anagrpmax : 0
nanagrpid : 0
sqes      : 0x66
  [7:4] : 0x6   Max SQ Entry Size (64)
  [3:0] : 0x6   Min SQ Entry Size (64)

cqes      : 0x44
  [7:4] : 0x4   Max CQ Entry Size (16)
  [3:0] : 0x4   Min CQ Entry Size (16)

maxcmd    : 0
nn        : 1
oncs      : 0x1f
  [7:7] : 0     Verify Not Supported
  [6:6] : 0     Timestamp Not Supported
  [5:5] : 0     Reservations Not Supported
  [4:4] : 0x1   Save and Select Supported
  [3:3] : 0x1   Write Zeroes Supported
  [2:2] : 0x1   Data Set Management Supported
  [1:1] : 0x1   Write Uncorrectable Supported
  [0:0] : 0x1   Compare Supported

fuses     : 0
  [0:0] : 0     Fused Compare and Write Not Supported

fna       : 0x4
  [2:2] : 0x1   Crypto Erase Supported as part of Secure Erase
  [1:1] : 0     Crypto Erase Applies to Single Namespace(s)
  [0:0] : 0     Format Applies to Single Namespace(s)

vwc       : 0x1
  [0:0] : 0x1   Volatile Write Cache Present

awun      : 255
awupf     : 0
nvscc     : 1
  [0:0] : 0x1   NVM Vendor Specific Commands uses NVMe Format

nwpc      : 0
  [2:2] : 0     Permanent Write Protect Not Supported
  [1:1] : 0     Write Protect Until Power Supply Not Supported
  [0:0] : 0     No Write Protect and Write Protect Namespace Not Supported

acwu      : 0
sgls      : 0
 [1:0]  : 0     Scatter-Gather Lists Not Supported

mnan      : 0
subnqn    :
ioccsz    : 0
iorcsz    : 0
icdoff    : 0
ctrattr   : 0
  [0:0] : 0     Dynamic Controller Model

msdbd     : 0
ps    0 : mp:7.60W operational enlat:0 exlat:0 rrt:0 rrl:0
          rwt:0 rwl:0 idle_power:- active_power:-
ps    1 : mp:6.00W operational enlat:0 exlat:0 rrt:1 rrl:1
          rwt:1 rwl:1 idle_power:- active_power:-
ps    2 : mp:5.10W operational enlat:0 exlat:0 rrt:2 rrl:2
          rwt:2 rwl:2 idle_power:- active_power:-
ps    3 : mp:0.0400W non-operational enlat:210 exlat:1500 rrt:3 rrl:3
          rwt:3 rwl:3 idle_power:- active_power:-
ps    4 : mp:0.0050W non-operational enlat:2200 exlat:6000 rrt:4 rrl:4
          rwt:4 rwl:4 idle_power:- active_power:-
root@rock-5b:~# smartctl -a /dev/nvme0n1
smartctl 7.1 2019-12-30 r5022 [aarch64-linux-5.10.66-27-rockchip-gea60d388902d] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       SAMSUNG MZVLW256HEHP-000L7
Serial Number:                      S35ENX0K704091
Firmware Version:                   5L7QCXB7
PCI Vendor/Subsystem ID:            0x144d
IEEE OUI Identifier:                0x002538
Total NVM Capacity:                 256,060,514,304 [256 GB]
Unallocated NVM Capacity:           0
Controller ID:                      2
Number of Namespaces:               1
Namespace 1 Size/Capacity:          256,060,514,304 [256 GB]
Namespace 1 Utilization:            31,610,621,952 [31.6 GB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            002538 b781b0106f
Local Time is:                      Sun Nov 13 15:27:21 2022 UTC
Firmware Updates (0x16):            3 Slots, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x001f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat
Warning  Comp. Temp. Threshold:     69 Celsius
Critical Comp. Temp. Threshold:     72 Celsius

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     7.60W       -        -    0  0  0  0        0       0
 1 +     6.00W       -        -    1  1  1  1        0       0
 2 +     5.10W       -        -    2  2  2  2        0       0
 3 -   0.0400W       -        -    3  3  3  3      210    1500
 4 -   0.0050W       -        -    4  4  4  4     2200    6000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        32 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    1%
Data Units Read:                    6,819,656 [3.49 TB]
Data Units Written:                 12,952,584 [6.63 TB]
Host Read Commands:                 164,105,546
Host Write Commands:                289,123,718
Controller Busy Time:               410
Power Cycles:                       877
Power On Hours:                     1,624
Unsafe Shutdowns:                   315
Media and Data Integrity Errors:    0
Error Information Log Entries:      1,325
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               32 Celsius
Temperature Sensor 2:               48 Celsius

Error Information (NVMe Log 0x01, max 64 entries)
Num   ErrCount  SQId   CmdId  Status  PELoc          LBA  NSID    VS
  0       1325     0  0x0001  0x4004  0x02c            0     0     -
  1       1324     0  0x0021  0x4004  0x02c            0     0     -
  2       1323     0  0x0020  0x4004  0x02c            0     0     -
  3       1322     0  0x0017  0x4004  0x02c            0     0     -
  4       1321     0  0x0016  0x4004  0x02c            0     0     -
  5       1320     0  0x0023  0x4004  0x02c            0     0     -
  6       1319     0  0x0022  0x4004  0x02c            0     0     -
  7       1318     0  0x001c  0x4212  0x028            0     -     -
  8       1317     0  0x0002  0x4004  0x028            0     0     -
  9       1316     0  0x0013  0x4004  0x02c            0     0     -
 10       1315     0  0x0012  0x4004  0x02c            0     0     -
 11       1314     0  0x0011  0x4004  0x02c            0     0     -
 12       1313     0  0x0010  0x4004  0x02c            0     0     -
 13       1312     0  0x0023  0x4004  0x02c            0     0     -
 14       1311     0  0x0022  0x4004  0x02c            0     0     -
 15       1310     0  0x001c  0x4212  0x028            0     -     -
... (48 entries not shown)

Any recomendations for config or a better efficiency focussed Nvme or maybe its just better to run and use Emmc?

Can u link us that heatsink?

Unfortunately not, it was salvaged from an old device (and old switch IIRC). What I can say is that it’s not particularly heavy, pure aluminum, and that its 20 fins are sufficient to keep the deivce cool.

1 Like

Just for fun, it is always amazing to see kmscube performance. kmscube works with gstreamer and hardware acceleration. it has some hiccups if running for a while. kmscube is a little gem to check if gbm/opengles is working.

kmscube playing jellyfish-30-mbps-hd-hevc.mkv

The Rockchip SDK is updated. The latest release tag is rkr3.4:

https://gitlab.com/rk3588_linux/linux/linux-rga/-/commits/linux-5.10-gen-rkr3.4

5 Likes

Good News!

Gstreamer hw decode works! (16 GB ram)

Thank you!

Update:
Unfortunately FFmpeg broke for > 4GB RAM.
[ 3362.448831] rga_mm: RGA_MMU unsupported Memory larger than 4G!

2 Likes

Adding mem=4G to the kernel parameter allow ffplay to run fine, but who wants a 16GB board to address only 4GB?

The problem seems here:

static int rga_mm_map_virt_addr(struct rga_external_buffer *external_buffer,
				struct rga_internal_buffer *internal_buffer,
				struct rga_job *job, int write_flag)
{
	int ret;
	uint32_t mm_flag = 0;
	phys_addr_t phys_addr = 0;
	struct sg_table *sgt;
	struct rga_virt_addr *virt_addr;
	struct rga_dma_buffer *buffer;
	struct rga_scheduler_t *scheduler;

	scheduler = job ? job->scheduler :
		    rga_drvdata->scheduler[rga_drvdata->map_scheduler_index];
	if (scheduler == NULL) {
		pr_err("Invalid scheduler device!\n");
		return -EINVAL;
	}

	internal_buffer->current_mm = job ? job->mm : current->mm;
	if (internal_buffer->current_mm == NULL) {
		pr_err("%s, cannot get current mm!\n", __func__);
		return -EFAULT;
	}
	mmgrab(internal_buffer->current_mm);
	mmget(internal_buffer->current_mm);

	ret = rga_alloc_virt_addr(&virt_addr,
				  external_buffer->memory,
				  &internal_buffer->memory_parm,
				  write_flag, internal_buffer->current_mm);
	if (ret < 0) {
		pr_err("Can not alloc rga_virt_addr from 0x%lx\n",
		       (unsigned long)external_buffer->memory);
		goto put_current_mm;
	}

	sgt = rga_alloc_sgt(virt_addr);
	if (IS_ERR(sgt)) {
		pr_err("alloc sgt error!\n");
		ret = PTR_ERR(sgt);
		goto free_virt_addr;
	}

	if (rga_mm_check_range_sgt(sgt))
		mm_flag |= RGA_MEM_UNDER_4G;

Any chance you guys that work at the kernel level see how it can be fixed? Or do we need to wait for ROCKCHIP?

To play video + audio with gstreamer, take this example as a reference:

  • 4K video: tos-4096x1720-tiles.mkv

wget https://www.libde265.org/hevc-bitstreams/tos-4096x1720-tiles.mkv

  • Find info from the file

gst-discoverer-1.0 -v tos-4096x1720-tiles.mkv
Analyzing file:///home/rock/videos/tos-4096x1720-tiles.mkv
Done discovering file:///home/rock/videos/tos-4096x1720-tiles.mkv

Properties:
Duration: 0:12:14.167000000
Seekable: yes
Live: no
Tags:
datetime: 2014-03-24T10:14:59Z
container format: Matroska
language code: hr
video codec: HEVC
audio codec: AC-3 audio
bitrate: 448000
container #0: video/x-matroska
Tags:
datetime: 2014-03-24T10:14:59Z
container format: Matroska

subtitles #1: text/x-raw, format=(string)pango-markup
  Tags:
    language code: zh
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/022:6127438753834287793
  Language: zh
subtitles #2: text/x-raw, format=(string)pango-markup
  Tags:
    language code: ru
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/021:2996926837996703760
  Language: ru
subtitles #3: text/x-raw, format=(string)pango-markup
  Tags:
    language code: pt
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/020:12688794582256849723
  Language: pt
subtitles #4: text/x-raw, format=(string)pango-markup
  Tags:
    language code: pl
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/019:6548281937719436132
  Language: pl
subtitles #5: text/x-raw, format=(string)pango-markup
  Tags:
    None
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/018:6649083132800417442
  Language: <unknown>
subtitles #6: text/x-raw, format=(string)pango-markup
  Tags:
    language code: no
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/017:5423378025951214389
  Language: no
subtitles #7: text/x-raw, format=(string)pango-markup
  Tags:
    language code: nl
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/016:5426132492862115900
  Language: nl
subtitles #8: text/x-raw, format=(string)pango-markup
  Tags:
    language code: ja
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/015:374754663205129006
  Language: ja
subtitles #9: text/x-raw, format=(string)pango-markup
  Tags:
    language code: it
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/014:2669148334558597565
  Language: it
subtitles #10: text/x-raw, format=(string)pango-markup
  Tags:
    language code: id
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/013:6707731850909593410
  Language: id
subtitles #11: text/x-raw, format=(string)pango-markup
  Tags:
    language code: hu
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/012:7539619876409373934
  Language: hu
subtitles #12: text/x-raw, format=(string)pango-markup
  Tags:
    language code: he
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/011:13765989506890206518
  Language: he
subtitles #13: text/x-raw, format=(string)pango-markup
  Tags:
    language code: el
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/010:289831254137758481
  Language: el
subtitles #14: text/x-raw, format=(string)pango-markup
  Tags:
    language code: fr
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/009:14676991926035797370
  Language: fr
subtitles #15: text/x-raw, format=(string)pango-markup
  Tags:
    language code: es
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/008:3198951927705842563
  Language: es
subtitles #16: text/x-raw, format=(string)pango-markup
  Tags:
    language code: en
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/007:12642808222127685196
  Language: en
subtitles #17: text/x-raw, format=(string)pango-markup
  Tags:
    language code: de
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/006:16670346270297722672
  Language: de
subtitles #18: text/x-raw, format=(string)pango-markup
  Tags:
    language code: da
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/005:18253711744446555700
  Language: da
subtitles #19: text/x-raw, format=(string)pango-markup
  Tags:
    language code: cs
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/004:15179137146932893810
  Language: cs
subtitles #20: text/x-raw, format=(string)pango-markup
  Tags:
    language code: hr
  
  Codec:
    text/x-raw, format=(string)pango-markup
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/003:16329369186598960823
  Language: hr
audio #21: audio/x-ac3, framed=(boolean)true, rate=(int)48000, channels=(int)6, alignment=(string)frame
  Tags:
    audio codec: AC-3 audio
    language code: en
    bitrate: 448000
  
  Codec:
    audio/x-ac3, framed=(boolean)true, rate=(int)48000, channels=(int)6, alignment=(string)frame
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/002:9026298532734705346
  Language: en
  Channels: 6 (front-left, front-right, front-center, lfe1, rear-left, rear-right)
  Sample rate: 48000
  Depth: 32
  Bitrate: 448000
  Max bitrate: 0
video #22: video/x-h265, tier=(string)main, profile=(string)main, codec_data=(buffer)01016000000000000000000000f000fcfdf8f800001303200001001d40010c02ffff0160000003000003000003000003000003000095ca4812210001003842010201600000030000030000030000030000030000a000800801ae7c99657293248dbbbd869622aa4c4c32fb3ebcdf967d7851189cbb6422000100084401c1a558442712, stream-format=(string)hvc1, alignment=(string)au, width=(int)4096, height=(int)1720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)24/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
  Tags:
    video codec: HEVC
  
  Codec:
    video/x-h265, tier=(string)main, profile=(string)main, codec_data=(buffer)01016000000000000000000000f000fcfdf8f800001303200001001d40010c02ffff0160000003000003000003000003000003000095ca4812210001003842010201600000030000030000030000030000030000a000800801ae7c99657293248dbbbd869622aa4c4c32fb3ebcdf967d7851189cbb6422000100084401c1a558442712, stream-format=(string)hvc1, alignment=(string)au, width=(int)4096, height=(int)1720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)24/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
  Stream ID: eeac6aed5bbf8d2f0eca1661fa7d49a127d0511c69d5062e80389d790fa623b1/001:15865973693987233553
  Width: 4096
  Height: 1714
  Depth: 24
  Frame rate: 24/1
  Pixel aspect ratio: 1/1
  Interlaced: false
  Bitrate: 0
  Max bitrate: 0
  • Play the video + audio from the default sound configuration (pulseaudio?)

GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=tos-4096x1720-tiles.mkv ! matroskademux name=demux demux.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! autoaudiosink demux.video_0 ! queue ! h265parse ! mppvideodec ! glimagesink

  • Play video + audio to specific device using alsa

GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=tos-4096x1720-tiles.mkv ! matroskademux name=demux demux.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! alsasink device=“hw:0,0” demux.video_0 ! queue ! h265parse ! mppvideodec ! glimagesink

HDMI - 1:

GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=tos-4096x1720-tiles.mkv ! matroskademux name=demux demux.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! alsasink device="hw:0,0" demux.video_0 ! queue ! h265parse ! mppvideodec ! glimagesink

headphone jack :

GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=tos-4096x1720-tiles.mkv ! matroskademux name=demux demux.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! alsasink device=“hw:2,0” demux.video_0 ! queue ! h265parse ! mppvideodec ! glimagesink

This message seems hard-coded so there might be a limitation somewhere that the driver works around with just a test and the refusal to work. Maybe one accelerator only has a 32-bit address bus, or some descriptors carry 32-bit pointers, a bit like some old hardware that require bounce buffers in the lower 4G. I really have zero knowledge of video stuff so it’s hard for me to tell, but you should look where this message is produced and check the conditions as well as any possible comment justifying this. Maybe you’ll find some workarounds such as forcing allocation of some areas in the lower 4G to make this work.

1 Like

That is what I thought would seem the code has a 32bit base maybe.
The flag above likely doesn’ matter but it also promted me to think the same that prob there are pointers/declarations that are 32bit maybe.
I never thought about the accelerators themselves but maybe they do have a 32bit namespace.

Can you force Linux to only use 4gb as a stop gap?
I should google more but prob someone already knows?
Some sort of memmap config.txt kernel option for now?
https://docs.pmem.io/persistent-memory/getting-started-guide/creating-development-environments/linux-environments/linux-memmap

If you can and it works then you know its definately what @willy said.

Usually its all mapped from upper to lower and maybe there is a fight going on between devices.
I am not sure how to get the rga_mmu mmap but would be something like, where the upper address is mapped to a lower address.

cat /proc/733/maps
555ced0000-555ced5000 r-xp 00000000 b3:62 63889                          /usr/sbin/kerneloops
555cee4000-555cee5000 r--p 00004000 b3:62 63889                          /usr/sbin/kerneloops
555cee5000-555cee6000 rw-p 00005000 b3:62 63889                          /usr/sbin/kerneloops
555cee6000-555cee7000 rw-p 00000000 00:00 0
5585921000-5585942000 rw-p 00000000 00:00 0                              [heap]
7fac2cd000-7fac2ec000 r-xp 00000000 b3:62 2034                           /usr/lib/aarch64-linux-gnu/libgpg-error.so.0.28.0
7fac2ec000-7fac2fb000 ---p 0001f000 b3:62 2034                           /usr/lib/aarch64-linux-gnu/libgpg-error.so.0.28.0
7fac2fb000-7fac2fc000 r--p 0001e000 b3:62 2034                           /usr/lib/aarch64-linux-gnu/libgpg-error.so.0.28.0
7fac2fc000-7fac2fd000 rw-p 0001f000 b3:62 2034                           /usr/lib/aarch64-linux-gnu/libgpg-error.so.0.28.0
7fac2fd000-7fac37a000 r-xp 00000000 b3:62 205                            /usr/lib/aarch64-linux-gnu/libpcre2-8.so.0.9.0
7fac37a000-7fac389000 ---p 0007d000 b3:62 205                            /usr/lib/aarch64-linux-gnu/libpcre2-8.so.0.9.0
7fac389000-7fac38a000 r--p 0007c000 b3:62 205                            /usr/lib/aarch64-linux-gnu/libpcre2-8.so.0.9.0
7fac38a000-7fac38b000 rw-p 0007d000 b3:62 205                            /usr/lib/aarch64-linux-gnu/libpcre2-8.so.0.9.0
7fac38b000-7fac3dc000 r-xp 00000000 b3:62 88                             /usr/lib/aarch64-linux-gnu/libblkid.so.1.1.0
7fac3dc000-7fac3ec000 ---p 00051000 b3:62 88                             /usr/lib/aarch64-linux-gnu/libblkid.so.1.1.0
7fac3ec000-7fac3f1000 r--p 00051000 b3:62 88                             /usr/lib/aarch64-linux-gnu/libblkid.so.1.1.0
7fac3f1000-7fac3f2000 rw-p 00056000 b3:62 88                             /usr/lib/aarch64-linux-gnu/libblkid.so.1.1.0
7fac3f2000-7fac4a8000 r-xp 00000000 b3:62 2603                           /usr/lib/aarch64-linux-gnu/libgcrypt.so.20.2.5
7fac4a8000-7fac4b7000 ---p 000b6000 b3:62 2603                           /usr/lib/aarch64-linux-gnu/libgcrypt.so.20.2.5
7fac4b7000-7fac4b9000 r--p 000b5000 b3:62 2603                           /usr/lib/aarch64-linux-gnu/libgcrypt.so.20.2.5
7fac4b9000-7fac4be000 rw-p 000b7000 b3:62 2603                           /usr/lib/aarch64-linux-gnu/libgcrypt.so.20.2.5
7fac4be000-7fac4db000 r-xp 00000000 b3:62 2755                           /usr/lib/aarch64-linux-gnu/liblz4.so.1.9.2
7fac4db000-7fac4ea000 ---p 0001d000 b3:62 2755                           /usr/lib/aarch64-linux-gnu/liblz4.so.1.9.2
7fac4ea000-7fac4eb000 r--p 0001c000 b3:62 2755                           /usr/lib/aarch64-linux-gnu/liblz4.so.1.9.2
7fac4eb000-7fac4ec000 rw-p 0001d000 b3:62 2755                           /usr/lib/aarch64-linux-gnu/liblz4.so.1.9.2
7fac4ec000-7fac50f000 r-xp 00000000 b3:62 3557                           /usr/lib/aarch64-linux-gnu/liblzma.so.5.2.4
7fac50f000-7fac51e000 ---p 00023000 b3:62 3557                           /usr/lib/aarch64-linux-gnu/liblzma.so.5.2.4
7fac51e000-7fac51f000 r--p 00022000 b3:62 3557                           /usr/lib/aarch64-linux-gnu/liblzma.so.5.2.4
7fac51f000-7fac520000 rw-p 00023000 b3:62 3557                           /usr/lib/aarch64-linux-gnu/liblzma.so.5.2.4
7fac520000-7fac527000 r-xp 00000000 b3:62 4704                           /usr/lib/aarch64-linux-gnu/librt-2.31.so
7fac527000-7fac536000 ---p 00007000 b3:62 4704                           /usr/lib/aarch64-linux-gnu/librt-2.31.so
7fac536000-7fac537000 r--p 00006000 b3:62 4704                           /usr/lib/aarch64-linux-gnu/librt-2.31.so
7fac537000-7fac538000 rw-p 00007000 b3:62 4704                           /usr/lib/aarch64-linux-gnu/librt-2.31.so
7fac538000-7fac540000 r-xp 00000000 b3:62 2097                           /usr/lib/aarch64-linux-gnu/libffi.so.7.1.0
7fac540000-7fac54f000 ---p 00008000 b3:62 2097                           /usr/lib/aarch64-linux-gnu/libffi.so.7.1.0
7fac54f000-7fac550000 r--p 00007000 b3:62 2097                           /usr/lib/aarch64-linux-gnu/libffi.so.7.1.0
7fac550000-7fac551000 rw-p 00008000 b3:62 2097                           /usr/lib/aarch64-linux-gnu/libffi.so.7.1.0
7fac551000-7fac564000 r-xp 00000000 b3:62 4472                           /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
7fac564000-7fac573000 ---p 00013000 b3:62 4472                           /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
7fac573000-7fac574000 r--p 00012000 b3:62 4472                           /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
7fac574000-7fac575000 rw-p 00013000 b3:62 4472                           /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
7fac575000-7fac577000 rw-p 00000000 00:00 0
7fac577000-7fac59c000 r-xp 00000000 b3:62 2072                           /usr/lib/aarch64-linux-gnu/libselinux.so.1
7fac59c000-7fac5ab000 ---p 00025000 b3:62 2072                           /usr/lib/aarch64-linux-gnu/libselinux.so.1
7fac5ab000-7fac5ac000 r--p 00024000 b3:62 2072                           /usr/lib/aarch64-linux-gnu/libselinux.so.1
7fac5ac000-7fac5ad000 rw-p 00025000 b3:62 2072                           /usr/lib/aarch64-linux-gnu/libselinux.so.1
7fac5ad000-7fac5af000 rw-p 00000000 00:00 0
7fac5af000-7fac60a000 r-xp 00000000 b3:62 313                            /usr/lib/aarch64-linux-gnu/libmount.so.1.1.0
7fac60a000-7fac61a000 ---p 0005b000 b3:62 313                            /usr/lib/aarch64-linux-gnu/libmount.so.1.1.0
7fac61a000-7fac61c000 r--p 0005b000 b3:62 313                            /usr/lib/aarch64-linux-gnu/libmount.so.1.1.0
7fac61c000-7fac61d000 rw-p 0005d000 b3:62 313                            /usr/lib/aarch64-linux-gnu/libmount.so.1.1.0
7fac61d000-7fac620000 r-xp 00000000 b3:62 2114                           /usr/lib/aarch64-linux-gnu/libdl-2.31.so
7fac620000-7fac62f000 ---p 00003000 b3:62 2114                           /usr/lib/aarch64-linux-gnu/libdl-2.31.so
7fac62f000-7fac630000 r--p 00002000 b3:62 2114                           /usr/lib/aarch64-linux-gnu/libdl-2.31.so
7fac630000-7fac631000 rw-p 00003000 b3:62 2114                           /usr/lib/aarch64-linux-gnu/libdl-2.31.so
7fac631000-7fac64a000 r-xp 00000000 b3:62 6249                           /usr/lib/aarch64-linux-gnu/libz.so.1.2.11
7fac64a000-7fac659000 ---p 00019000 b3:62 6249                           /usr/lib/aarch64-linux-gnu/libz.so.1.2.11
7fac659000-7fac65a000 r--p 00018000 b3:62 6249                           /usr/lib/aarch64-linux-gnu/libz.so.1.2.11
7fac65a000-7fac65b000 rw-p 00019000 b3:62 6249                           /usr/lib/aarch64-linux-gnu/libz.so.1.2.11
7fac65b000-7fac65e000 r-xp 00000000 b3:62 820                            /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0.6400.6
7fac65e000-7fac66d000 ---p 00003000 b3:62 820                            /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0.6400.6
7fac66d000-7fac66e000 r--p 00002000 b3:62 820                            /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0.6400.6
7fac66e000-7fac66f000 rw-p 00003000 b3:62 820                            /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0.6400.6
7fac66f000-7fac6d0000 r-xp 00000000 b3:62 4048                           /usr/lib/aarch64-linux-gnu/libpcre.so.3.13.3
7fac6d0000-7fac6df000 ---p 00061000 b3:62 4048                           /usr/lib/aarch64-linux-gnu/libpcre.so.3.13.3
7fac6df000-7fac6e0000 r--p 00060000 b3:62 4048                           /usr/lib/aarch64-linux-gnu/libpcre.so.3.13.3
7fac6e0000-7fac6e1000 rw-p 00061000 b3:62 4048                           /usr/lib/aarch64-linux-gnu/libpcre.so.3.13.3
7fac6e1000-7fac789000 r-xp 00000000 b3:62 5497                           /usr/lib/aarch64-linux-gnu/libsystemd.so.0.28.0
7fac789000-7fac799000 ---p 000a8000 b3:62 5497                           /usr/lib/aarch64-linux-gnu/libsystemd.so.0.28.0
7fac799000-7fac79c000 r--p 000a8000 b3:62 5497                           /usr/lib/aarch64-linux-gnu/libsystemd.so.0.28.0
7fac79c000-7fac79d000 rw-p 000ab000 b3:62 5497                           /usr/lib/aarch64-linux-gnu/libsystemd.so.0.28.0
7fac79d000-7fac79e000 rw-p 00000000 00:00 0
7fac79e000-7fac7ba000 r-xp 00000000 b3:62 4466                           /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
7fac7ba000-7fac7c9000 ---p 0001c000 b3:62 4466                           /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
7fac7c9000-7fac7ca000 r--p 0001b000 b3:62 4466                           /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
7fac7ca000-7fac7cb000 rw-p 0001c000 b3:62 4466                           /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
7fac7cb000-7fac7cf000 rw-p 00000000 00:00 0
7fac7cf000-7fac82d000 r-xp 00000000 b3:62 1268                           /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0.6400.6
7fac82d000-7fac83c000 ---p 0005e000 b3:62 1268                           /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0.6400.6
7fac83c000-7fac83f000 r--p 0005d000 b3:62 1268                           /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0.6400.6
7fac83f000-7fac840000 rw-p 00060000 b3:62 1268                           /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0.6400.6
7fac840000-7fac841000 rw-p 00000000 00:00 0
7fac841000-7faca23000 r-xp 00000000 b3:62 262                            /usr/lib/aarch64-linux-gnu/libgio-2.0.so.0.6400.6
7faca23000-7faca33000 ---p 001e2000 b3:62 262                            /usr/lib/aarch64-linux-gnu/libgio-2.0.so.0.6400.6
7faca33000-7faca3b000 r--p 001e2000 b3:62 262                            /usr/lib/aarch64-linux-gnu/libgio-2.0.so.0.6400.6
7faca3b000-7faca3c000 rw-p 001ea000 b3:62 262                            /usr/lib/aarch64-linux-gnu/libgio-2.0.so.0.6400.6
7faca3c000-7faca3e000 rw-p 00000000 00:00 0
7faca3e000-7facb99000 r-xp 00000000 b3:62 462                            /usr/lib/aarch64-linux-gnu/libc-2.31.so
7facb99000-7facba8000 ---p 0015b000 b3:62 462                            /usr/lib/aarch64-linux-gnu/libc-2.31.so
7facba8000-7facbac000 r--p 0015a000 b3:62 462                            /usr/lib/aarch64-linux-gnu/libc-2.31.so
7facbac000-7facbae000 rw-p 0015e000 b3:62 462                            /usr/lib/aarch64-linux-gnu/libc-2.31.so
7facbae000-7facbb1000 rw-p 00000000 00:00 0
7facbb1000-7faccd8000 r-xp 00000000 b3:62 307                            /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.6400.6
7faccd8000-7facce8000 ---p 00127000 b3:62 307                            /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.6400.6
7facce8000-7facce9000 r--p 00127000 b3:62 307                            /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.6400.6
7facce9000-7faccea000 rw-p 00128000 b3:62 307                            /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.6400.6
7faccea000-7facceb000 rw-p 00000000 00:00 0
7facceb000-7facd3a000 r-xp 00000000 b3:62 3562                           /usr/lib/aarch64-linux-gnu/libdbus-1.so.3.19.11
7facd3a000-7facd49000 ---p 0004f000 b3:62 3562                           /usr/lib/aarch64-linux-gnu/libdbus-1.so.3.19.11
7facd49000-7facd4a000 r--p 0004e000 b3:62 3562                           /usr/lib/aarch64-linux-gnu/libdbus-1.so.3.19.11
7facd4a000-7facd4b000 rw-p 0004f000 b3:62 3562                           /usr/lib/aarch64-linux-gnu/libdbus-1.so.3.19.11
7facd4b000-7facd70000 r-xp 00000000 b3:62 63731                          /usr/lib/aarch64-linux-gnu/libdbus-glib-1.so.2.3.4
7facd70000-7facd80000 ---p 00025000 b3:62 63731                          /usr/lib/aarch64-linux-gnu/libdbus-glib-1.so.2.3.4
7facd80000-7facd82000 r--p 00025000 b3:62 63731                          /usr/lib/aarch64-linux-gnu/libdbus-glib-1.so.2.3.4
7facd82000-7facd83000 rw-p 00027000 b3:62 63731                          /usr/lib/aarch64-linux-gnu/libdbus-glib-1.so.2.3.4
7facd97000-7facdb8000 r-xp 00000000 b3:62 458                            /usr/lib/aarch64-linux-gnu/ld-2.31.so
7facdb9000-7facdc5000 rw-p 00000000 00:00 0
7facdc5000-7facdc7000 r--p 00000000 00:00 0                              [vvar]
7facdc7000-7facdc8000 r-xp 00000000 00:00 0                              [vdso]
7facdc8000-7facdc9000 r--p 00021000 b3:62 458                            /usr/lib/aarch64-linux-gnu/ld-2.31.so
7facdc9000-7facdcb000 rw-p 00022000 b3:62 458                            /usr/lib/aarch64-linux-gnu/ld-2.31.so
7fd0704000-7fd0725000 rw-p 00000000 00:00 0                              [stack]

Found it doh! Or at least where I thought it would be.

cat /proc/iomem

00000000-00000000 : 10f000.sram sram@10f000
00000000-00000000 : ramoops:dmesg
00000000-00000000 : ramoops:console
00000000-00000000 : ramoops:pmsg
00000000-00000000 : System RAM
  00000000-00000000 : Kernel code
  00000000-00000000 : reserved
  00000000-00000000 : Kernel data
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
00000000-00000000 : pcie@fe150000
  00000000-00000000 : PCI Bus 0000:01
    00000000-00000000 : 0000:01:00.0
      00000000-00000000 : nvme
  00000000-00000000 : 0000:00:00.0
00000000-00000000 : pcie@fe190000
  00000000-00000000 : PCI Bus 0004:41
    00000000-00000000 : 0004:41:00.0
      00000000-00000000 : r8125
    00000000-00000000 : 0004:41:00.0
      00000000-00000000 : r8125
  00000000-00000000 : 0004:40:00.0
00000000-00000000 : fb000000.gpu
00000000-00000000 : fc000000.usb usb@fc000000
00000000-00000000 : usb@fc400000
  00000000-00000000 : xhci-hcd.11.auto usb@fc400000
00000000-00000000 : fc400000.usb usb@fc400000
00000000-00000000 : fc800000.usb usb@fc800000
00000000-00000000 : fc840000.usb usb@fc840000
00000000-00000000 : fc880000.usb usb@fc880000
00000000-00000000 : fc8c0000.usb usb@fc8c0000
00000000-00000000 : usb@fcd00000
  00000000-00000000 : xhci-hcd.10.auto usb@fcd00000
00000000-00000000 : fcd00000.usb usb@fcd00000
00000000-00000000 : fd880000.i2c i2c@fd880000
00000000-00000000 : fd8a0000.gpio gpio@fd8a0000
00000000-00000000 : fda40000.pvtm pvtm@fda40000
00000000-00000000 : fda50000.pvtm pvtm@fda50000
00000000-00000000 : fda60000.pvtm pvtm@fda60000
00000000-00000000 : fdab9000.iommu iommu@fdab9000
00000000-00000000 : fdab9000.iommu iommu@fdab9000
00000000-00000000 : fdab9000.iommu iommu@fdab9000
00000000-00000000 : fdab9000.iommu iommu@fdab9000
00000000-00000000 : fdaf0000.pvtm pvtm@fdaf0000
00000000-00000000 : fdb30000.pvtm pvtm@fdb30000
00000000-00000000 : fdb50800.iommu iommu@fdb50800
00000000-00000000 : fdb60f00.iommu iommu@fdb60f00
00000000-00000000 : fdb70f00.iommu iommu@fdb70f00
00000000-00000000 : fdb90480.iommu iommu@fdb90480
00000000-00000000 : fdba0800.iommu iommu@fdba0800
00000000-00000000 : fdba4800.iommu iommu@fdba4800
00000000-00000000 : fdba8800.iommu iommu@fdba8800
00000000-00000000 : fdbac800.iommu iommu@fdbac800
00000000-00000000 : fdbb0800.iommu iommu@fdbb0800
00000000-00000000 : fdbdf000.iommu iommu@fdbdf000
00000000-00000000 : fdbdf000.iommu iommu@fdbdf000
00000000-00000000 : fdbef000.iommu iommu@fdbef000
00000000-00000000 : fdbef000.iommu iommu@fdbef000
00000000-00000000 : fdc38700.iommu iommu@fdc38700
00000000-00000000 : fdc38700.iommu iommu@fdc38700
00000000-00000000 : fdc48700.iommu iommu@fdc48700
00000000-00000000 : fdc48700.iommu iommu@fdc48700
00000000-00000000 : fdd90000.vop regs
00000000-00000000 : fdd90000.vop gamma_lut
00000000-00000000 : fdd97e00.iommu iommu@fdd97e00
00000000-00000000 : fdd97e00.iommu iommu@fdd97e00
00000000-00000000 : fddf0000.i2s i2s@fddf0000
00000000-00000000 : fddf4000.i2s i2s@fddf4000
00000000-00000000 : fddf8000.i2s i2s@fddf8000
00000000-00000000 : fde50000.dp dp@fde50000
00000000-00000000 : fde80000.hdmi hdmi@fde80000
00000000-00000000 : fdea0000.hdmi hdmi@fdea0000
00000000-00000000 : fdee0000.hdmirx-controller hdmirx_regs
00000000-00000000 : fe060000.dfi dfi@fe060000
00000000-00000000 : fe150000.pcie pcie-apb
00000000-00000000 : fe190000.pcie pcie-apb
00000000-00000000 : fe2b0000.spi spi@fe2b0000
00000000-00000000 : fe2c0000.mmc mmc@fe2c0000
00000000-00000000 : fe2d0000.mmc mmc@fe2d0000
00000000-00000000 : fe2e0000.mmc mmc@fe2e0000
00000000-00000000 : fe378000.rng rng@fe378000
00000000-00000000 : fe470000.i2s i2s@fe470000
00000000-00000000 : dma-controller@fea10000
  00000000-00000000 : fea10000.dma-controller dma-controller@fea10000
00000000-00000000 : dma-controller@fea30000
  00000000-00000000 : fea30000.dma-controller dma-controller@fea30000
00000000-00000000 : fea90000.i2c i2c@fea90000
00000000-00000000 : feac0000.i2c i2c@feac0000
00000000-00000000 : feb20000.spi spi@feb20000
00000000-00000000 : serial
00000000-00000000 : serial
00000000-00000000 : fec00000.tsadc tsadc@fec00000
00000000-00000000 : fec10000.saradc saradc@fec10000
00000000-00000000 : fec20000.gpio gpio@fec20000
00000000-00000000 : fec30000.gpio gpio@fec30000
00000000-00000000 : fec40000.gpio gpio@fec40000
00000000-00000000 : fec50000.gpio gpio@fec50000
00000000-00000000 : fec80000.i2c i2c@fec80000
00000000-00000000 : fec90000.i2c i2c@fec90000
00000000-00000000 : fecc0000.otp otp@fecc0000
00000000-00000000 : dma-controller@fed10000
  00000000-00000000 : fed10000.dma-controller dma-controller@fed10000
00000000-00000000 : fed60000.hdmiphy hdmiphy@fed60000
00000000-00000000 : fed70000.hdmiphy hdmiphy@fed70000
00000000-00000000 : fed80000.phy phy@fed80000
00000000-00000000 : fed90000.phy phy@fed90000
00000000-00000000 : fee00000.phy phy@fee00000
00000000-00000000 : fee10000.phy phy@fee10000
00000000-00000000 : fee20000.phy phy@fee20000
00000000-00000000 : fee80000.phy phy@fee80000
00000000-00000000 : ff001000.sram sram@ff001000
00000000-00000000 : System RAM
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
  00000000-00000000 : reserved
00000000-00000000 : pcie@fe150000
00000000-00000000 : pcie@fe190000
00000000-00000000 : fe150000.pcie pcie-dbi
00000000-00000000 : fe190000.pcie pcie-dbi

There has been a load of commits to https://github.com/rockchip-linux/mpp/commits/develop of late and maybe it just needs an update?

c71d300e428a author: Jianqun Xu 2022-06-22 video: rockchip: mpp: reset buffer members when release buffer is what is running
/proc/mpp_service

As even the rk3588 was only added to the support list 17 days ago.

Anyone doing a ppa?

Maybe? Prob leave it to someone more capable as Avaf :slight_smile:

I presume we are missing all the commits above

RK3588 has two different 2D blit units, RGA2 and RGA3. RGA2 can only handle buffers in the lower 4 GB of RAM, but RGA3 uses an IOMMU that can access all memory.

Although the CMA area exists as a way to allocate memory below this 4 GB boundary, there doesn’t appear to be an easy way to actually get at that memory from userspace. The RGA2 kernel driver is broken in other ways (though one bug accidentally fixed a security vulnerability), so it’s basically unusable.

RGA3 does work, though the hardware doesn’t support some features that RGA2 does have (but it also has a few of its own, including one of questionable legality). This means that code using the RGA kernel driver has to be changed to fit within RGA3’s limitations.

This means that the correct librga version is required for things to work. Which version is that? No idea, I’ve only been looking at the kernel: the only thing worse than the BSP kernel is the associated userspace code…

2 Likes

Let me put in this way (my findings, my limited understanding):

  • I am using RGA3 with the latest librga (1.8.1[4])
  • Kernel RGA driver (rga3 branch tree) checks if physical memory > 4 GB then stops doing the conversion
  • ffmpeg uses virtual memory as a destination for RGA conversion, gstreamer uses fd (dma ?)
  • ffmpeg breaks if > 4GB, gstreamer not
  • gstreamer does not work with hevc 10bit, ffmpeg does.
  • testing RGA with pure conversion, virtual memory to virtual memory works fine, mpp not involved.
  • limiting the board with 16GB RAM to address only 4GB , FFmpeg and GStreamer work

Maybe @willy or @icecream95 can provide a sample of how this can be done. I would appreciate it.

I supposedly use the latest librga, but maybe there is a specific kernel fix somewhere.
You can freeze the board if using rga3 with kernel 5.10.66.

Maybe those commits avas as 10bit also seems to be there?

Lets find out, i don’t have this fix.

mpp got quite a few of late

Built everything from latest source, librga,mpp,gstreamer plugin, hevc-10bit still not working.

1 Like

Like and not like but thanks for trying :slight_smile:

PS that was like Lightning

Unfortunately I really have no idea :frowning: