[Letux-kernel] Lay common foundation to make PVR/SGX work without hacks on OMAP34xx, OMAP36xx, AM335x and potentially OMAP4, OMAP5
H. Nikolaus Schaller
hns at goldelico.com
Wed Feb 13 17:32:53 CET 2019
Hi Pawel,
> Am 13.02.2019 um 08:36 schrieb Paweł Chmiel <pawel.mikolaj.chmiel at gmail.com>:
>
> Do You have strace of pvrsrvinit run ? They should be almost identical to one which i have.
I have digged out a version where pvrsrvinit succeeds on our omap3530 based gta04 board (kernel 4.15.17).
oot at letux:~# strace pvrsrvctl --start --no-module
execve("/usr/local/bin/pvrsrvctl", ["pvrsrvctl", "--start", "--no-module"], [/* 14 vars */]) = 0
brk(0) = 0x12000
uname({sys="Linux", node="letux", ...}) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6efd000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/v7l/neon/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls/v7l/neon/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/v7l/neon/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls/v7l/neon", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/v7l/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls/v7l/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/v7l/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls/v7l", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/neon/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls/neon/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/neon/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls/neon", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/tls/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/tls", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/v7l/neon/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/v7l/neon/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/v7l/neon/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/v7l/neon", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/v7l/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/v7l/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/v7l/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/v7l", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/neon/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/neon/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/neon/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/neon", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/vfp/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib/vfp", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/usr/local/XSGX/lib/libsrv_init.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/local/XSGX/lib", 0xbeb3d420) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=45046, ...}) = 0
mmap2(NULL, 45046, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ef2000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libsrv_init.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0<\7\0\0004\0\0\0"..., 512) = 512
lseek(3, 94656, SEEK_SET) = 94656
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
lseek(3, 94346, SEEK_SET) = 94346
read(3, "A6\0\0\0aeabi\0\1,\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 55) = 55
fstat64(3, {st_mode=S_IFREG|0755, st_size=95696, ...}) = 0
mmap2(NULL, 127076, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6eb8000
mprotect(0xb6ecf000, 28672, PROT_NONE) = 0
mmap2(0xb6ed6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0xb6ed6000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0Mw\1\0004\0\0\0"..., 512) = 512
lseek(3, 908188, SEEK_SET) = 908188
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2880) = 2880
lseek(3, 904740, SEEK_SET) = 904740
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0755, st_size=911068, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ef1000
mmap2(NULL, 980392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6dc8000
mprotect(0xb6ea3000, 61440, PROT_NONE) = 0
mmap2(0xb6eb2000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xda000) = 0xb6eb2000
mmap2(0xb6eb5000, 9640, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6eb5000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libsrv_um.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\340#\0\0004\0\0\0"..., 512) = 512
lseek(3, 168544, SEEK_SET) = 168544
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1120) = 1120
lseek(3, 168210, SEEK_SET) = 168210
read(3, "A6\0\0\0aeabi\0\1,\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 55) = 55
fstat64(3, {st_mode=S_IFREG|0755, st_size=169664, ...}) = 0
mmap2(NULL, 200992, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d96000
mprotect(0xb6dbe000, 28672, PROT_NONE) = 0
mmap2(0xb6dc5000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x27000) = 0xb6dc5000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240\t\0\0004\0\0\0"..., 512) = 512
lseek(3, 8664, SEEK_SET) = 8664
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1160) = 1160
lseek(3, 8328, SEEK_SET) = 8328
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0644, st_size=9824, ...}) = 0
mmap2(NULL, 73912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d83000
mprotect(0xb6d85000, 61440, PROT_NONE) = 0
mmap2(0xb6d94000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6d94000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0EQ\0\0004\0\0\0"..., 512) = 512
lseek(3, 100684, SEEK_SET) = 100684
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1520) = 1520
lseek(3, 65940, SEEK_SET) = 65940
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0755, st_size=102204, ...}) = 0
mmap2(NULL, 139836, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d60000
mprotect(0xb6d70000, 61440, PROT_NONE) = 0
mmap2(0xb6d7f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0xb6d7f000
mmap2(0xb6d81000, 4668, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6d81000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0@\30\0\0004\0\0\0"..., 512) = 512
lseek(3, 21260, SEEK_SET) = 21260
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1320) = 1320
lseek(3, 20868, SEEK_SET) = 20868
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0644, st_size=22580, ...}) = 0
mmap2(NULL, 86588, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d4a000
mprotect(0xb6d4f000, 61440, PROT_NONE) = 0
mmap2(0xb6d5e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0xb6d5e000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\230\321\0\0004\0\0\0"..., 512) = 512
lseek(3, 99900, SEEK_SET) = 99900
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1120) = 1120
lseek(3, 99568, SEEK_SET) = 99568
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=101020, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ef0000
mmap2(NULL, 165160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d21000
mprotect(0xb6d3a000, 61440, PROT_NONE) = 0
mmap2(0xb6d49000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0xb6d49000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d20000
set_tls(0xb6d204c0, 0xb6f00058, 0xb6d20ba8, 0xb6d204c0, 0xb6f00058) = 0
mprotect(0xb6eb2000, 8192, PROT_READ) = 0
mprotect(0xb6d7f000, 4096, PROT_READ) = 0
mprotect(0xb6d5e000, 4096, PROT_READ) = 0
mprotect(0xb6d94000, 4096, PROT_READ) = 0
mprotect(0xb6dc5000, 8192, PROT_READ) = 0
mprotect(0xb6ed6000, 4096, PROT_READ) = 0
mprotect(0x10000, 4096, PROT_READ) = 0
mprotect(0xb6eff000, 4096, PROT_READ) = 0
munmap(0xb6ef2000, 45046) = 0
set_tid_address(0xb6d20068) = 2672
set_robust_list(0xb6d20070, 12) = 0
rt_sigaction(SIGRTMIN, {0xb6d64d9d, [], SA_RESTORER|SA_SIGINFO, 0xb6deeb01}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb6d64cbd, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0xb6deeb01}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0) = 0x12000
brk(0x33000) = 0x33000
open("/dev/pvrsrvkm", O_RDWR) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
ioctl(3, 0xc01c670c, 0xbeb3e9bc) = 0
ioctl(3, 0xc01c6744, 0xbeb3e9fc) = 0
ioctl(3, 0xc01c6700, 0xbeb3e8a4) = 0
ioctl(3, 0xc01c6701, 0xbeb3e90c) = 0
ioctl(3, 0xc01c6763, 0xbeb3e614) = 0
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000005000) = 0xb6efb000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000006000) = 0xb6efa000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000007000) = 0xb6ef9000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000008000) = 0xb6ef8000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000009000) = 0xb6ef7000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x8000000a000) = 0xb6ef6000
ioctl(3, 0xc01c6706, 0xbeb3e80c) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7cc) = 0
mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x8000000b000) = 0xb6d19000
open("/etc/powervr.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
open("powervr.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
ioctl(3, 0xc01c6706, 0xbeb3e80c) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7cc) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x8000000c000) = 0xb6ef5000
ioctl(3, 0xc01c6706, 0xbeb3e80c) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7cc) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x8000000d000) = 0xb6ef4000
ioctl(3, 0xc01c6706, 0xbeb3e7fc) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7bc) = 0
mmap2(NULL, 24576, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x8000000e000) = 0xb6d13000
ioctl(3, 0xc01c6706, 0xbeb3e7fc) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7bc) = 0
mmap2(NULL, 24576, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x8000000f000) = 0xb6d0d000
ioctl(3, 0xc01c6706, 0xbeb3e7fc) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7bc) = 0
mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000010000) = 0xb6d08000
ioctl(3, 0xc01c6706, 0xbeb3e7fc) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7bc) = 0
mmap2(NULL, 24576, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000011000) = 0xb6d02000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000012000) = 0xb6ef3000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000013000) = 0xb6ef2000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000014000) = 0xb6d01000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000015000) = 0xb6d00000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c670b, 0xbeb3e7e4) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x80000016000) = 0xb6cff000
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c6706, 0xbeb3e824) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6efb000, 8192) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6efa000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef9000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef7000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef8000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef6000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6d19000, 28672) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef5000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef4000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6d13000, 24576) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6d0d000, 24576) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6d02000, 24576) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6d08000, 20480) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef3000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6ef2000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6d01000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6d00000, 4096) = 0
ioctl(3, 0xc01c671b, 0xbeb3e8dc) = 0
munmap(0xb6cff000, 4096) = 0
ioctl(3, 0xc01c6764, 0xbeb3e91c) = 0
ioctl(3, 0xc01c6745, 0xbeb3e9ec) = 0
ioctl(3, 0xc01c670d, 0xbeb3e9c4) = 0
close(3) = 0
exit_group(0) = ?
+++ exited with 0 +++
root at letux:~#
root at letux:~# ls -l /dev/pvrsrvkm
crw------- 1 root root 240, 0 Jan 1 00:06 /dev/pvrsrvkm
root at letux:~# uname -a
Linux letux 4.15.17-letux+ #3337 SMP PREEMPT Wed Feb 13 16:56:27 CET 2019 armv7l GNU/Linux
root at letux:~# ./gpu-demo
autodetected driver package: omap3630-sgx530-125
compatible driver: omap3630_sgx530_125
System Version String: SGX revision = 125
----------------- SGX CLipBlit test -----------------
---------------------- Start ------------------------
Call PVRSRVConnect with a valid argument:
OK
Get number of devices from PVRSRVEnumerateDevices:
OK
.... Reported 1 devices
.... Device Number | Device Type
0000 | PVRSRV_DEVICE_ID_SGX
Attempt to acquire device 0:
OK
Getting SGX Client info
OK
.... ui32ProcessID:2691
Display Class API: enumerate devices
OK
PVRSRVEnumerateDeviceClass() returns 0 display device(s)
FAIL - PVRSRV_ERROR_NO_DC_DEVICES_FOUND(134)
./gpu-demo: line 71: 2691 Aborted sgx_clipblit_test
root at letux:~#
As you can see the firmware is loaded and connected successfully. Then it just fails to enumerate
a display which is the missing/unfixed omaplfb.
Some newer kernels did fail with
rt_sigaction(SIGRTMIN, {0xb6e07d9d, [], SA_RESTORER|SA_SIGINFO, 0xb6e91b01}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb6e07cbd, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0xb6e91b01}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0) = 0x12000
brk(0x33000) = 0x33000
open("/dev/pvrsrvkm", O_RDWR) = -1 ENOMEM (Cannot allocate memory)
write(2, "pvrsrvctl: SrvInit failed (alrea"..., 57pvrsrvctl: SrvInit failed (already initialized?) (err=4)
) = 57
exit_group(1) = ?
+++ exited with 1 +++
So I have to check what did break in between. And when. Most likely something with memory allocation.
Hope this helps!
BR,
Nikolaus
More information about the Letux-kernel
mailing list