Closed marsohod4you closed 4 years ago
oops.. I was thinking that driver reads wrong value from pp version register, but seem value CF070000 is okay - this is ID of mali-450 GPU.. So at this point still all is ok. But what is wrong then?
Do you have the logs from the X server once you started the es2_info application?
Hm.. after Your question i started to pay more attention to Xorg server.. I use Armbian, I stopped X server with command "service nodm stop" and now I start it manually with command "Xorg :0 -nolisten tcp vt7 -logverbose 7 &" From other ssh terminal I run "DISPLAY=:0 es2_info" and now I see that my Xorg just falls with message "Xorg: ../../../../include/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed."
I guess that when "nodm" was running I just had no chance to notice that Xorg crash and then immediatly restart.
Now I know for sure that Xorg stops/crashes. But I have no idea what can it be. I try googling but so many pages show same error "dixGetPrivateAddr: Assertion `key->initialized' failed."" and reasons are very different.
Maybe my Xorg config is wrong somehow? To be honest I have no idea what is proper config. I have file /usr/share/X11/xorg.conf.d/80-armsoc-sun4i.conf Section "Device" Identifier "ARMSOC DRM driver" Driver "armsoc" Option "DRI2" "true"
#Option "Debug" "true"
#Option "UMP_LOCK" "false"
EndSection
Section "Screen" Identifier "DefaultScreen" Device "ARMSOC DRM driver" DefaultDepth 24 EndSection
Hm.. I found that probably my manual method to start Xorg server was not correct.. On this page https://forums.xilinx.com/t5/Embedded-Linux/petalinux-2017-3-Xorg-crashes/td-p/814696 I see similar issue with Xorg crash message "Xorg: ../../../../include/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed."
But on the page they say another way to run Xorg: xinit /etc/X11/Xsession -- /usr/bin/Xorg -br -pn -nolisten tcp
When I start like this - then Xorg does not crash and continues to work. But anyway my issue "eglInitialize() fail" with error 3003 still there. And I do not see any specific log lines in /var/log/Xorg.0.log Actually I do not see any new log line when I start es2_info app.
Can you please paste all your Xorg logs?
hi After few month timeout i restarted my attempts to enable OpenGLES on OrangePi-PC2 board. Now I do it in different way but result unfortunately is nearly similar to previous (OpenGLES does not work and even simply Xorg does not work normally).
So I do: 1) get rather fresh buildroot-2019.02.1 and building system using this tool
2) in buildroot I set kernel version to 4.20.17 It was good to know that this version seem already has DTS entries for mali GPU in linux-4.20.17/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi So patching DTS is not required. Besides that I patched kernel with patch1 and patch2 otherwise I get error message ARMSOC(0): ERROR: Cannot allocate scanout buffer. So these patches help to fix this issue with scanout.
3) in buildroot they have option for HW handling Mali
This option actually takes sources from mripard's repo because buildroot mali kernel driver config file shows:
SUNXI_MALI_MAINLINE_DRIVER_VERSION = e28c274f85c65ebec82cdf0f8d021895e105d917 SUNXI_MALI_MAINLINE_DRIVER_SITE = $(call github,mripard,sunxi-mali,$(SUNXI_MALI_MAINLINE_DRIVER_VERSION))
4) buildroot provides user mode libraries for libMali from bootlin because config file shows:
SUNXI_MALI_MAINLINE_VERSION = d691cb93884ca8ac67860502117bbec283dc19aa SUNXI_MALI_MAINLINE_SITE = $(call github,bootlin,mali-blobs,$(SUNXI_MALI_MAINLINE_VERSION))
So kernel driver and user mode libGL.so libraries are built and installed by buildroot.
5) unfortunately buildroot does not have ARMSOC xf86_video_driver (not clear why) So I myself added into buildroot new package which builds and installs armsoc_drv to target system
6) my system is very simple, controlled via serial port console, no window manager or similar After I turn on my OrangePI-PC2 it boots normally and i can login into system via serial console as "root"
If I do not set up any /etc/X11/xorg.conf then I can manually start Xorg from console and then run xcalc application which immediatly appears on screen:
But, when I do setup /etc/X11/xorg.conf like this:
Section "Device" Identifier "Allwinner sun4i DRM driver" Driver "armsoc" Option "DRI2" "true" Option "ModeDebug" "yes" EndSection
and if I start Xorg manually same way then xcalc starts but does not appear on screen. Nothing happens.
Files /dev/mali and /dev/dri/card0 exist. In dmesg I see that mali driver is loaded and finds 4 cores. In Xorg log file I do not see error and I see ARMSOC is used.
So I am absolutely confused and do not know what to do next.
Attached is system boot log messages, also it has Xorg log
The only suspicious is Xorg log message:
(WW) Falling back to old probe method for armsoc
and
(==) ARMSOC(0): Backing store disabled
I have attached all logs which I have from console: orange-logs.txt
My questions are: 1) how can I enable more messages from Xorg? I googles but cannot find answer. I think that starting any x-application like xcalc must cause some log messages but I do not see them, I cannot enable more messages into /var/log/Xorg.0.log How to do? I tried -logverbose option to Xorg but seem nothing happen - no more messages.
2) is it enough just to use mali.ko? In sunxi-mali repository there are some addition drivers like these: mali_drm.ko, ump, umplock Maybe I must also build them and insmod? Now I do not do this because a) buildroot does not build them and build.sh script also does not build them. In boot log i see there is a "sun4i-drm display-engine" is it what I need?
3) what else I am missing?
PS: by the way I have yet another board which is ROCK64 which works with Armbian+"mediapack" OpenGLESv2 works there quite well. This device uses ARMSOC driver, Xorg log messages are very similar to mine on OrangePI-PC2 but kernel driver is different because it writes "mali-utgard". I have no idea where they got this driver.
Hello, @mripard
I got very same issue with my Orange PI PC Plus (H3 with Mali400MP2).
I have your mali kernel module compilled/loaded and blobs in LD path.
However, I getting this eglInitialize error while trying to run es2_info
.
I also have sun4i-drm
module compilled in-kernel. Is it possible that mali
kernel module conflicts with sun4i-drm
?
dmesg:
[ 17.043564] Mali:
[ 17.043574] Found Mali GPU Mali-400 MP r1p1
[ 17.055411] thermal thermal_zone0: failed to read out thermal zone (-110)
[ 17.255228] Mali:
[ 17.255238] 2+0 PP cores initialized
[ 17.311959] rc rc0: lirc_dev: driver sunxi-ir registered at minor = 0, raw IR receiver, no transmitter
[ 17.453921] Mali:
[ 17.453930] Mali device driver loaded
[ 2.798817] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc0a85b08)
[ 2.805944] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc0a83254)
[ 2.847988] sun4i-drm display-engine: bound 1ee0000.hdmi (ops 0xc0a8558c)
[ 3.431259] sun4i-drm display-engine: fb0: DRM emulated frame buffer device
[ 3.438779] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
Hi. I'm not asking for anything. I did that and will do that again. "Xorg: ../../../../include/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed." That message appears even when no mali blobs are put. With an ordinary mesa, and no drm. An example:
X.Org X Server 1.19.6
Release Date: 2017-12-20
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.4.0-148-generic armv7l Ubuntu
Current Operating System: Linux orangepilite 5.3.9-sunxi #19.11.3 SMP Mon Nov 18 18:49:43 CET 2019 armv7l
Kernel command line: root=UUID=9fe5a442-70f5-40b6-902f-af87a1a7b53f rootwait rootfstype=ext4 console=ttyS0,115200 console=tty1 hdmi.audio=EDID:0 disp.screen0_output_mode=1920x1080p60 panic=10 consoleblank=0 loglevel=1 ubootpart=c084f62e-01 ubootsource=mmc usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u "drm_kms_helper.drm_fbdev_overalloc=200" sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16 cgroup_enable=memory swapaccount=1
Build Date: 03 June 2019 08:12:25AM
xorg-server 2:1.19.6-1ubuntu4.3 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.34.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Thu Dec 19 08:52:43 2019
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
MESA-LOADER: failed to open sun4i-drm (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
failed to load driver: sun4i-drm
EGL_MESA_drm_image required.
Xorg: ../../../../include/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed.
(EE)
(EE) Backtrace:
(EE)
(EE)
Fatal server error:
(EE) Caught signal 6 (Aborted). Server aborting
(EE)
(EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE)
(EE) Server terminated with error (1). Closing log file.
To reproduce, blacklist lima, and put
Section "ServerFlags"
Option "AIGLX" "off"
EndSection
Section "Extensions"
Option "Composite" "Disable"
EndSection
somewhere in your xorg.conf, having a genuine mesa. ~Maybe https://github.com/bootlin/libdrm-sun4i will make it work. It doesn't seem to have a H3 support, though.~ Edit - just disabling composite is sufficient. Edit - https://bugs.freedesktop.org/show_bug.cgi?id=104993 Edit - the issue is present on Bionic. Will check Buster dev.
I am trying Mali on OrangePi PC2. This is Allwinner H5 SOC. I have Armbian OS, aarch64. I have built kernel 4.14.91+, mripard/sunxi-mali and mripard/xf86-video-armsoc. Armbian option extraargs="drm_kms_helper.drm_fbdev_overalloc=300" is set. DTS was modified like this https://github.com/noblock/sunxi-mali/blob/master/kernel-patches/9902-megous-add-h5-mali.patch I believe that Mali kernel driver starts ok because I see dmesg log messages:
[ 7.642464] mali: loading out-of-tree module taints kernel. [ 7.665147] Mali<2>: [ 7.665156] Inserting Mali v900 device driver. [ 7.665159] Mali<2>: [ 7.665164] Mali<2>: [ 7.665168] Mali<2>: [ 7.665170] mali_module_init() registering device [ 7.666557] platform mali-utgard: assigned reserved memory node linux,cma [ 7.683714] Allwinner sunXi mali glue initialized [ 7.697569] Mali<2>: [ 7.697572] mali_module_init() registering driver [ 7.698450] Mali<2>: [ 7.698454] mali_probe(): Called for platform device mali-utgard [ 7.698472] Mali<2>: [ 7.698475] Continuing without Mali regulator control [ 7.698488] Mali<2>: [ 7.698491] Init Mali devfreq [ 7.698652] Mali<2>: [ 7.698656] Mali SWAP: Swap out threshold vaule is 60M [ 7.698688] Mali<2>: [ 7.698692] Mali memory settings (shared: 0xFFFFFFFF) [ 7.698695] Mali<2>: [ 7.698702] Mali<2>: [ 7.698705] Memory Validator installed for Mali physical address base=0x00000000, size=0xFFFFF000 [ 7.698714] Mali<2>: [ 7.698717] Mali PMU: Creating Mali PMU core [ 7.698755] Mali<2>: [ 7.698759] Mali<2>: [ 7.698774] Mali<2>: [ 7.698779] Mali<2>: [ 7.698783] Mali<2>: [ 7.698788] Mali<2>: [ 7.698792] Mali<2>: [ 7.698796] Mali<2>: [ 7.698800] Mali<2>: [ 7.698806] Mali<2>: [ 7.698809] Mali PM domain: Creating Mali PM domain (mask=0x00000001) [ 7.698811] Mali<2>: [ 7.698814] Mali PM domain: Creating Mali PM domain (mask=0x00000002) [ 7.698816] Mali<2>: [ 7.698819] Mali PM domain: Creating Mali PM domain (mask=0x00000004) [ 7.698821] Mali<2>: [ 7.698824] Mali PM domain: Creating Mali PM domain (mask=0x00001000) [ 7.698837] Mali<2>: [ 7.831858] Mali<2>: [ 7.831884] Mali<2>: [ 7.831888] Broadcast: Creating Mali Broadcast unit: Mali_Broadcast [ 7.831940] Mali<2>: [ 7.831943] Mali PP: Creating Mali PP core: Mali_PP0 [ 7.831945] Mali<2>: [ 7.831948] Mali PP: Base address of PP core: 0x1e88000 [ 7.832126] Mali: [ 7.832130] Found Mali GPU Mali-450 MP r0p0 [ 7.839923] Mali<2>: [ 7.839931] Mali DLBU: Initializing [ 7.840222] Mali<2>: [ 7.840231] Mali L2 cache: Created Mali_L2: 8K, 4-way, 64byte cache line, 128bit external bus [ 7.840241] Mali<2>: [ 7.840246] Mali L2 cache: Created Mali_L2: 128K, 4-way, 64byte cache line, 128bit external bus [ 7.840278] Mali<2>: [ 7.840281] Mali MMU: Creating Mali MMU: Mali_GP_MMU [ 7.840352] Mali<2>: [ 7.840356] mali_mmu_probe_irq_acknowledge: intstat 0x3 [ 7.840357] Mali<2>: [ 7.840361] Mali<2>: [ 7.840403] Mali<2>: [ 7.840406] Mali GP: Creating Mali GP core: Mali_GP [ 7.840489] Mali<2>: [ 7.840492] Mali MMU: Creating Mali MMU: Mali_PP0_MMU [ 7.840544] Mali<2>: [ 7.840547] mali_mmu_probe_irq_acknowledge: intstat 0x3 [ 7.840548] Mali<2>: [ 7.840551] Mali<2>: [ 7.842741] Mali<2>: [ 7.842747] Mali PP: Creating Mali PP core: Mali_PP0 [ 7.842748] Mali<2>: [ 7.842751] Mali PP: Base address of PP core: 0x1e88000 [ 7.842859] Mali<2>: [ 7.842862] Mali MMU: Creating Mali MMU: Mali_PP1_MMU [ 7.842934] Mali<2>: [ 7.842938] mali_mmu_probe_irq_acknowledge: intstat 0x3 [ 7.842939] Mali<2>: [ 7.842943] Mali<2>: [ 7.842964] Mali<2>: [ 7.842967] Mali PP: Creating Mali PP core: Mali_PP1 [ 7.842968] Mali<2>: [ 7.842971] Mali PP: Base address of PP core: 0x1e8a000 [ 7.843063] Mali<2>: [ 7.843066] Mali MMU: Creating Mali MMU: Mali_PP2_MMU [ 7.843105] Mali<2>: [ 7.843108] mali_mmu_probe_irq_acknowledge: intstat 0x3 [ 7.843109] Mali<2>: [ 7.843112] Mali<2>: [ 7.843140] Mali<2>: [ 7.843142] Mali PP: Creating Mali PP core: Mali_PP2 [ 7.843143] Mali<2>: [ 7.843146] Mali PP: Base address of PP core: 0x1e8c000 [ 7.843216] Mali<2>: [ 7.843219] Mali MMU: Creating Mali MMU: Mali_PP3_MMU [ 7.843257] Mali<2>: [ 7.843259] mali_mmu_probe_irq_acknowledge: intstat 0x3 [ 7.843261] Mali<2>: [ 7.843263] Mali<2>: [ 7.843300] Mali<2>: [ 7.843303] Mali PP: Creating Mali PP core: Mali_PP3 [ 7.843304] Mali<2>: [ 7.843307] Mali PP: Base address of PP core: 0x1e8e000 [ 7.843404] Mali<2>: [ 7.843409] Starting new virtual group for MMU PP broadcast core Mali_PP_MMU_Broadcast [ 7.843411] Mali<2>: [ 7.843414] Mali DLBU: Creating Mali dynamic load balancing unit: Mali_DLBU [ 7.843427] Mali<2>: [ 7.843430] Broadcast: Creating Mali Broadcast unit: Mali_Broadcast [ 7.843439] Mali<2>: [ 7.843441] Mali MMU: Creating Mali MMU: Mali_PP_MMU_Broadcast [ 7.843446] Mali<2>: [ 7.843448] Mali PP: Creating Mali PP core: Mali_PP_Broadcast [ 7.843450] Mali<2>: [ 7.843453] Mali PP: Base address of PP core: 0x1e96000 [ 7.843535] Mali: [ 7.843545] Mali<2>: [ 7.843548] Mali PP-VERSION CF070000 [ 7.843568] Mali<2>: [ 7.843570] Mali GPU Utilization: No platform utilization handler installed [ 7.843573] Mali<2>: [ 7.843577] Mali DVFS init: platform function callback incomplete, need check mali_gpu_device_data in platform . [ 7.843582] Mali<2>: [ 7.979200] Mali<2>: [ 7.979927] Mali<2>: [ 7.979935] mali_probe(): Successfully initialized driver for platform device mali-utgard [ 7.980354] Mali: [ 7.980358] Mali device driver loaded
Also I see devices like /dev/mali and /dev/dri/card0 exist. XOrg also seem happy with armsoc_drv.so, I do not see any significant obvious Xorg errors.
(II) LoadModule: "armsoc" [ 13.315] (II) Loading /usr/lib/xorg/modules/drivers/armsoc_drv.so [ 13.327] (II) Module armsoc: vendor="X.Org Foundation" [ 13.327] compiled for 1.19.2, module version = 1.4.1 [ 13.327] Module class: X.Org Video Driver [ 13.327] ABI class: X.Org Video Driver, version 23.0 [ 13.327] (II) ARMSOC: Driver for ARM Mali compatible chipsets [ 13.365] (WW) Falling back to old probe method for armsoc [ 13.365] (II) No BusID or DriverName specified - opening /dev/dri/card0 [ 13.365] (II) Got BusID display-engine [ 13.389] (II) Opened DRM [ 13.389] (II) DeviceName is [/dev/dri/card0] [ 13.390] (II) bus_id is [display-engine] [ 13.390] (II) DriverName is [sun4i-drm] [ 13.390] (II) version is [1.0.0] [ 13.390] (II) Screen:0, CRTC:-1 [ 13.406] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support [ 13.406] (II) ARMSOC(0): Creating default Display subsection in Screen section "DefaultScreen" for depth/fbbpp 24/32 [ 13.406] (**) ARMSOC(0): Depth 24, (--) framebuffer bpp 32 [ 13.406] (==) ARMSOC(0): RGB weight 888 [ 13.406] (==) ARMSOC(0): Using gamma correction (1.0, 1.0, 1.0) [ 13.406] (==) ARMSOC(0): Default visual is TrueColor [ 13.406] (II) No BusID or DriverName specified - opening /dev/dri/card0 [ 13.406] (II) Got BusID display-engine [ 13.439] (II) Opened DRM [ 13.439] (II) DeviceName is [/dev/dri/card0] [ 13.439] (II) bus_id is [display-engine] [ 13.439] (II) DriverName is [sun4i-drm] [ 13.439] (II) version is [1.0.0] [ 13.439] (II) ARMSOC(0): Chipset: Mali [ 13.440] (II) ARMSOC(0): Buffer Flipping is Enabled [ 13.440] (II) ARMSOC(0): umplock is Enabled [ 13.440] (II) ARMSOC(0): Setting the video modes ... [ 13.440] (II) ARMSOC(0): Adding all CRTCs [ 13.440] (II) ARMSOC(0): Got CRTC: 0 (id: 28) [ 13.679] (II) ARMSOC(0): Output HDMI-1 has no monitor section [ 13.889] (II) ARMSOC(0): EDID for output HDMI-1 [ 13.889] (II) ARMSOC(0): Manufacturer: PHL Model: c0c5 Serial#: 8555 [ 13.889] (II) ARMSOC(0): Year: 2014 Week: 25 [ 13.889] (II) ARMSOC(0): EDID Version: 1.3 [ 13.889] (II) ARMSOC(0): Digital Display Input [ 13.889] (II) ARMSOC(0): Max Image Size [cm]: horiz.: 53 vert.: 30 [ 13.889] (II) ARMSOC(0): Gamma: 2.20 [ 13.889] (II) ARMSOC(0): DPMS capabilities: Off [ 13.889] (II) ARMSOC(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 [ 13.889] (II) ARMSOC(0): First detailed timing is preferred mode [ 13.889] (II) ARMSOC(0): redX: 0.650 redY: 0.333 greenX: 0.332 greenY: 0.623 [ 13.889] (II) ARMSOC(0): blueX: 0.157 blueY: 0.053 whiteX: 0.313 whiteY: 0.329 [ 13.889] (II) ARMSOC(0): Supported established timings: [ 13.889] (II) ARMSOC(0): 720x400@70Hz [ 13.889] (II) ARMSOC(0): 640x480@60Hz [ 13.889] (II) ARMSOC(0): 640x480@67Hz [ 13.889] (II) ARMSOC(0): 640x480@72Hz [ 13.889] (II) ARMSOC(0): 640x480@75Hz [ 13.889] (II) ARMSOC(0): 800x600@60Hz [ 13.889] (II) ARMSOC(0): 800x600@75Hz [ 13.889] (II) ARMSOC(0): 1024x768@60Hz [ 13.889] (II) ARMSOC(0): 1024x768@75Hz [ 13.889] (II) ARMSOC(0): 1280x1024@75Hz
Besides that, when everything seem okay, OpenGLES does not work for me. I got GL blobs from https://github.com/bootlin/mali-blobs.git And I copy all libs and links from r6p2/arm64/x11_dma_buf to my /usr/lib
When I start DISPLAY=:0 es2_info it says: Error: eglInitialize() failed
I was trying to strace es2_info app and I see that there are few ioctls to device /dev/mali. Then I modified mali kernel driver to see which ioctls occures, so I have this log of mali kernel driver calls:
[ 2932.453720] Ioctl received 0xC0108203 0xFFFFE94F9690 [ 2932.453739] API ver2 compatible 58983300 [ 2932.453749] MALI_IOC_GET_API_VERSION_V2 0x00000000 [ 2932.453758] IOC result 0x00000000 [ 2932.453772] Ioctl received 0xC0388206 0xFFFFE94F9628 [ 2932.453784] MALI_IOC_GET_USER_SETTINGS 0x00000000 [ 2932.453793] IOC result 0x00000000 [ 2932.454138] Ioctl received 0x80108402 0xFFFFE94F96E0 [ 2932.454155] Get PP-VERSION CF070000 [ 2932.454162] Ioctl received 0xC0688202 0xFFFFB3DAF988 [ 2932.454171] MALI_IOC_PP_CORE_GET_VERSION 0x00000000 [ 2932.454180] IOC result 0x00000000 [ 2932.454227] Ioctl received 0xC0108204 0xFFFFE94F96A0 [ 2932.454254] MALI_IOC_POST_NOTIFICATION 0x00000000 [ 2932.454265] IOC result 0x00000000 [ 2932.454272] MALI_IOC_WAIT_FOR_NOTIFICATION 0x00000000 [ 2932.454281] IOC result 0x00000000
I see that all IOCTLs are completed without errors, all return zero. I see that api version v2 is compatible. Also I see pp-version is requested and returned pp-version (which I see is read directly from mali chip register) is CF070000. I do not know is it good value or not? So only few IOCTLs and es2_info says eglInitialize() error.
Does it mean that those ioctls somehow do not satisfy GL libraries? I have no idea what to think... Can You please drop any idea how to study issue?