D
Sorry, war ein paar Tage Off, mich hat die Rüsselseuche aufgesucht, vom aller besten.
@Finnegan sagte in monotonic_buffer_resource sorgt für DMA Interrupt Error:
Ich muss tatsächlich sagen, dass ich bisher schwer beeindruckt bin. Ich hatte im "Thinking Modus" bisher nur zwei Fälle, wo diese KI einen Fehler gemacht hat. Den meisten Code versteht sie, ohne dass ich wie bei DeepSeek oder ChatGPT erstmal erklären muss, was da passiert.
Dito.
Nur wenn der Code oder das gesamte Konstrukt zu umfangreich wird, wird es meist auch nichts.
Der VU Micro Code wird normalerweise in Low level Assambler Programmiert sprich so:
https://github.com/ps2dev/ps2gl/blob/master/vu1/general_nospec_quad_vcl.vsm
Das geübte Auge sieht es sind Dual-issue SIMD Instruktionen
Das kann kein Mensch lesen (bzw nur mühsam), deswegen macht man einen Zwischenschritt, man schreibt den VU Code in Vector Command Line (VCL) übersetzt das in VSM und das wird ver-Assmbliert.
Siehe:
https://github.com/ps2dev/ps2gl/tree/master/vu1
und
https://github.com/jsvennevid/openvcl
Wenn man nun VCL schreibt und man kommt nicht weiter, dann schafft es google Gemeni irgendwie trotzdem VCL code zu schreiben ohne das es überhaupt weiß wie der code Funktioniert.
Man muss es aber dennoch mit zuarbeiten füttern. Vor allem Register dump's sind wichtig.
Aprops Dump, mein Problem ist zurück nur anders.
Es steht nicht mehr DMA Bus error, sondern TLB...:
# TLB spad=0 kernel=1:12 default=13:36 extended=37:47
*** Unexpected reply - type=BREAKR result=PROGEND
dsedb S> dr
at=70030c00 v0-1=00000030,00000010 a0-3=00000001,01ffe000,36000000,0018003f
t0-7=001c003f,b000e020,b000c800,00800000, 205ab300,a0000000,00000004,0000001f
s0-7=00000001,00420000,0078c790,000000dd, 004288c0,07ffd8f0,002f0fa0,07ffe2c0
t8=80025980 t9=00000030 k0=80016ed8 k1=00000000 gp=00425d70 sp=8001d470
fp=005b0000 ra=80000304 lo=00000024 hi=00000000 sa=00000000 PC=80000d80
badvaddr=40000b26 badpaddr=86a08480
$cause = 0x40008024 [ BD2 CE0 EXC2=Reset IP7 EXC="Breakpoint" ]
$status = 0x70030c02 [ Cu210 EDI EIE IM3 IM2 KSU=Kernel EXL ]
0x80000d78: 0x00000000 nop
0x80000d7c: 0x00000000 nop
->0x80000d80: 0x03ffffcd break 0xfffff
0x80000d84: 0x00000000 nop
0x80000d88: 0x00000000 nop
0x80000d8c: 0x00000000 nop
0x80000d90: 0x00000000 nop
ra (0x80000304) ist auch hier wider absoluter Müll
Wenn man jetzt noch weiß das der IOP auch noch Ausgaben macht, dann steht da:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Das Problem ist der Cache-Algorithmus, dieser schreibt bei jedem DMA Transfer, die Daten dahin zurück wo er sie ursprünglich mal herbekommen hat. Das Müllt mir Ruck Zuck die monotonic buffer resource zu.
Ich habe da jetzt eine unsynchronized_pool_resource ringsum gebaut und es ist Ruhe im Karton.