IRC Logs for #lost


2022-11-22

02:35:34 mib_769p1y joined the channel
02:36:28 mib_769p1y: Ist lowlevel.eu im Grunde tot
07:19:18 kevin joined the channel
08:38:33 XanClic joined the channel
08:53:09 xq: moin moin
08:53:41 xq: kevin, XanClic, LittleFox: könnt ihr mir nachher ein bisschen helfen? ich struggle mit dem virtio-network-device, der will partout keine pakete verschicken :(
08:55:29 LittleFox: xq kcn en
08:55:31 LittleFox: ...
08:55:38 LittleFox: yq ich nehme an du meinst treiber programmierung dafür?
08:55:42 xq: jo
08:55:43 LittleFox: ... ich kann nicht tippen
08:55:48 xq: ich merks
08:55:50 xq: guten morgen
08:55:56 xq: ich hab die doku gelesen
08:56:03 xq: eigentlich sollte das alles nich so schwer sein
08:56:11 xq: features negotiaten, dabei einfach "keine features" übergeben
08:56:37 LittleFox: ich muss es mir erst selber anschauen
08:56:49 LittleFox: aber jetzt erstmal tippen lernen (sieht schon besser aus) und gleich kundentermin x)
08:56:53 xq: dann {virtio_net_hdr, packet} in die virtq husten und ab dafür
08:57:09 LittleFox: seltsam wenn meine orgahilfe im urlaub ist ... termine 10min vor meeting ausmachen und selber protokollieren /o\
09:28:50 LittleFox: blergh immer diese kundenwünsche :D
09:34:03 xq: ieh.
09:34:09 xq: arbeiten wäre so schön, wenn die kunden nicht wären
09:34:14 LittleFox: x)
09:34:40 LittleFox: naja, wenn kunden schon die detailfragen zu themen wüssten zu denen sie erste fragen stellen
09:38:21 kevin: xq: Jo, mehr sollte das eigentlich nicht sein (falls du mit "ab dafür" meinst, dass du die virtq kickst)
09:38:33 xq: jo genau
09:38:40 xq: ich kann nachher auch mal den code pfosten
09:38:54 xq: vllt. mach ich auch das package capturing komplett falsch /o\
09:38:59 xq: irgendwo muss da nen dummer fehler sein
09:39:10 kevin: Ich hab ja vor ein paar Monaten erst einen virtio-blk-Treiber geschrieben und das war eigentlich nicht so schwer
09:39:13 xq: kann ich irgendwie daten in das interface von aussen schicken?
09:39:18 xq: jo, virtio ist eigentlich echt chill
09:39:41 kevin: Hast du schon QEMU mit fprintfs durchseucht? ;-)
09:40:42 kevin: Was meinst du mit Interface? Das Netzwerkinterface, so dass du das als Paket empfängst?
09:40:51 kevin: Das hängt ja davon ab, was für ein Netzwerkbackend du in QEMU nimmst
09:41:56 xq: aktull:
09:42:05 xq: -netdev user,id=hostnet -object filter-dump,id=hostnet-dump,netdev=hostnet,file=ashet-os.pcap -device virtio-net-device,netdev=hostnet,mac=52:54:00:12:34:56
09:42:20 xq: wenn ich virtio-net-device mit e1000 ersetze, ein x86 boote, dann seh ich auch pakete
09:43:16 LittleFox: ich hätte dann mal nen tap oder so versucht und wireshark, wobei qemu-dumpt-nicht schon unwahrscheinlich klingt
09:43:19 kevin: Ah, ok, user. Das macht ja NAT, aber du kannst eine Portweiterleitung machen.
09:43:27 kevin: TAP ist aber tatsächlich besser zu debuggen
09:43:54 LittleFox: hm muss mal mein EfiEmulatorPkg LinuxTap Snp upstreamen
09:44:20 kevin: Huch, was ist denn das?
09:44:51 LittleFox: na der efi emulator aus edk2, der kann SimpleNetworkProtocol nur unter windows und macOS
09:45:06 LittleFox: und ich hab mal einen linux treiber eingebaut
09:45:16 LittleFox: nur um dann festzustellen dass mein zu debuggender code im emulator natürlich funktioniert
09:45:29 LittleFox: afaik
09:45:32 LittleFox: .. afair
09:45:54 kevin: Ach edk2 hat seinen eigenen Emulator?
09:46:10 kevin: Ich hab dazu bisher immer einen großen Sicherheitsabstand eingehalten
09:47:08 LittleFox: jep jep, aber nur UEFI emulator, keine virtuelle machine (also außer EFI ByteCode)
09:47:13 xq: wie mach ich das mit dem tap? -netdev tap?
09:47:57 LittleFox: joar
09:48:30 LittleFox: aber braucht permissions
09:48:47 LittleFox: https://wiki.qemu.org/Documentation/Networking#Tap
09:48:55 LittleFox: ich mag auch socket
09:49:03 LittleFox: und hab iwo bissl perl code liegen um netze zu emulieren
09:49:13 LittleFox: ... LF OS pxe loader debugging brachte schon bissl viel code
09:51:33 xq: hm
09:51:44 xq: naja, aber ich glaube das bringt mir alles nix, wenn ich keine pakete verschicke
09:54:16 kevin: Naja, du könntest feststellen, dass du auch keine empfängst, obwohl sie da sind ;-)
09:54:28 kevin: Aber stimmt, fürs Senden bringt dir das wenig
09:54:45 LittleFox: damn broke my git stash entries it seems o.o
10:30:15 xq: ugh. jetzt mal weiter debuggen
10:49:09 xq: https://zigbin.io/4f0f70 vielleicht kann mal jemand einen blick drauf werfen
10:49:27 xq: interessant ab zeile 82, davor ist nur initialisierung
10:51:18 xq: das ARP-Paket hab ich aus dem e1000-BOOTP-Treiber
10:51:47 xq: das sollte also soweit korrekt sein, die MAC passt ebenfalls (also kein filtering)
10:52:33 xq: exec() kickt die queue, pushDescriptorRaw() packt nen SG-Buffer in die queue
10:54:36 kevin: Woher bist du so zuversichtlich, dass es das tut? ;-)
10:55:16 xq: virtio-input-device und virtio-gpu-device tun seit wochen
10:55:30 xq: oder welchen teil meinst du?
10:56:00 kevin: Hm, aber die Definition vom Buffer kann schlecht das Problem sein, oder?
10:56:15 kevin: Weil dann würdest du vielleicht ein Paket mit falschem Inhalt schicken, aber trotzdem ein Paket
10:57:10 xq: jo. vorallem les ich die spec so, dass ich basically den net_header komplett 0-initialisiere, weil ich eh keine speziellen features nutzen will
10:58:10 xq: der header ist auch korrekterweise 12 byte groß (da ich mrg_rxbuf ausgehandelt habe, auch für legacy)
10:58:16 kevin: Hm. Also wenn deine anderen virtio-Geräte tun, dann würde ich vielleicht tatsächlich mal probieren, auf der QEMU-Seite zu debuggen
10:58:38 xq: jo, gute idee
10:59:18 xq: bin mal mittagessen, danach gehts weiter mit debugging
11:02:02 kevin: virtio_net_flush_tx() müsste die interessante Funktion sein, oder?
11:02:11 kevin: 'n Guten!
12:07:46 xq: kevin: ich geh mal suchen
12:16:01 xq: hm, die RTC muss ich auch noch aktivieren :D
12:16:08 xq: meine echte HW kann schon RTC, die virtuelle noch nicht *Rofl*
12:30:04 xq: okay, kein brechpunkt in virtio_net_flush_tx()
12:37:06 xq: kevin: wir sind beide blind! \o/
12:37:37 xq: > 2:37:20.173062 ARP, Request who-has 10.0.2.15 tell 10.0.2.15, length 28
12:37:44 xq: der fix:
12:37:44 xq: regs.status |= virtio.DeviceStatus.driver_ok;
12:37:46 xq: ...
12:37:48 xq: *facepalm*
13:01:52 kevin: xq: Du sagtest, die Initialisierung sei uninteressant ;-)
13:02:15 xq: ja, aber nicht, dass sie irrelevant ist .D
13:02:23 kevin: lol, ok
13:05:01 xq: sonst hätte ich sie nicht in den dump gepackt *versteckt sich*
13:05:10 xq: aber scheint ja jetzt zu tun, jedenfalls senden
13:09:11 xq: aber jetzt geht die lustige fahrt erst mal richtung lwIP
13:09:22 xq: man muss ja nicht alles neu erfinden
13:09:29 xq: LittleFox: hast du deinen eigenen netzwerkstapel?
13:10:28 LittleFox: auf LF OS nicht, irgendwoanders mal was gefrickelt
13:10:42 xq: war nur neugierig :)
13:10:47 xq: was benutzt du in LF OS?
13:14:11 LittleFox: noch kein netzwerk (:
13:14:58 xq: ah
14:58:06 xq: \o/
14:58:52 xq: es scheint als wäre ich einen DHCP-Handshake weiter
16:09:31 xq: ich brauch aber die tage nochmal ein paar infos zu virtqueues
16:09:35 xq: muss nochmal die spec lesen
16:09:46 xq: ggf. ist die implementierung von XanClic suboptimal :P
16:17:53 xq: https://cdn.discordapp.com/attachments/1042076164442832926/1044647877105950790/331bd5ffc88cc0aeffa74e39be572750773c5e1f.png
16:17:58 xq: das hier sieht doch mal nice aus
16:39:25 kevin: Woher hast du die Implementierung denn geklaut?
16:39:55 kevin: Aber jo, scheint doch ganz gut zu funktionieren
17:54:18 xq: kevin: lwIP
20:57:03 Biolunar joined the channel