Linux RPI VC4 Driver - DRM NullPointer Exception

OP #6376967
Lesenswert?

Hallo zusammen

Ich versuche derzeit mein eigenes Display an einem RPI mittels DSI 
anzuschliessen. Dazu habe ich einen entsprechenden Treiber geschrieben.

Nun bekomme ich beim Aufstrarten jedoch folgende Errormeldungen (dmesg 
Ausgabe)

https://pastebin.com/NmRmZKhn

Die Probingfunktion des Treibers läuft einwandfrei durch. Der Treiber 
selbst stammt übrigens aus dem Rockchip-Linux repo und funktioniert dort 
einwandfrei. Habe den Treiber kopiert und konnte ihn ohne Probleme 
kompilieren.

Das Problem scheint irgendwo im DRM Treiber zu sein.
Am Ende wird
1
handle_conflicting_encoders
 aufgerufen.
Für mehr Debugging, habe ich drm.debug=0x1ff aktiviert. Dadurch sind die 
vielen DRM-Messages entstanden.

Beginnen tut die DSI initialisierung ab Zeile 260. Offenbar 
initialisiert das DRM System bereits zuvor ein Display mit 720x480 
Auflösung... Ein HDMI ist nicht angeschlossen. Es ist mir daher 
unerklärlich.

Vielleicht hat ja jemand eine Idee?

Gerne kann ich auch noch mehr Informationen liefern.
Aber am Ende bleibt die dmesg Ausgabe die einzige Debug-Information...


Danke schonmal
OP #6379466
Lesenswert?

Selbstverständlich gerne!

Habe meine eigenen Sourcen plus ko Module angehängt.
Wer möchte, findet hier noch das kompilierte vmlinux

https://gofile.io/d/LlldIi

Dieses beinhaltet auch debugging symbole!

Die original sourcen kommen von hier:

https://gitlab.com/TeeFirefly/linux-kernel/blob/7408b38cfdf9b0c6c3bda97402c75bd27ef69a85/drivers/gpu/drm/panel/panel-simple.c

Der SourceCode wurde in diesen Kernel integriert:

https://github.com/raspberrypi/linux/tree/rpi-4.14.y

Einfach die beiden Dateien ersetzt und gebuildet.

Danke für eure Unterstützung!

Anonym schrieb:
> Was nun? Es wäre hilfreich wenn du das kernelmodul als binary hochladen
> könntest und am besten noch den source code verlinkst.

Kopiert!

Ich habe auch schon versucht den PC mittels addr2line in eine Angabe der 
Datei mit Zeilennummer umzuwandeln. Leider klappt das nicht, da der PC 
wohl in den virtuellen Adressraum zeigt.
1
  3.548684] task: b99cad00 task.stack: b9ada000
2
[    3.553643] PC is at handle_conflicting_encoders+0x124/0x2c4 [drm_kms_helper]
3
[    3.561401] LR is at drm_mode_object_put.part.0+0x44/0x80 [drm]
4
[    3.567558] pc : [<7f27a998>]    lr : [<7f20c908>]    psr: 60000013
5
[    3.574096] sp : b9adbc58  ip : b9adbc00  fp : b9adbcac
6
[    3.579556] r10: 7f2864b4  r9 : 00000000  r8 : b7911c30
7
[    3.585023] r7 : 00000002  r6 : b7b5d7c0  r5 : 00000000  r4 : 00000000
8
[    3.591847] r3 : 00000006  r2 : 00000000  r1 : 00000000  r0 : b7911c30
9
[    3.598651] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
10
[    3.606062] Control: 10c5383d  Table: 379b006a  DAC: 00000055
11
[    3.612032] Process plymouthd (pid: 174, stack limit = 0xb9ada210)
12
[    3.618438] Stack: (0xb9adbc58 to 0xb9adc000)

Die Adresse 7f27a998 liefert jedenfalls nur ??:0
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren