Seite 21 von 34
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 29. März 2024 16:46
von Maijestro
@aros-sg
Das Qemu Build befindet sich in "/Users/qemuDebug/build/qemu-system-ppc" also sollte ich dort auch die Logdatei "logfile.txt" finden aber sie ist einfach nicht dort, so habe ich es meiner Qemu Zeile mit angehangen....
Code: Alles auswählen
/Users/qemuDebug/build/qemu-system-ppc -M pegasos2 -L /Users/reneengel/qemu/pc-bios -accel tcg -kernel /Volumes/Games/AmigaOs4.1BackUp/bboot/bboot -initrd /Volumes/Games/AmigaOs4.1BackUp/bboot/Kickstart.zip -vga none -device sm501 -drive if=none,id=cd -m 2048 -device ide-cd,drive=cd,bus=ide.1 -device rtl8139,netdev=en0 -netdev user,id=en0 -rtc base=localtime -display cocoa,zoom-to-fit=off,zoom-interpolation=off,full-screen=off -drive format=raw,file=/dev/disk6s2 -drive file=fat:rw:/Users/reneengel/Freigabe,id=ufat,format=raw,if=none -device usb-storage,drive=ufat -drive if=none,id=hd1,file=/Volumes/Games/AmigaOs4.1BackUp/coffin.img,format=raw -device ide-hd,drive=hd1,bus=ide.1 -serial stdio >logfile.txt 2>&1
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 29. März 2024 17:06
von aros-sg
Ist das auf einem Mac? Startest du qemu nicht über Terminal/Shell? Dort ist immer alles relativ zum aktuellen Verzeichnis. Wo sich das Programm (qemu) befindet ist egal. Das aktuelle Verzeichnis im Terminal/Shell sollte "pwd" dort anzeigen. Ist normalerweise aber auch im Shell Prompt sichtbar. Standardmäßig ist man in einem neu geöffneten Terminal/Shell im Heim Verzeichnis des Users.
Wenn Mac und über Icon gestartet, vielleicht zeigt das Icon Infoormations/Eigenschaften Fenster das Verzeichnis an. Und Mac hat ja auch (Datei) Suchfunktionen.
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 29. März 2024 17:14
von balaton
Nein, logfile.txt ist wo du die Commandozeile ausgeführt hast. Wenn im Zweifel benutze >/tmp/logfile.txt dann soll es sich in /tmp befinden. Die alternative mit 2>&1 | tee /tmp/lofgile.txt funktioniert auch und soll die logs auch ins console zeiegen und gleichzeitig in der Datei speichern aber ich habe das ausgelassen um Missverständnis zu vermeiden falls ich es nicht genau erklären kann.
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 29. März 2024 19:44
von Maijestro
@balaton
Ok der log scheint etwas mehr informationen zu geben was genau passiert. Ich habe es mit AmigaOs4.1 RTL8139 Treiber 53.4 und 53.6 getestet, bei letzteres bricht die Internetverbindung bereits beim Download von Dateien zusammen.
Mit Version 53.4 muß das Netzwerk sehr stark belastet werden Upload/Download SMB2 Verbindung zeitgleich....
@aros-sg
Noch etwas der Fehler das ich keine log Datei erstellen konnte lag nicht an mir, sondern wurde mir einfach falsch vermittelt und ja ich führe Qemu über sein Startcript aus was ich schnell editieren kann. Diese Zeile habe ich hinzugefügt und es gab keinerlei Probleme.
Log Daten RTL8139 Version 53.4 und 53.6
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 30. März 2024 12:01
von aros-sg
War das bei den früher geposteten logs ("QemuNetzwerkRTL8139Debug.txt") eine ältere Qemu Version? Denn in diesen neuen logs ist das von mir vermutetet Problem (reentrant/rekursiv aufruf) nicht zu sehen. Nach "in ring" gibts immer entweder "overflow" oder "recevied: bla bla bla", wie es sein soll. Und laut qemu rtl8139.c commit history wurde z. B. "net: Provide MemReentrancyGuard * to qemu_new_nic()" (was vielleicht was damit zu tun hat) erst im Nov 2023 gemacht.
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 30. März 2024 13:46
von Maijestro
@aros-sg
Nein es ist ein und das selbe Build warum ich mir das sicher bin? Weil ich es extra mit Debug Ausgabe kompilieren mußte, alle anderen Builds die ich derzeit verwendet haben diese Eigenschaft nicht und der log würde nichts aufzeichnen.
Wenn man die beiden logs vergleicht sieht man das der AmigaOs4.1 RTL8139 Treiber Version 53.6 viel früher die Verbindung verliert wie die Version 53.4. Aber anscheint sagen auch hier die Protokolle nicht viel darüber aus warum die Verbindung verloren geht
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 4. April 2024 12:53
von Cyborg
Bitte mal die angehängte Testversion vom RTL8139-Treiber probieren.
Edit: Anhang gelöscht, da nicht releasefähig. Neuere Testversion(en) sind weiter hinten im Thema zu finden.
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 4. April 2024 15:21
von Maijestro
Cyborg hat geschrieben: ↑4. April 2024 12:53
Bitte mal die angehängte Testversion vom RTL8139-Treiber probieren.
Ui das kommt jetzt völlig unerwartet
Ich teste den Treiber durch mega danke schön
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 4. April 2024 16:30
von Maijestro
Re: AmigaOS 4 mittels Qemu auf einem emulierten Pegasos 2
Verfasst: 4. April 2024 18:19
von Cyborg
Wenn alle verfügbaren Empfangspuffer vom RTL8139 befüllt wurden, wird ein "Rx Buffer Overflow"-Interrupt ausgelöst. Das ist soweit völlig normal und soll dem Treiber die Möglichkeit geben, Pakete abzuarbeiten, um wieder Platz für neue zu schaffen. Außerdem gibt es einen einem "Rx OK"-Interrupt, wenn Pakete empfangen und vom Chip als valide eingestuft wurden. Bei beiden Interrupts muß der Treiber loslaufen und die empfangenen Pakete abarbeiten. Dabei wird als erster Schritt ein Statusfeld des Pakets gelesen und in drei mögliche Pfade gesprungen:
1) Empfangenes Paket OK -> normale Bearbeitung, Platz wird frei, nächstes Paket.
2) Empfangenes Paket fehlerhaft -> weitere Fehlerbehandlung auf Basis des restlichen Statusfelds, Paket verwerfen, nächstes Paket oder in schweren Fällen zurücksetzen des Netzwerkchips.
3) Empfangenes Paket ist noch nicht vollständig -> überspringen, nächstes Paket behandeln oder Behandlung beenden.
Aus mir unbekannten Gründen löst die RTL8139-Emulation von Qemu einen oder beide der obigen Interrupts aus, ohne das Statusfeld wie erwartet zu setzen. Es ist schlicht leer, womit in Zusammenhang mit "Rx Buffer Overflow" nicht gerechnet wird, da ich dieses Verhalten nicht aus der Dokumentation herauslesen konnte/kann. Durch das leere Statusfeld wurde das Paket zwar als fehlerhaft erkannt, aber die weitere Fehlerbehandlung endete in einem undefinierten Zustand, woraus der Treiber nicht mehr herauskam.
Ich bin mir nicht sicher, ob die Implementierung von Qemu hier falsch ist oder ich einfach nicht die richtige RTL8139-Dokumentation habe, in der der Fall eines komplett leeren Statusfelds beschrieben wird. Aber in keiner meiner Dokumentationsvarianten konnte ich dazu etwas finden. Fakt ist, daß dieser Fall offensichtlich bei echten RTL8139-Karten bisher nicht auftrat, ob zufällig oder nicht.
Ich werde übers Wochenende eine neue 53.7 bauen und in den AmigaOS-Betatest geben. Wenn dabei auch keine Probleme auftauchen, muß ich noch überlegen, wie ich die neue Version dann noch veröffentliche. Vermutlich werde ich sie aber ins OS4Depot hochladen, damit man nicht auf das nächste OS-Update warten (was sonstwann kommt oder auch nicht) oder erst mühselig AmiUpdate zum Laufen bekommen muß, wenn ich es als Einzelupdate bereitstelle(n ließe). Mal sehen.