FYI, hw decoding is fully working on a 4GB version.
The problem is with librga 1.8.1 which breaks rga conversation if > 4 GB. Tested with 5.10.110.
ROCK 5B Debug Party Invitation
Is librga 1.8.1 current or we just stuck with it due to dependency hell based on 5.10?
Radxa image used the librga 1.7.y which i think has some fixes. I used the one from sdk released on gitlab. There were a lot of toybrick related thing in the image that break dependencies, so i decide to build it from scratch.
A Rockchip member told me this should be fixed on the new SDK, i asked Jack and he said Radxa is working on this but it can take some time. At least we know where the problem is.
I have not tried mainline yet.
Will be great to see some ‘stats4nerds’ when running or is it only via gstreamer?
I have a 8gb…
Tested with ffplay.
rock@rock5b:~$ uname -ra
Linux rock5b 5.10.110-debugx #3 SMP Wed Nov 9 14:25:40 -03 2022 aarch64 aarch64 aarch64 GNU/Linux
rock@rock5b:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
rock@rock5b:~$
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
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:
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.
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.
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
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!
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.mkvProperties:
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: Matroskasubtitles #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.
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
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…
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?