IRC Logs for #lost


2022-06-27

06:56:31 XanClic joined the channel
08:22:31 xq: moin moin
08:22:45 kevin joined the channel
08:22:52 xq: und auch moin kevin
08:23:05 xq: ich wollte gestern meinen kernel mit virt-gpu-support erweitern
08:23:25 kevin: Moin
08:23:29 xq: irgendwie war das mehr arbeit als erwartet, mal schauen, ob ich heute motivation dafür habe
08:24:48 kevin: virtio-gpu war das mit 3D und so und nicht nur einem Framebuffer, oder?
08:25:30 xq: ich weiss es nicht, XanClic hat da nur Framebuffer und Cursor genutzt
08:25:35 xq: wäre jetzt auch das, was ich tun würde
08:26:08 XanClic: hab mir den 3D-Teil jetzt nie weiter angesehen
08:26:54 kevin: Ah, ich glaube, ich war verwirrt, weil QEMU auch ein virtio-vga-Gerät hat, aber das spricht wohl das gleiche Protokoll und tut nur andere Dinge?
08:27:30 kevin: Also wohl ein virtio-gpu-Gerät, das auch die klassichen VGA-Schnittstellen anbietet oder so
08:27:52 xq: jo, ich würde gerne auf "klassisch vga" auch gerne verzichten :D
08:28:04 xq: aber: requirements sind: 400x300 pixel RGB
08:28:07 XanClic: Es hat auch schon eine eigene Schnittstelle
08:28:13 XanClic: Ich hab da jetzt glaub ich kein VGA benutzt
08:28:28 XanClic: Der 3D-Teil ist aber optional, man kann sich auch einfach einen 2D-Framebuffer holen
08:28:51 xq: übrigens: welche Lizenz hat dein Weihnachtskalender-Entry?
08:29:01 xq: nicht dass ich hier noch propietären code klaue
08:29:08 XanClic: Normalerweise hätte ich den MIT gemacht
08:29:19 XanClic: Aber ich weiß nicht, welchen Code ich dafür zusammengeklaut hab *g*
08:29:32 xq: aha! ^^
08:29:33 XanClic: da muss ich erstmal sehen, ob der MIT sein darf, oder GPL sein muss
08:29:46 xq: gibts irgendwo die virtio-header, die du da benutzt hast?
08:30:33 XanClic: Sind das nicht einfach die in include/?
08:31:11 xq: jo, aber lizensiert :D
08:31:26 xq: gut, ich würfel die eh einmal durch translate-c, aber trotzdem ^^
08:31:46 XanClic: weiß ich gar nicht mehr
08:31:52 xq: okay
08:32:32 XanClic: Ich denke /usr/include/linux/virtio_*.h
08:33:14 xq: kann gut sein
08:33:52 xq: naja, erst mal muss ich ja die command queues implementieren
08:34:02 xq: sind die qemu-interfaces eigentlich auf allen plattformen gleich?
08:34:55 XanClic: Dachte schon, aber die Anbindung kann halt zum Beispiel via PCI sein oder nicht
08:35:15 XanClic: wimre war die Endianness jetzt auf Little Endian festgelegt?
08:35:21 kevin: Eine virtio_queue.h ist ja sogar in der Spec "abgedruckt"
08:36:00 xq: hihi
08:36:14 xq: wo finde ich die spec?
08:36:14 kevin: XanClic: Ja, ich meine, das ist jetzt alles LE (statt Host Endian wie früher)
08:36:33 kevin: xq: https://docs.oasis-open.org/virtio/virtio/v1.2/virtio-v1.2.pdf
08:36:41 xq: dankööö
09:00:27 xq: was genau sagt eigentlich __attribute__((packed, aligned(4))) aus ?
09:00:34 xq: struktur hat kein padding, muss aber auf 4 aligned sein?
09:26:00 kevin: Ich denk mal, ja
09:26:48 xq: ah
09:26:54 xq: jo, mal gucken, wie ich das jetzt portiere :D
09:27:02 xq: zig hat 1 lustiges feature
09:27:14 xq: "extern struct" hat by-default ein C-Layout
09:27:28 xq: "packed struct" ist aber bit-packed, und alles ist align(0)
09:27:47 xq: aber: extern struct kann im gegensatz zu C felder mit unter-alignment haben
09:28:00 xq: also zum beispiel extern struct { counter: u64 align(1) }
09:28:16 xq: macht halt 8 byte-zugriffe auf counter statt 1 -
09:28:22 xq: *1 word zugriff
09:31:49 xq: oioioi
09:31:54 xq: regs.queue_avail_lo = (uint32_t)(uintptr_t)&vq_avail;
09:31:54 xq: regs.queue_avail_lo = (uint32_t)((uintptr_t)&vq_avail >> 32);
09:31:58 xq: das hier sieht aber nicht sehr richtig aus
09:33:04 XanClic: sachen gibts
09:33:31 xq: faszinierend, dass das ging *thinking*
09:37:10 xq: https://git.xanclic.moe/XanClic/RISK-V/src/branch/master/virtio.c#L128-L141
09:37:19 xq: so vom drüberlinsen: pointer-to-stack temporary?
09:38:01 XanClic: alles kaputt, würd ich sagen
09:38:50 xq: yep
09:58:06 kevin: Sei doch nicht so kleinlich, es hat funktioniert!
09:58:17 XanClic: Das schließt einander ja nicht aus :)
09:58:35 kevin: Natürlich nicht :-)
11:17:48 xq: hm
11:17:51 xq: code portieren hat nicht getan
11:17:57 xq: jetzt also mal spec lesen LOL
11:39:16 xq: huh. warum benutzt qemu bei mir die legacy gpu?
11:39:41 XanClic: erklärt wohl, warum der code dann funktioniert hat O:)
11:40:47 xq: jop
12:52:56 xq: ich hab bild! \o/
13:29:58 kevin: Gute Grundvoraussetzung, um rot zu produzieren
13:49:43 xq: yep
13:49:45 xq: ich hab jetzt orange
15:29:59 xq: https://mq32.de/public/ashet-os-01.mp4
16:00:07 xq: kevin: wenn mein patch fertig ist, schicke ich den am besten als neuen thread, oder?
16:00:28 kevin: Ja, neue Patches gehören in neue Threads, sonst sieht sie niemand
16:00:33 xq: oki
16:00:39 xq: ich glaube, der patch hat something 10 loc :D
16:00:49 xq: 6 davon sind nen schöner kommentar
16:00:54 kevin: Die besten Patches
16:01:31 xq: kann man schneller reviewen
16:01:43 xq: steh ich dann eigentlich auch in den release notes? *thinking*
16:06:07 xq: das längste ist grade, qemu zu bauen
16:09:33 kevin: Du baust hoffentlich nur das eine Target, das du auch wirklich haben willst?
16:09:58 kevin: Ich glaube nicht, dass wir Namen in den Release Notes haben, oder? Ich lese die nie...
16:10:13 xq: ich mach grade nen default build :D
16:10:28 xq: hab auch schon 5k/7k object files *shrug*
16:22:16 xq: so, ich bräuchte jetzt nochmal kurz etwas guidance, kevin
16:22:27 xq: ich hab die changes gemacht, sie scheinen auch zu tun, was ich möchte
16:22:51 kevin: Solche Guidance? https://wiki.qemu.org/Contribute/SubmitAPatch
16:24:27 xq: jop
16:44:58 xq: ha, scheint als hätte es geklappt
17:58:11 xq: ACH SCHEISSE
17:59:50 xq: ausversehen das directory gekillt
17:59:56 xq: jetzt is der code weg /o\
18:14:38 kevin: Das arme Verzeichnis
18:15:25 xq: yep
18:16:43 kevin: Ist das noch eine zweite Sache gewesen? Weil der eine Patch ist ja auf der Liste.
18:18:30 xq: nö, sind nur 9 zeilen diff
18:18:43 xq: [PATCH] gtk: Add show_tabs=on|off command line option.
18:19:16 xq: https://patchwork.ozlabs.org/project/qemu-devel/patch/20220627164404.12137-1-xq@random-projects.net/
18:19:18 xq: der da
18:23:20 kevin: Jo, dann ist der Code ja nicht weg
18:24:43 xq: nene, anderes repo :D
18:24:54 kevin: Ah, Mist :-/
18:24:55 xq: mein os-projekt, nicht der qemu-patch
18:25:05 xq: aber: die wichtigen dinge hab ich gelernt
18:25:08 kevin: Hoffentlich oft committet und gepusht
18:25:14 xq: noch nicht mal ein repo angelegt
18:25:19 xq: das projekt war jetzt 3h alt
18:25:27 xq: war mir nicht sicher, ob ichs behalte :D
18:25:34 kevin: Jetzt weißt du es *g*
18:26:07 xq: ja
18:26:24 kevin: Also git init hätte ich nach 3h garantiert gemacht gehabt. Aber ob ich irgendwohin gepusht hätte, weiß ich auch nicht...
18:26:30 xq: jo
18:26:37 xq: jetzt direkt nen repo aufm git-server angelegt
18:27:27 kevin: Nachvollziehbar
18:34:12 xq: was am schmerzhaftesten ist, war der task scheduler
18:34:54 kevin: Hattest du da sowas kompliziertes schon?
18:35:08 xq: ich hab mit dem task scheduler angefangen
18:35:12 xq: der konnte threads schaukeln
18:35:23 xq: uart, scheduler, vga, textkonsole darauf aufbauend
18:35:34 xq: s/vga/video/
18:39:20 xq: das wars dann aber auch schon
18:52:04 xq: naja, dann jetzt halt mit HAL drunter
19:29:42 xq: kevin, haste mir vllt. nochmal ne minute?
19:36:08 kevin: Worum geht's denn?
19:37:59 xq: ich möchte ja eine firmware emulieren
19:38:05 xq: die liegt später im flash bei adresse 0
19:38:12 xq: kann ich sowas mit qemu machen?
19:38:24 xq: ich hab meine elf jetzt so, dass flash=0, ram=0x8…
19:38:37 xq: aber das failed einfach direkt beim starten
19:38:40 xq: Invalid read at addr 0x0, size 2, region '(null)', reason: rejected
19:38:51 xq: auch, wenn ich den start um 0x1000 verschiebe
19:40:02 xq: kann ich mir eig. auch irgendwo die aktuelle memory map anzeigen lassen?
19:40:53 kevin: Hm, müsstest du da nicht irgendwie den Flash als Device einbinden, der sein eigenes Image hat?
19:41:20 kevin: Aber das ist sicher auch ein Stück weit maschinenabhängig, und da habe ich bisher kaum mal was anderes als die x86-Maschinen benutzt
19:42:52 kevin: 'info mtree' im Monitor ist vielleicht, was du für eine Memory Map suchst
19:43:07 kevin: (Wer hat eigentlich Strg-Alt-2 kaputtgemacht? Oder tut das nur bei mir nicht?)
19:43:09 xq: info mtree hustet das hier raus: https://bpa.st/RZ7Q
19:43:20 xq: jetzt ist die frage: wie tausche ich das mrom aus?
19:46:41 kevin: Gute Frage. Im Code sieht es fast nach gar nicht aus?
19:47:41 kevin: Ah doch, mit -bios, kann das sein?
19:47:54 xq: hm
19:48:04 xq: unter virt.flash0 könnte was sein
19:48:29 kevin: Da kannst du wohl was mit -drive if=pflash,file=... reinbringen
19:48:45 kevin: Aber ich glaube, -bios ist passender, oder?
19:48:56 xq: ja, aber dann crashed es sofort mit invalid read
19:49:18 kevin: Ach das war schon -bios, nicht -kernel?
19:49:21 xq: ja
19:49:46 xq: wenn ich das bios nach 0x8000_0000 lade, klappts
19:52:47 xq: mrom.reset klingt richtig
19:55:01 xq: ah
19:56:40 xq: jetzt les ich qemu code :D
20:03:02 xq: lübbt
20:03:11 xq: -drive if=pflash,index=0,file=zig-out/bin/ashet-os.bin,format=raw
20:08:31 xq: so
20:08:33 xq: "Hello, World!"
20:08:38 xq: auf stdout
20:08:39 xq: niiiice
20:08:46 xq: aaaand it's pushed
20:08:53 kevin: Ist doch mal ein Anfang
20:09:01 xq: yep
21:24:27 Paddy joined the channel