klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
<geist> do you see any traffic on it?
<geist> that's not yours
<catern> heat: good suggestion to try wireshark, but same result, SYNs are showing up but Linux isn't responding
<geist> generally speaking any active thing that linux is talking to will send ipv6 broadcast stff every once in a while
<catern> geist: not sure what you mean - yeah linux sends me ICMPv6 stuff
<catern> s/not sure what you mean//
<geist> okay, that. sounds like it's alive then. interesting that it doesn't even RST your SYN
<geist> that kinda implies it doesnt have an ip address bound to it
sortie has quit [Quit: Leaving]
<geist> or you're sending it to the wrong address
<geist> or they're malformed some wya that it just drops it
<geist> wireshark is pretty good at pointing out bad packets
<heat> it doesn't catch some things though
<doug16k> you have to enable checksum checks though
<heat> martian packets for example
<doug16k> might need to disable crc offload too
<geist> if it's a tun then that should be all L2
<catern> i have a devious plot to narrow it down though
<catern> i've just started up two tuns and I'm connecting them to each other
<catern> Linux can't possibly object to its own packets :^)
iorem has joined #osdev
<geist> word.
<doug16k> sounds like tun don't work :)
<geist> also this does have me wondering: is it possible to hook up a TUN to a qemu guest via some mechanism
<geist> and skip the whole eth thing
<catern> but yet it still doesn't respond to its own SYNs so something is still screwed up...
<geist> catern: does ip addr show any address assigned to it?
<geist> are these ipv4 or v6 packets?
<geist> if it doesn't think it should e listening for an address it would presumably drop it
<klange> I still need to write a `tarfile` implementation for Kuroko, but I really really need a gzip/deflate compressor fist...
<catern> geist: yeah they have addresses assigned, 10.0.0.{1,2} http://catern.com/addr.txt
<geist> huh. dunno
<geist> how do you bridge two tuns like that/
<geist> ? can you assign them to a bridge?
<catern> heh
<catern> cat
<geist> oh? they show up as a regular file?
<geist> guess makes sense. taps probably do too
<catern> no I just mean I'm running two cat processes with the tunfds as stdin/stdout (swapped for both directions)
<catern> but yes, a regular file descriptor
<doug16k> simpler to make a pair of fifos and use that no?
<catern> well I need to connect the tun fds, right? I need something running in a loop to copy from one tun to the other
<doug16k> ah if the goal is the tun and not a full duplex pair of fds
heat has quit [Ping timeout: 244 seconds]
fwg has quit [Quit: .oO( zzZzZzz ...]
Lucretia has quit [Quit: Konversation terminated!]
Lucretia has joined #osdev
isaacwoods has quit [Quit: WeeChat 3.1]
<doug16k> best thing about doing a bunch of utf8 and utf16 crap with efi and non efi, is bugs where you get something like this: [0] base=0, end=1000, size=1000, type=䕒䱃䥁䅍䱂E噎S䅂D䱁佌䅃䕔D佂呏佌䑁剅一剏䅍彌䴲一剏䅍彌䜱
Arthuria has quit [Ping timeout: 264 seconds]
<gog> lol
<doug16k> I didn't make that up, that is from the debug run I am doing right this second :P
<gog> i believe you
<doug16k> I was getting away with %s meaning utf16, so when I passed it a utf8 once, without the 'ls' it acted as if utf16 input anyway
<geist> hmm, wonder how hard it would be to generically templatize the inner printf routine to handle utf16
gog has quit [Ping timeout: 244 seconds]
<doug16k> no such thing as utf16 in printf
<doug16k> all printf heard of is wchar
<doug16k> if wchar is 16 bit, yeah, %ls is utf16
<doug16k> I was hoping that wasn't right. I wanted to use the right format string for char16_t* and my conclusion was there is no such thing
<doug16k> in efi I can use %ls because wchar_t is same thing if -fshort-wchar
<doug16k> but I have to use wchar_t, %ls isn't even char16_t when fshort-wchar
johnjay has quit [Ping timeout: 252 seconds]
<doug16k> wchar_t is something else
<doug16k> can you believe we still haven't figured out how to point to text in ram yet?
<clever> i just remembered, the c64 was using a weird way of terminating strings in one of its lists
johnjay has joined #osdev
<clever> the last char in the list, had the high bit set
<doug16k> 7 bit strings ya
<clever> why waste a whole 8 bits on a \0 when you can pack the terminating flag into the last char!
<clever> but a side-effect, is that the string compare routine, i think it was using xor
<clever> and when the xor returns 255, you had a match, and your on the last char
<geist> ah so a 'regular' printf just needs to support %ls and then it basically works fine?
<geist> how about the output string format for sprintf or somethig? you'd need a wsprintf presumably
<clever> but, the problem, is that it didnt care which string had the terminating flag
<clever> because only the const string was supposed to have it
<doug16k> I insist on being able to open a file named "🂡" in my bootloader, and print that to a utf8 serial log from utf16 format string. I don't care if I don't need to lol
<clever> so if the 3rd char in your string had that bit set, it would abort comparing mid-way, and assume its all a match
X-Scale has quit [Ping timeout: 264 seconds]
<doug16k> geist, yeah, your wchar_t would be full 32bit codepoints on anything other than windows/efi
<doug16k> that explains why you hardly see wchar outside windows
<Oli> Reading a recent message from doug16k here, reminded me of the article on the web page this URL goes to: https://en.wikipedia.org/wiki/Mojibake
<bslsk05> ​en.wikipedia.org: Mojibake - Wikipedia
<doug16k> neat
<geist> was just thinking if i built an EFI app with my existing printf, etc
<geist> what i'd need to do
<geist> probably would just have some utf16-utf8 routines and move on
<doug16k> I used C++ overloading to make variants of everything handle either char* or char16_t*
<doug16k> strlen works on char16_t in my bootloader
<geist> and i assume the endian of the char16_t is simply whatever
<geist> ie, host
<doug16k> yeah it's uint16_t essentially, but distinct
<doug16k> I asked geordi, << is_signed<char16_t>::value
<geist> as a side note, is char16_t a standard type? if so, is it signed?
<geist> yah exactly
<doug16k> false
<doug16k> so are char8_t and char32_t
<doug16k> they are c++ types
<doug16k> I don't think C heard of utf anything yet did it?
<doug16k> C++ has 8, 16, 32 string literals u8"" u"" and U""
<doug16k> C has char and wchar "" and L""
<doug16k> wchar_t*
<geist> i only say that because of the char is signed/unsigned ambiguity
<geist> and that being apparently defined in the typed versions
<moon-child> doug16k: c has all of those too
<doug16k> moon-child, then what's the printf format for char16_t const *?
<moon-child> no printf formats. But it has the literals and the types
<doug16k> wow
<doug16k> how dumb is that?
<doug16k> and what about multibyte string? nothing added either? all wchar_t ?
<moon-child> dunno
pretty_dumm_guy has quit [Quit: WeeChat 3.2-dev]
<doug16k> er. s/multibyte/wide/
jaevanko has joined #osdev
<doug16k> blows me away that half assed stuff like that gets into standard
<doug16k> it's not the slightest bit better than uint16_t if nothing has heard of char16_t
<moon-child> I think they don't actually specify utf 8/16/32, just unspecified encodings of those widths. Hell they don't even mandate ascii for the base character sets
<moon-child> (hence di/trigraphs)
<moon-child> and yeah it's dumb, though I have gotten some milage out of the U'' character literals
<moon-child> *mileage
<doug16k> you need utf16be for iso9660
<doug16k> the joliet
<doug16k> because memcmp utf16le is nonsense result
<doug16k> sorts them by codeunit % 256 then by codeunit >> 8
ozxui_ has joined #osdev
<doug16k> I love how the path table works in cd format. that is awesome
ozxui has quit [Ping timeout: 264 seconds]
<doug16k> you just cheat straight to the directory containing the file
<doug16k> but yeah, just having encoding-specific literals is a big improvement
<doug16k> you just have to hope gcc is reading your source with the right encoding and wchar_t is 32 bit if you use L'🂡', but U'🂡' works regardless of wchar_t width
<doug16k> L'🂡' screws up in windows or uefi
<doug16k> it can't. doesn't fit 16 bits
<doug16k> it is 0x1f0a1
<doug16k> geist, since all the api calls in efi want utf16, I just adopted it so all my string literals and strings are tchar and all my string functions know how to use char16_t, and try to remember to countof when you would sizeof
<doug16k> like win32 code that defines _UNICODE
<geist> yah
<doug16k> but all same code also runs in bios boot with all utf8 so it's the same tricks as _UNICODE thing happening
<doug16k> and they need to force utf16 sometimes for iso/fat, so, a big happy encoding party
seds has quit [Quit: Updating details, brb]
seds has joined #osdev
Amanieu has joined #osdev
<doug16k> usually you do it so you have tcschr tcscpy tcslen etc, to mean do the wide or not automatically, but I decided I might as well let function overloading do it, since C compatibility is moot in the bootloader code
<doug16k> I don't do _T("whatever") like windows, I do: TSTR "whatever"
<doug16k> TSTR is u""
<doug16k> author of _T(s) didn't know that "you " "can " "do" " this" to make one string literal, I guess
<doug16k> I always hated putting that closing ) in
<doug16k> in utf8 TSTR is "" it has no effect
<geist> more like operator underloading, amirite?
jaevanko has quit [Quit: Leaving]
<doug16k> yes
<geist> yah funny me
<doug16k> I wish more languages adopted that so you don't have to + them together
<doug16k> it isn't even possible to keep a makefile under 80 colums, is it?
<GreaseMonkey> "concatenation" "like", "this" is such a footgun though
<moon-child> it's possible, with lots and lots of \
<doug16k> I try. often it breaks it
<moon-child> huh
<doug16k> let me see if I can find example
<doug16k> how can I get this line below column 80: https://github.com/doug65536/dgos/blob/master/Makefile.am#L2815
<bslsk05> ​github.com: dgos/Makefile.am at master · doug65536/dgos · GitHub
<doug16k> maybe bad example, after shell should work
jaevanko has joined #osdev
<bslsk05> ​github.com: dgos/Makefile.am at master · doug65536/dgos · GitHub
<doug16k> even possible to break in middle of argument and continue? have to start in 1st column of next line right?
<moon-child> yeah, or break up into separate variables
<moon-child> but yes I see your point. It's not that practical
<doug16k> I do some of that for the really heavy ones
<doug16k> I suppose when you are piecing together a ridiculously long qemu command line, you expect to have ridiculously long arguments
<doug16k> universe being a fractal again
jaevanko has quit [Quit: Leaving]
<doug16k> I wish char16_t were %hs - that would make sense, right?
<doug16k> maybe %ls means wchar_t and %lls means char32_t ?
<doug16k> in happy land I mean
<moon-child> or could slot in with the new explicit width specifiers. %w16s is char16, %w32s is char32
<doug16k> yeah
<doug16k> even better
<doug16k> ah I see why it's not warning me about screwing up %s, gcc can't check utf16 format strings
<doug16k> I can't put attribute format printf on them
<doug16k> the prototypes
<moon-child> you could use a macro to pass through to a dummy function
<moon-child> like
<moon-child> #define wprintf(...) (fakeprintf(__VA_ARGS__),real_wprintf(L"" __VA_ARGS__))
<moon-child> where fakeprintf has the attribute
<doug16k> yeah I almost thought of that but didn't think of empty one. thanks
<doug16k> could even make it static inline so it is sure it can toss it
<doug16k> could probably even attribute optimize to make it get optimized out in debug
<doug16k> the v one is toast but it's toast already, it just validates the format string
<doug16k> that takes va_list instead of ...
<doug16k> yeah I guess why not that one
<doug16k> same idea works there too
<doug16k> assuming it is safe to pass a va_list as a parameter, not touch it, then use it after that returns
<moon-child> hmm, by rights the v one should make sure you only call it from a function that has the printf attribute
arch has joined #osdev
<moon-child> but not surprised if it doesn't
<doug16k> if I was really paranoid I'd va_copy it to another one and pass that to fakeprintf :P
<doug16k> sorry, fakevprintf
<doug16k> I tippy toe around va_list
<doug16k> they put the fear of death into you with va_end eh?
<doug16k> how many children die if you forget to invoke va_end again?
<doug16k> a lot
<doug16k> they are all horrified because they know it might work if you don't :P
<doug16k> I want to find out what it is that totally crashes platforms that absolutely need it
<doug16k> man my cpu temperature is so weird. it'll go down to 40C and stay there for maybe 10-15 seconds, then jump up to 52C and fall back down to 40C in 5 seconds for another cycle
<doug16k> minimum is too low
<doug16k> I should play with min clock and see what that does to temperature
<doug16k> not happy about the sawtooth temperature graph
<doug16k> it's working as intended though
mctpyt has quit [Ping timeout: 264 seconds]
mctpyt has joined #osdev
<klange> hm, do I really need to be reading this mmio register twice... I suspect this is a bug... the real hardware didn't require that...
<geist> which one?
<klange> e1000e ICR, qemu isn't clearing the interrupts unless I read + mask + read + enable, but the hardwre seems to be fine with just one read; the e1000 emulation also just worked with one read and no mask flipping
<geist> interesting
<klange> i wonder if it's expecting me to be setting Interrupt Auto Mask for this chipset and the bug is around not doing that...
MarchHare has joined #osdev
HeTo has quit [Remote host closed the connection]
<kazinsal> klange: interesting. I'm also running into interrupt issues with e1000e, but on VMware
tenshi has joined #osdev
<klange> I just wanted to switch to -M q35 by default since it more closely matches my hardware test rig, but that switched the emulated nic and the two implementations are completely different
<klange> The machine emulated with -M q35 is from ~2008, so it's only 2~3 years older than the hardware in my ThinkPad. I have a slightly different model number on my NIC (which worked with my old driver in toaru32).
<geist> yah q35 is really all about pci-e being the base thing
<doug16k> definitely q35 by default if possible
<geist> omg just waching a review of the new Army of the Dead movie
<geist> and they picked out that one of the cameras (digital) they used to film it has a few dead pixels
<geist> and they didn't catch it in editing. so some scenes has this little while pixel that moves around, and then they'll cut andi t'll go away
<doug16k> haha, imagine how much that camera cost?
<geist> yah totally. probably one of those $100k RED cameras or something
<geist> i can see them using say 2 or 3 or so for the whole movie
<geist> so based on where that one camera was that one day and what angle it was filming...
srjek|home has quit [Ping timeout: 244 seconds]
<doug16k> the cameras they use are so good, it's almost impossible to make one
<geist> seems like in the source footage before editing you could fix it
<doug16k> or according to that movie review, fully impossible :)
<geist> but maybe they just didn't catch it before doing the final edits
<geist> yay digital cameras
<doug16k> yeah, they can fix it incredibly well with some amazing ai pixel replacement algorithm
HeTo has joined #osdev
<klange> lol ai pixel replacement, they can just hire an intern to flip through the frames and fix it
<doug16k> have you tried schedutil governor? it's way better on non-intel
<doug16k> lol it pretty much keeps it over 4.3 all the time but temp stays below 60
<doug16k> 4.5 sometimes
chartreuse has quit [Remote host closed the connection]
<doug16k> so weird for it to be max turbo at 1% total cpu
<doug16k> aliens will think we're nuts
<doug16k> mwait never ran so fast
<doug16k> apparently cfs says floor it
<doug16k> ah I remember. if you want ide storage, I force q35 off and it's a piix, otherwise it is q35. then I have a way to instantiate an old thing
<doug16k> I should put it on mbr, so mbr means piix, and hyb or gpt means q35
<doug16k> but piix naturally has ide and q35 doesn't so I did it that way
<doug16k> ide on x86_64 os is "you're kidding" territory
<doug16k> ide might not exist on the board, at least no connector
<doug16k> chances of an ide chip being there somewhere is very high
<doug16k> we are near the point that sata is old because you should nvme
<doug16k> ahci is almost old
<doug16k> on emulator, sure, all that doesn't matter
<geist> yah
Affliction has quit [Quit: Read error: Connection reset by beer]
Affliction has joined #osdev
mctpyt has quit [Ping timeout: 264 seconds]
mctpyt has joined #osdev
<MarchHare> man, what a shitshow on freenode.
<MarchHare> Some nobody going by CrystalMath is trying to convince people that they want to fix stuff over there
<MarchHare> lolsuuuuuure
<geist> they're still trying to work on it?
<MarchHare> Oh, they're legit trying to help fix things?
<kazinsal> Considering that dude was a biiiiig stallman defender, uh
<geist> yeah, i had a long chat with them about the freenode thing trying to talk them down
<kazinsal> I'm thinking that dude might be a lost cause
<geist> but eventually decided that seems that 90% of what they do is politically motivated one way or another
<geist> and i just dont have any time to deal with it
<geist> even osdev was all about 'i dont trust this' or 'all things must be built from individual atoms' etc
<geist> sure, i get it, but.. jeez only so much time in the day
<kazinsal> I'm not even sure what their ideology is. Paranoid electroprimitivism.
<geist> yah basically
<kazinsal> With a side dose of libertarian anti-regulation
<geist> right
<MarchHare> I just log on to say hi to folks and it's like all of a sudden klaxons blaring about some schism. I wasn't really expecting that on freenode
<kazinsal> (or Big L Libertarianism, if you want to tie it to an affiliation)
<geist> MarchHare: yah, sorry about that. at least you found us. most of the usuals migrated here within a day or two
<geist> as did most other channels i hung out in. and by and large it's pretty much business as usual
<MarchHare> Yeah, I haven't been as super active lately anyway
<kazinsal> MarchHare: Definitely, I was expecting a "microsoft buys github" situation and not "the bitcoin billionaire crown prince of south korea turns freenode into an experiment in how long it takes to destroy an IRC network"
<MarchHare> Crown Prince Lol that guy really got full of himself, huh?
<geist> random local band i stumbled upon literally on TV the other day: https://youtu.be/tQC3TnGlHgA
<bslsk05> ​'Industrial Revelation - The Lake - Live on Band in Seattle' by Band In Seattle (00:05:55)
<geist> it's a stock chord progression but that drum/bass groove is smooth
<MarchHare> Seriously...most IRC users don't even concern themselves with high level server politics. If I have to fool with that stuff, count me out.
<kazinsal> My understanding is that for at least one branch of possible successors to a long-dead emperor, he is "crown prince"
<MarchHare> Oh, you mean an imperial dynasty that ended in 1911 or so?
<kazinsal> But that's like saying that because one of my three-greats grandfathers was a noble bastard, I'm the crown prince of Ireland
<geist> heh or maybe the Kim family that happens to run NK
<MarchHare> Which got succeeded by two separate countries with officially recognized governments...
lleo has joined #osdev
<geist> yah totally. eing related to some distant monarchy just causes my eyes to involuntarily rotate
<kazinsal> We're all nth removed from someone important
<geist> really any amount of rank-pulling i find to be completely distasteful
<geist> like kevin bacon
<kazinsal> Six Degrees of Queen Elizabeth
<MarchHare> Kevin Bacon is imminently taseful! You take that back!
<kazinsal> ha
<geist> oh heh i mean six degrees
<geist> bacon is also very tastey
<kazinsal> I'm sure Kevin cooks a mean bacon
<MarchHare> Too late. Thems fightin words. We gonna fight now
<geist> oh no
<geist> are we going to netsplit the server now?
<geist> everyone forced to take sides
<MarchHare> Our fight will split networks! It will be remembered for decades!
<kazinsal> pro-bacon, and rabidly-pro-bacon
<MarchHare> bacon.net:6667
<MarchHare> Come to think of it, I don't think I've seen a net split for several years now. Don't those still happen?
<kazinsal> Oh, yeah
<geist> yeah i think a lot of clients just hide it
<kazinsal> We've had a few here since the network started, mainly when servers got too full and they had to spin up more
<geist> eyah even freenode would netsplit every once in a while, restarting servers, etc
<geist> any sort of rehubbing, etc
<MarchHare> I remember undernet used to split all the time.
HeTo has quit [Ping timeout: 264 seconds]
Shikadi` has quit [Ping timeout: 264 seconds]
fwg has joined #osdev
alexander has joined #osdev
KidBeta has joined #osdev
mctpyt has quit [Ping timeout: 264 seconds]
mctpyt has joined #osdev
KidBeta has quit [Client Quit]
Bonstra has joined #osdev
fwg has quit [Quit: .oO( zzZzZzz ...]
springb0k has quit [Ping timeout: 252 seconds]
dennis95 has joined #osdev
<radens> doug16k: do you know the gdb remote protocol well? It looks like the debugee can sent the equivalent of writes to stdout over to the debugger via O packets, but how does the debugger send data the other way?
<radens> Maybe there's a packet type I overlooked?
fwg has joined #osdev
<doug16k> I don't think so
<radens> :(
<doug16k> there is a file transfer protocol you could use
<radens> yeah
<radens> If there isn't I was thinking of hacking something up where if the vm guest (the debugee), probes the data available flag, we send a file IO packet which is a read of one byte, anticipating that they will read the data immediately
<radens> But I don't think we can guarantee that?
<radens> so it's a read of one byte from the debugger's stdin
<radens> but it's goofy because in posix you can't probe a pipe to see if data is available before doing a read
<radens> so I'm not sure how to handle that because the debugger will block I think
<moon-child> can't you do that with the aio stuff?
<doug16k> poll should do it no?
<radens> @moon-child the gdb file IO API surface is very small. It's basically open, close, read, write, seek
<doug16k> goal is to send commands to a serial REPL from gdb?
<radens> yeah
<doug16k> you can make up your own command
<radens> yeah I was thinking along those lines
<radens> or just send the O command the wrong directoin
<radens> but I'd need to teach gdb about that
<doug16k> maintenance packet qmadeup.sendinput ls
<doug16k> no you don't
<radens> No?
<doug16k> maintenance packet puts a gun to its head and sends a command you made up entirely
<doug16k> qemu uses it
<doug16k> qemu needed a way to control whether step masks hardware irq
<doug16k> normally step will drive you nuts with irq enabled because by then the timer fired
<doug16k> so it by default masks irq on step
<doug16k> you override it with this command they made up: maintenance packet qqemu.sstep=5
<doug16k> qqemu.sstep=5 is handled by the gdbstub
<doug16k> so just make up a qwhatever.sendinput command
<radens> oh shit
ccx has joined #osdev
<doug16k> you could wrap it in a macro to make it look nice
<doug16k> gdb protocol is inherently extensible and forward compatible
<radens> So if I do that does it turn into something like $qqemu.sstep=5#00 where 00 is the checksum?
<doug16k> if you sent maintenance packet qlmfao.madeup=42 to a stub, it would just reply empty string
<radens> nice
<radens> okay let me go try that with wireshark running
<doug16k> it turns into hex encoded
<doug16k> iirc
<doug16k> ah wait
<doug16k> not sure with that command. might be raw
<doug16k> yeah it should turn into what you said
<doug16k> wireshark?
<doug16k> you are talking to the person that sent the pull request that added gdbstub tracing to qemu
<doug16k> -trace 'gdb*'
<radens> yeah I was looking at the protocol under wireshark to make sure I understood it
<radens> nice
<doug16k> it will decode it to some extent
<doug16k> I made the event names tell you a good bit
<doug16k> can just poke at gdb's and see what happens
Belxjander has joined #osdev
<doug16k> I love how practical the protocol is
<radens> yeah
<doug16k> ah are you connecting to your own stub?
<radens> I do think that the way it encodes everything in hex is kinda inefficient. It's very simple, but we're talking slow transports to slow devices
<radens> Yeah, I'm writing the stub.
<doug16k> do you have compression?
<radens> I've written a bunch of it
<radens> I see that there's run length encoding support
<doug16k> yeah that
<radens> Yeah, I haven't written that yet
<doug16k> if you want speed, add range stepping
<radens> range stepping?
<radens> I don't know how fast what I have is
<doug16k> goes from "oh man step is visibly slow" to "whoa just like local"
<radens> frankly I haven't wired it all all up yet
<doug16k> I mean over actual serial
<radens> oh range stepping as in sADDRESS?
<doug16k> range stepping gives gdb a way to say "step, but you better not stop until you are outside this range here"
<doug16k> so gdb singlesteps, looks and realizes, uh oh, too soon, steps, and it repeats, until it is outside the range, THEN sends stop packet
<doug16k> without it, it does an individual instruction and round trip where client steps again and again and waits for each step
<radens> Yeah yeah, yikes
<doug16k> so step at prologue could be 5 seconds
<doug16k> in printf or something with insane prologue
<doug16k> any stdargs
<doug16k> but range step will tell it step over this whole pile of crap, and it's one round trip to next line
<doug16k> thing of range step line an anti-breakpoint range. break everywhere *except* in this range
<radens> I have code to handle it, but we're at an "it compiles" stage. I'm still figuring out how the protocol works and stuff. And I want to make the stub a reusable library which I can link into my kernel, and this hypervisor, but there are so many target specific actions that I'm winding up with an unwieldy API surface.
<doug16k> entirely on gdbstub side
<doug16k> do you send target xml?
<radens> not right now
<radens> I wanted a minimal feature set to do my thing
<radens> but what is the target xml all about?
<doug16k> it tells it how your register packets are laid out
<radens> Does it rescribe the register layout or something?
<radens> Ahh
<doug16k> and creates those magic variables you can use from gdb, like $eflags, $rax, etc
<doug16k> I sent a fix for broken register display and added a bunch of system registers
<radens> I reverse engineered most of it via wireshark, and then looked at your stuff when I had this giant unknown block in the middle which turned out to be the floating point state
<radens> And then found the target xml file in the gdb source you reused
<doug16k> you can use $cr0, $cr2, $cr3, $cr4, $efer, $fs_base $gs_base, $k_gs_base to get at the stuff because I added them to the target description
fwg has quit [Quit: so long and thanks for all the fish.]
<doug16k> yeah I ask because in a way it seems like work, but in another way, it's easier
<radens> Oh you did that? Thanks.
<klange> doug is basically solely responsible for qemu being usable for debugging a guest OS
<radens> damn thanks
<radens> Yeah I was just reusing that structure, and then setting anything I didn't handle yet as xxxx like it says I can in the spec
<doug16k> yeah, it's neat that the stub has a way to say "I don't know!" when reading a register
<radens> Question: if I allocate a fat stack buffer for all of this, but then it turns out that qemu send too much data for me to unpack into the buffer, what's the right way to handle that? An empty response?
<doug16k> if you fail hard, you should send a reply that begins with E (must be uppercase)
<doug16k> if you have no idea what command that is, you send empty response
<radens> okay, I need to clean that up then, I was sending empty responses everywhere.
<doug16k> also, any hex in your replies must be lowercase, so it isn't confused with error E
<radens> oh good point. I was using lower case hex, but wasn't sure if I needed to handle upper case
<doug16k> let's say they want to add a hardware breakpoint, but maxed out. you reply E so gdb knows you didn't set it but you know how to set hardware breakpoints
<doug16k> E then two digits
<doug16k> which two digits? nobody knows
<doug16k> I don't think it matters
<radens> it looks like people try to send unix errno codes
<doug16k> ah
<radens> which is a nice convention even if those are a shitty interface
<doug16k> yeah, usually you can pick an errno that is vaguely right
gareppa has joined #osdev
<radens> eventually I should handle all of the multi threaded extensions because right now any core can receive these serial interrupts I think
<doug16k> highly doubt it
<radens> which means if you ask for the registers twice you may ask two different cores
<doug16k> no on pic?
<doug16k> what?
<radens> Would the pic be configured to dispatch interrupts to just one core? Is that a sane thing?
<doug16k> no
<doug16k> why even use irqs?
<radens> I don't think I want to be polling for packets constantly
<radens> I mean, I could poll every vmcs timer exit
<doug16k> constantly? you mean when the kernel is frozen in the debugger and nothing is running whatsoever?
<doug16k> when the inferior is running it ignores serial
<radens> That is a situation which doesn't sound as unreasonable as during the guest's steady state run
<doug16k> that's why I dedicate a cpu to stub
<radens> How do you break in with like ctrl+c?
<doug16k> I route the serial IRQ to that cpu
<radens> Why not have an irq driven design?
<radens> Ah
<doug16k> one of the reasons
<radens> Well maybe I route that IRQ to the bootstrap core
<radens> and then can send ipis over to the sibling cores when I need them to do stuff
<doug16k> if it is PIC IRQ, it is going to bootstrap cpu, period
<doug16k> if it is IOAPIC then you can pick which cpu it goes to
<radens> right
<doug16k> irq won't randomly go to whatever cpu
<doug16k> you could make it do that. if it hurts when you go like that, don't go like that
<radens> tbh I don't know which interrupt controller uefi is using now but edk2 has code to handle both.
<doug16k> you know what? it would be way cleaner to put the guest on an AP
<doug16k> then you can just use plain UEFI APIs to access com port
<doug16k> I use NMI to break into other cpus and send them commands when they are frozen
<doug16k> unstoppable
<radens> okay yeah
<doug16k> there is even an API in UEFI to launch a function on an AP
GeDaMo has joined #osdev
<radens> yup that's how I take over the sibling cores when bringing up the hypervisor
<radens> goes gdb know how to speak pdb? Clang is emitting a pdb for the uefi driver
<doug16k> no
<doug16k> the feasibility of making a tool to do that is way higher now, microsoft opened up the file format
sortie has joined #osdev
<doug16k> could probably get crappy symbols with line numbers, good luck converting enough to get locals/register variables
<doug16k> you told clang to build a windows program?
<radens> oh slick it looks like clang is already embedding dwarf info into the PE
<radens> yeah clang is building the uefi app
<radens> That way I don't have to use the MSVC toolchain on linux or osx
sm2n has quit [Read error: Connection reset by peer]
sm2n has joined #osdev
<doug16k> use this to see if you have good info: objdump --dwarf your-kernel
<radens> yup
<radens> slick
tricklynch has joined #osdev
<radens> oh shit there are maintenance packets to read physical memory from the target
<radens> damn
<radens> I was missing that
<radens> will make it much easier to debug when I fuck up my page tables again :P
tricklynch has quit [Read error: Connection reset by peer]
tricklynch has joined #osdev
<doug16k> you can also use this command: monitor xp /42gx 0x42424000
<doug16k> dumps 42 64-bit values (g) as hex (x)
<doug16k> eXamine Physical
MarchHare has quit [Ping timeout: 252 seconds]
dormito has quit [Quit: WeeChat 3.1]
<doug16k> also, monitor info tlb
<geist> word.
gareppa has quit [Quit: Leaving]
<klange> really need to get gcc cross built so I can put it on the thinkpad so I can debug my network utilities without having to reboot...
mctpyt has quit [Ping timeout: 248 seconds]
mctpyt has joined #osdev
<klange> Discover makes it out, offer comes in, request is getting lost, lots of wire traffic in between
<sortie> Yo klange
<klange> yo sortie
<sortie> It's a beautiful day!
<klange> it's okay, not fantastic, little cloudy
<sortie> It's a beautiful day!
isaacwoods has joined #osdev
<klange> Ah, I see what I messed up. Now I get my ACK.
<sortie> Yay
<sortie> My irc network now has a watchdog to keep the cat contained in the VM
<sortie> It's been getting out instead of serving IRC clients
<klange> Give me the weekend and I should be able to get my client connected on real hardware.
<sortie> Your time has been allotted.
<geist> woot
<geist> so it begins. i was working on getting telnetd working on LK now
<sortie> geist: https://twitter.com/raggi/status/1398062849491038209 ← Also this happened
<geist> didn't completely get it working tonight but should be able to tomorrow
<bslsk05> ​twitter: <raggi> @sortiecat You're making me want to stand up one on fuchsia, perhaps we should peer if I do :-)
<geist> oh hella yeah. ircd on fuchsia FTW
<klange> I might need a bit more than the weekend for solanum.
* geist pokes raggi
* sortie allocates klange another golden week
<sortie> Federation of osdev ircds
<klange> Of course, the proper ToaruOS approach would be to write my own ircd...
<j`ey> sortie: allocation failed, golden week exhausted
<sortie> j`ey: ulimit -G 2
<j`ey> :3
<geist> klange: that's kinda my point. LK/etc is very much 'dont port existing stuff, write new bits'
<geist> so writing a new ircd is a bit more of an ask
<geist> a client is one thing, an ircd is a bit more of a tall order
<sortie> Plus if we want to link 'em, well, they need to be powerful/compatible enough
<sortie> But whatever you prefer! It's about tinkering
<klange> maybe i should write one in kuroko that stands a chance of being run anywhere
<geist> yah possibly here too, but i'll probably just end up crashing your network
<geist> but maybe can work up to that. would be fun to support a simple ircd
<seds> morning all
<froggey> totally in for a network of janky homebrew ircds
<seds> hey geist, congrats with the fuchsia
<geist> oh thanks!
<geist> just the first step, but its nice to finally get it out in the wild
<geist> i was literally just checking my two home hubs to see if they got updated
<seds> geist: how long were you working on fuchsia anyway?
<klange> ... is it shipping to existing devices as an OTA update?
<geist> oh i joined the project in mid 2015?
<geist> klange: yep!
<geist> probably the first time ever that an OS is literally being OTAed to a completely differnet OS
<klange> That's kinda amazing. Are they running Android now?
<geist> only a few news sites have picked up on that
<geist> they're running castos
<geist> it's linux based, but not android
<seds> geist: oh right, right at the beginning sort of, nice
mctpyt has quit [Ping timeout: 252 seconds]
<geist> ~.~.
<klange> ssh trouble?
<geist> heh yeah actually
<j`ey> ~_~
<geist> well more specifically i just applied an update to one of my unifi switches
<geist> and it didn't look like it recovered so i was trying to break out of ssh
<geist> i eventually just closed the terminal and started a new one
<XgF> <geist> probably the first time ever that an OS is literally being OTAed to a completely differnet OS <-- Masterrcard OTAed ~60,000 servers in bank DCs around the world from Solaris to Linux a year back, so probably not quite the first time :-)
<XgF> (I wonder how large that system image was given that a bunch of them had to be upgraded over ~1mbit/s leased lines :-))
<geist> XgF: ah cute!
<geist> interesting they must have been running on non Sun x86 boxes i guess
<geist> or they switched to oracle linux or whatnoever that is?
<XgF> geist: Just a bunch of HP servers, from Oracle Solaris to Oracle Linux
Bonstra has quit [Ping timeout: 264 seconds]
<geist> ah didn't know you were ever really allowed to run oracle solaris officially on non sun/oracle machines
<XgF> The x86 version is just licensed like a normal OS
<XgF> I guess at one point they were probably running SPARC boxes but some time in the relatively distant past they must have moved to Solaris/x86
Bonstra has joined #osdev
<clever> 2021-05-28 08:13:32 [freenode] -!- mode/#osdev [-i] by lionman
<clever> looks like staff are messing with the old #osdev
<clever> he's not even in the room, and he is able to change modes
<puck> it seems at least the founder was reset
<sortie> Thanks for the spying clever :)
<sortie> I totally cut off all my ties with freenode
<sortie> Who's the new founder?
<puck> both air and Mutabah i believe
<sortie> That's something
<sortie> But the new regime won't allow redirections..
<klange> They're trying to save face by rolling back their idiocy from two days ago.
tricklynch has quit [Ping timeout: 264 seconds]
<clever> and #freenode is now back to that special moderated mode
tricklynch has joined #osdev
tricklynch has quit [Read error: Connection reset by peer]
dormito has joined #osdev
tricklynch has joined #osdev
<GeDaMo> Did you see the email that Andrew Lee sent to the Register? Scroll down to "Updated to add" https://www.theregister.com/2021/05/26/freenode_irc_takeover/
<bslsk05> ​www.theregister.com: After staff revolt, Freenode management takes over hundreds of IRC channels for 'policy violations' • The Register
<Mutabah> sortie: Plan is that CrystalMath will set up a mirror bot
<Mutabah> If we're good with that here
<Mutabah> At the very least, the name #osdev will continue over there (with proper moderation)
<sortie> Honestly I think that's a terrible idea
<j`ey> I agree, I think a split is just better
<sortie> I don't really want my messages sent back to the old regime
<sortie> Abolish the Korean Monarchy
<j`ey> if they want to join, just join here
<j`ey> it's not like matrix where there needs to be a bridge
<Mutabah> A point...
<Mutabah> we'll see how things go
<Mutabah> At least this is now the wiki-official place
tricklynch has quit [Ping timeout: 264 seconds]
tricklynch has joined #osdev
<sortie> Freenode crossed a line when they mass stole channels by topic regex with false positives, no warning, no case by case consideration, not even reaching out to group registrations
<sortie> This is their abusive tactics
<clever> i heard that one channel got banned for a topic of "not moving to libera"
<sortie> I'm in favor of whatever leaves that place scorched earth and lets users migrate here
<sortie> clever: Heck they even did it to our corporate channel for mentioning libera exists as an alternative
<j`ey> corporate channel on freenode?
<sortie> You know, corporate FOSS
<j`ey> for a particular project you mean?
<sortie> Yes
<geist2> ugh now there's #osdev and ##osdev over there
<geist2> with like 50-100 people. urgh.
<geist2> wait a mirror bot? like whatever we say goes to freenode #osdev?
<geist2> what about the other direction?
<j`ey> i think they meant both ways
<geist2> ugh. no that's dumb
<air> ok, I assumed this had already been discussed
<klange> Mutabah: I am not good with CrystalMath doing anything, actually.
<Mutabah> That's OK
<Mutabah> I guess I'm unwilling to let the good name of Freenode#osdev be sullied
<Mutabah> but All good with no bridge bot
gareppa has joined #osdev
<j`ey> Mutabah: the good name of freenode itself is sullied :P
<Mutabah> yeah :(
<Mutabah> (maybe recovery wasn't the best idea... but it's done now)
<klange> I think the best thing we can do for the "good name" of the channel is just accept that it is now here and be done with it.
<j`ey> i think it's fine if they want to have a community over there too
qookie has joined #osdev
gareppa has quit [Quit: Leaving]
<junon> Freenode itself is sullied. Moving to libera is something almost every notable channel thus far has done.
<junon> As long as the main site says libera, then the "good name" will have moved here. Not transformed, just moved.
<junon> Unfortunately Andrew Lee has begun the process of scraping the nickserv/chanserv registries and taking over channels for whatever arbitrary "policy" he's implemented. This is exactly what the opers warned about :/ I'd rather see osdev here, not being a security threat to participants, and the active encouragement by the main site to move here, instead of potentially leading users astray into
<junon> a server that is under malicious control all for nostalgia reasons. I think everyone is sad that Freenode is dying (dead) but that's no reason to keep using it if it's compromised. We wouldn't do that with anything else in the software world.
<junon> Just my $0.02.
<Affliction> +1
mctpyt has joined #osdev
qookie has quit [Ping timeout: 248 seconds]
<sortie> junon: First I hear of messing with nickserv?
isaacwoods has quit [Quit: WeeChat 3.1]
<vai> klange: yeah, well I just switched server to libera and done... is there anything else to do ?
<j`ey> nop
<vai> hmm yes I can have multiple page directories
<vai> seriously : thinking about mapping 0x8000 0000 to applications
dutch has quit [Quit: WeeChat 3.1]
<sortie> Woohoo I'm now self-hosting my irc.sortix.org IRC network with TLS on port 6697, signed by let's encrypt
<Oli> Hello, and congratulations, sortie!
dutch has joined #osdev
Oli has quit [Remote host closed the connection]
Oli has joined #osdev
<seds> i disagree with the idea of keeping multiple channels on multiple servers, this will just diverge logs. I personally use the logs to checkout previous conversation/help. now we have two logs one at freenode and another in libera.chat
<seds> + i believe that staying in freenode actually helps Andrew Lee believe what he is doing is right
<air> no we dont, globbot is dead
sortie has quit [Ping timeout: 264 seconds]
sortie has joined #osdev
<j`ey> seds: there are some people on andrews side. if we move here, i dont think we can have much say on what happens to that channel there!
<clever> one problem i see, they are using total users, and total channels as metrics of health
<seds> j`ey: yeah
<clever> but a better metric, is the sum of how many channels a user is in
<clever> some users (me), are leaving channels as they move, but have not 100% quit yet
<seds> clever: i think a better metric would be the amount of messages a channel has, no?
<clever> so i'm supporting the total-user metric
<clever> seds: oh, thats also a good one
<clever> bbl
lleo has quit [Ping timeout: 244 seconds]
springb0k has joined #osdev
Izem has joined #osdev
Lucretia-backup has joined #osdev
Lucretia has quit [Ping timeout: 264 seconds]
Lucretia-backup is now known as Lucretia
gog has joined #osdev
* gog meows
<sortie> Thanks Oli!
zagto has joined #osdev
dormito has quit [Ping timeout: 248 seconds]
dormito has joined #osdev
srjek|home has joined #osdev
springb0k has quit [Ping timeout: 264 seconds]
immibis has quit [Remote host closed the connection]
mctpyt has quit [Ping timeout: 264 seconds]
Arthuria has joined #osdev
MarchHare has joined #osdev
Izem has quit [Ping timeout: 264 seconds]
Shikadi` has joined #osdev
immibis has joined #osdev
<junon> sortie: opers on freenode sent out oper memos to all users to drop their nicks from the system before Andrew had full control of the databases to take emails/IP logs and whatnot as they suspected he might try to monetize the data or something of the sort.
<junon> "oper memos" here isn't the right term, I forget what they're called - like MOTD but it goes out to all users as a notice across all channels.
<Mutabah> wall message?
<junon> Yes, thank you - a wall message
<junon> :D
<junon> I can't remember what happened but chanserv was force-killed at least twice, too
<junon> It was either by the now-libera staff in order to prevent it from being misused, or it was done by the new management for something malicious; can't remember, but that was the first sign things were going wrong. After that a bunch of people joined #freenode to see what was up, the staff sent their resignations out within the hour after that, and a few hours later libera was announced and the
<junon> wall messages were going out.
<junon> They warned andrew had intentions to scrape/modify/take over the services databases as they were the only centralized parts of the network and use the data for whatever he wanted. Now he's taking over chanserv and booting channels off and presumably has dumped nickserv as of a few days ago.
dormito has quit [Quit: WeeChat 3.1]
<immibis> dropping nicks would make no difference
<immibis> except you wouldn't log in so you wouldn't send your nickserv password in cleartext
HeTo has joined #osdev
ozxui has joined #osdev
thinkpol has quit [Remote host closed the connection]
thinkpol has joined #osdev
ozxui_ has quit [Ping timeout: 265 seconds]
Shikadi` has quit [Ping timeout: 264 seconds]
<junon> immibis: the concern was about data retention/privacy. Presumably, dropping your nick from nickserv meant your email would be purged and thus Andrew wouldn't have had that data to access after he took over - after which, there is little trust that he wouldn't mis-use, sell, etc. that data.
<junon> When you register your nick you provide an email address. It also creates an association between email/IP address as well as your message content, etc.
<kazinsal> Considering the amount of spam I get, I think my public email address is thoroughly sold
<junon> :D well I think the association is more valuable, especially to e.g. law enforcement. Remember that different people have different threat models, and IRC is one of the oldest forms of decentralized communication. Not everyone speaks in public channels, or in channels at all.
<kazinsal> I have always assumed that IRC channels are perpetually public, regardless of what the topic or +m status says
dutch is now known as SpikeHeron
<junon> A channel can be private or secret, depending on the level of secrecy the channel operator wants. Secret means it doesn't show up on /list, private means it cannot be /join'd without the password or without an invite (hence why /knock is a thing). Assuming there is no server-wide logging enabled, private channels cannot be snooped on without compromising the server/shard/network.
<junon> Freenode (now Libera) staff claim Freenode didn't log private channels but that Andrew might start doing so, which violates a lot of peoples' threat models.
<moon-child> you also need to ensure everyone is using ssl
<moon-child> otherwise their connection could be mitmd
<moon-child> but there's some channel mode you can use to enforce that
<junon> yes that too, but generally speaking those individuals do that and IIRC there's a way to enforce it with a channel mode
<gog> hopefully libera never gets compromised because i used my private email to register :/
<gog> i get no spam whatsoever on it lol
<junon> I wonder if it's possible to snoop on service communications via a linked server. That would be cause for concern, because the second you query your own info to get the email on file, the malicious shard could sniff it potentially since IIRC your connection to the shard itself is over TLS but there's no e2e between you and the services.
<junon> That's a good question actually.
mctpyt has joined #osdev
<junon> Okay just asked - yes leafs can see your messages in plaintext but all leafs are controlled by network staff. There is no third-party linking, idk why I thought they did that.
<junon> So ring of trust is still with the libera staff to begin with.
eight has joined #osdev
dormito has joined #osdev
<Oli> You can "fish" messages with a plugin, which would encrypt messages before sending them, and decrypt messages after receiving them to display; it works for direct messages, and if I recall correctly, I have been hinted at that it can work on channels too.
<immibis> andrew did say he wanted freenode to be federated.\
<vai> Any practical use for the cache disabled bit (feature) in the Page Directory Entry -structure?
<vai> lol, I was thinking about the page table.. how paging worked.. I mistook it as a flat database of lengths :)
<vai> actually it is more dynamic : a dynamic enough db
<vai> but what happens if you map an area twice
<moon-child> mmio?
<kazinsal> yeah, you cache-disable MMIO regions so whenever you read from or write to the MMIO you know you're *actually* doing a read/write on the device
<moon-child> (though now that I think about it, maybe it's faster in some cases to leave caching on and clflush once you're done)
<moon-child> (write-combining etc.)
iorem has quit [Quit: Connection closed]
doug16k_ has joined #osdev
doug16k has quit [Ping timeout: 264 seconds]
<junon> immibis: what andrew says and what he's doing are two very different things.
<immibis> caching mmio sounds like a recipe for disaster. I think I've seen MMUs with bits for write-through vs write-back cache though
<kazinsal> royalty tends to be not clear of mind due to genetic factors
<immibis> so you can at least know your writes are happening
<immibis> genetics are irrelevant when you bought your title
<kazinsal> he does apparently have blood relation to a historical korean royal family
<kazinsal> which does mean it's possible that he has an uncledaddy, knowing royalty the world over
<moon-child> 'related to' probably not it then. Hybrid vigour is a thing
<junon> he's also the dude that ruined mt gox so
lleo has joined #osdev
<doug16k_> thing about MMIO being cacheable is, even if it could work properly, the cpu can speculatively load from it when it shouldn't, whenever it feels like it
<doug16k_> even if program flow isn't even going to those instructions. could because of mispredict
<moon-child> hmm good point
<moon-child> though won't a mispredict cause a load anyway, even if cache is off?
<doug16k_> uc loads won't be dispatched speculatively
<doug16k_> cpu won't touch UC memory until it is 100% sure and all prior instructions retired
<moon-child> ah cool
<moon-child> I wonder if you could get around that by making an uncached mapping for reading and a cached mapping for writing?
<doug16k_> that would be UB I think
alexander has quit [Ping timeout: 264 seconds]
<doug16k_> some mixing of memory types screws up the cache coherency mechanism
<doug16k_> ah wait
<doug16k_> no that's for paging and mtrr conflicting
<doug16k_> in a not-fully-overlapped way
<kazinsal> yeah you can MTRR yourself into some bizarre situations
<kazinsal> cache disable on the page + non-writethrough on the page + write-combined on the MTRR is "probably write-combined, but who knows"
<doug16k_> there is a WT memory type to make it write thru, but cache loads
<gog> PAT to the rescue
<gog> if your cpu supports it ofc
<kazinsal> yeah I gotta start poking at PATs, preferably when I do my 64-bit core rewrite
<kazinsal> I don't *think* I'm losing much time if any to cache misses that could be fixed by twiddling caching bits but
<kazinsal> can't hurt to have the option available
<doug16k_> biggest jump you'll see is by mapping the framebuffer WC
qookie has joined #osdev
<doug16k_> memory types are mostly for correctness, though
<doug16k_> I set mine up so when the PAT bit in PTE is 0, the PCD and PWT do what they are named to do. PAT bit on gets you access to WT and WC and WP
<kazinsal> yeah, I don't have a framebuffer so haha
<kazinsal> pfft. jraphics.
<doug16k_> then time spent in that will be close to zero :P
* kazinsal lugs out a VT52 and yells 80X24 OUGHT TO BE ENOUGH FOR ANYBODY
<doug16k_> not zero though, quantum mechanics right?
<kazinsal> quantum framebuffer bit twiddling
tenshi is now known as nyarlko
<vin> https://oxide.computer/ Looks interesting especially SmartOS+bhyve. But I don't see anything special about the rack or the "OS integration", opensource firmware is nice but am I missing something?
<bslsk05> ​oxide.computer: Oxide
doug16k_ is now known as doug16k
<kc8apf> vin: <- works at Oxide
<kazinsal> that looks like someone came up with a nice HTML5 website to try to reinvent the concept of signed firmware and the intel management engine
<kc8apf> *sigh* I work at Oxide, not vin
<vin> lol
alexander has joined #osdev
<kazinsal> I guess maybe if they release their switch fabric ASIC drivers then it might give some other vendors a kick in the pants
<kc8apf> it's probably easier to think of an Oxide rack as an appliance that runs VMs
<kazinsal> wouldn't mind a somewhat modern switching ASIC being publicly documented
<kc8apf> kazinsal: I believe our intent is to make the switch stack open source including the P4
<kazinsal> the <lovely people> at cumulus are all "we're open source! look at us! it's a linux switch! no you can't see the ASIC driver, what are you, cheap?"
<j`ey> kc8apf: nice
<j`ey> kc8apf: whta do you do?
<kc8apf> j`ey: everything
<j`ey> vague
<j`ey> :P
<kazinsal> kc8apf: nice. I'm a network engineer, so being able to build actually functional whitebox switches is something I am interested in
<immibis> aren't those a thing that exist already?
<immibis> are they selling ones that don't work for people?
<kazinsal> you can buy whitebox switches but they only have one or two OS choices
<kc8apf> j`ey: well, I've done everything from decapping and REing LPC55 microcontrollers to validate their security claims before using them as a root of trust to designing auth federation w/ Active Directory to planning our overlay networking to fixing high CPU usage in Firefox caused by our website
<vin> kc8apf: Nice. How is it different from having Mesos+ running on a bunch of blades?
<kazinsal> because nobody has ever open sourced or even open documented any modern switching ASICs
<j`ey> kc8apf: oh yeah, i read the lpc55 blog post
<kazinsal> and as far as I'm concerned, "your choices are Dell's OS or Cumulus's OS" is not an open switch
<kazinsal> that's just vendor lockin from two angles instead of one
<kazinsal> if I wanted a linux based switch that I couldn't see the insides of, I'd buy a Cisco Catalyst
<vin> btw, I loved On the metal. Looking forward to more episodes kc8apf
<immibis> not even if you pay them substantially?
<immibis> (that's not open obviously)
<immibis> i worked at a company that made blackbox switches using these asics
<kc8apf> vin: lots of ways. 2x100Gbps per node. Out of band management that works reliably and doesn't introduce dozens of security problems. Component-level fault detection and reporting.
<immibis> we had extensive but not very helpful datasheets. I don't think you could write an entirely free software stack even *with* all the datasheets. There's just too much damn complexity
<kazinsal> so there's this thing called the ONIE that is basically a busybox environment baked into some switches that you can use to install another OS. in theory you can install any OS you want, but in practice, there are two or three OSes that actually have ASIC drivers
<immibis> (however, you could use their sdk to write something that worked)
<kazinsal> like you could 100% install openbsd on an ONIE switch but it's not going to do anything and you won't even see any of the switchports
dennis95 has quit [Quit: Leaving]
<kc8apf> while a lot of the Oxide team are ex-Sun, I come from Google's datacenter hardware group so I bring a lot of the hyperscaler thinking about operations and how that impacts hardware and software design
<immibis> even small switches seem to have tons of hardware registers and stuff. but that's probably the same as all hardware
<kazinsal> yeah thankfully everyone these days basically either shoves broadcom or mellanox ASICs in and calls it a day
<vin> kc8apf: I am not selling HPE (diclaimer I used to work there) but https://h20195.www2.hpe.com/v2/GetDocument.aspx?docname=c04815113# Synergy+GreenLake provides the same features you described.
<bslsk05> ​h20195.www2.hpe.com: HPE Synergy 12000 Frame (QuickSpecs/c04815113.pdf)
<kazinsal> I think one of the only ones still doing some ASICs themselves is Cisco
<kc8apf> vin: yup. I know folks at HPE and we've looked at GreenLake
<kazinsal> and that's because they poured an enormous amount of money into UADP
<vin> Except yes not an opensource firmware, but last I remember there were many internal projects that were looking to transition
<kazinsal> (fat lot of good the first version did though, the 3850 is the buggiest switch I've ever used)
<kc8apf> vin: we're aiming for a more public-cloud-like experience. We'll have an API with terraform provider, etc.
<kazinsal> more orgs doing disruptive stuff in the enterprise space is apprecaited
<kazinsal> hope y'all have some customers lined up already though because as someone who works in the enterprise space (albeit in canada, where our "medium-large enterprise" is america's "small enterprise"), a whole rack in one go is a hard sell
<vin> kc8apf: Got it. Good luck! I hope to see more from Oxide in coming days. Because I believe the current iteration wouldn't be a strong enough challenge to enterprises that are already fighting for thin margins
<kc8apf> we've had a customer council since nearly the beginning and quite a few prospective 1st customers lined up.
<kazinsal> part of the reason why Tetration didn't really do so well is because it's a whole-rack private cloud system
isaacwoods has joined #osdev
<kazinsal> and selling someone on a drop-in replacement for their entire infrastructure is different than selling someone on a seven or eight-figure drop-in replacement for their entire infrastructure
<kc8apf> if anything, the hard part for a lot of enterprises seems to be extremely low power availability in their datacenters. We routinely hear 4-5kW max
heat has joined #osdev
<kazinsal> yeah, a whole Tetration rack is something like 24 kW
<kazinsal> (their documentation and model info sheets are crap too; quite pleased that oxide just lists "yeah this is how big it scales" on the front page)
<kazinsal> if it's 7763s then that's 7000 GHz total in a rack for 2048 cores
<kc8apf> one my coworkers was part of Nuova which became Cisco UCS so we've got a bit of that lesson around too
<kazinsal> that's pretty damn powerful
<kazinsal> haha, yeah, early UCS had some idiosyncracies
<kazinsal> current UCS does too, but the first few gens were weiiiiird
<kazinsal> will never forget the time that we were upgrading the OS on an FI and the AHCI controller went "no, I don't think I will" and scrambled the boot drive
<kc8apf> btw, if you _want_ to work on illumos, bhyve, firmware written in Rust, etc, we've been hiring a decent amount this year
<j`ey> i do like rust
<heat> and firmware
<vin> kc8apf: I contributed to HPE OneView (UCS equivalent) long ago too ;)
<kazinsal> I try to keep my osdev at least directly separate from my work for conflict reasons. don't want to try to take something to market one day and have a handful of lawyers show up at my door
<j`ey> kazinsal: yes, that's an issue for me too
<kc8apf> kazinsal: definitely understand. Oxide sold me on that not happening.
<kc8apf> we've all got our side projects with various level of intention of running them as businesses
<kazinsal> neat. eventually I do plan on releasing the NOS I'm working on, but it'll be a while before I can figure out if it's viable as a business or not
<kazinsal> currently it's performant enough for my own uses but I have a lot of work to do to get it usable in the wilds
<moon-child> kc8apf: ah, y'all are running illumos?
<moon-child> cool. Didn't know anyone was still using that for prod
<vin> I am pursuing fulltime research right now. But the Oxide team line up differently seems like a fun bunch of people to work with.
<kc8apf> one of Oxide's components that is like more interesting to this crowd: https://github.com/oxidecomputer/propolis
<bslsk05> ​oxidecomputer/propolis - Rust-based userspace for illumos bhyve (7 forks/62 stargazers/MPL-2.0)
<vin> *definitely
<kazinsal> I also am confident that I live in the wrong country to work for you :P
<kc8apf> kazinsal: we've got no restrictions on location, only working hours that somewhat overlap with US
<kazinsal> there is a very large, very guarded border (and the eldritch construction zone that is I-5) between me and the bay area
<kazinsal> one of these days I will managed to drive to Seattle without stopping in a construction area in Everett
<kc8apf> Only half the team is in the bay area.
<kc8apf> lol. I'm actually nearish Everett
<kazinsal> Ha! lots of PNWers here
<kazinsal> I'm in the frozen northern wastes of Vancouver
<gog> no other icelanders here :(
<kc8apf> nice. I enjoy visiting B.C.
<gog> or american-icelanders to be accurate :p
<kazinsal> after the borders open and we've all been jabbed sufficiently we're definitely going to need to hold an #osdev PNW meetup
<j`ey> gog: i think me and froggy are the only UK ppl, since zid left
<moon-child> kazinsal: hey I'm in vancouver too
<moon-child> used to live near seattle though
<kazinsal> moon-child: wait, which vancouver
<kazinsal> (damn george and his multiple places being named after him)
<vin> Anyone from midwest?
<moon-child> kazinsal: canada
<kazinsal> oh cool
<kc8apf> I'm originally from NW Ohio ;)
<gog> j`ey: heat too i think
<kazinsal> didn't know there were multiple YVRers here
<j`ey> gog: hes Pt
<gog> oh ok
<gog> idk why zid left, we were just ribbing on him a little bit and he parted never to return
<junon> Define "midwest". Does Idaho count?
<kazinsal> can't even remember what *caused* zid to leave tbh
<moon-child> something similar happened in another channel I'm in. There were some harsh words on both sides, but it was not _that_ bad; and she left and hasn't been back since
<froggey> jiggawatts vs gigawatts
<kc8apf> junon: sorta? I mean, my coworker claims yes.
<kazinsal> idaho is in a quantum superposition of midwest and PNW
<junon> ^ yeah okay, that's my impression as well, though when we think of PNW we think oregon/washington almost exclusively
<vin> kc8apf: Depends who you ask.
<kazinsal> I think PNW eventually ended up expanding to cover northern california as well, which I'm okay with, because that implies that I'm geographically related to somewhere warm
<kazinsal> it's when people start including nevada in PNW that I start to wonder if they know what the word "pacific" means
<gog> nevada is also in an awkward superposition of southwest and california
<kc8apf> don't let any Nevadans hear that
<gog> i don't think i know any :p
<kazinsal> All the people I know who live in Nevada hate living in Nevada
<gog> wait no there is a woman i'm casually acquainted with that lives in vegas
<kazinsal> but for one reason or another they are all trapped in Nevada
zagto has quit [Quit: Konversation terminated!]
<junon> Accurate. I hear "I escaped vegas" a lot.
<gog> the only good things to come out of vegas are the killers and panic at the disco
<gog> and fear and loathing in las vegas
<kc8apf> I have a friend who is a Vegas native, moved to Sacramento for work, and wants to go back to Nevada
junon has quit [Remote host closed the connection]
<kazinsal> the buffet at the MGM grand is something that should be experienced at least once
<kazinsal> and at most twice
junon has joined #osdev
<junon> gog: had to re-read that a few times
<gog> lol
<gog> i guess i'd like to go once just to see if my wife's betting system for roulette actually works :p
<gog> although she prefers european style
<junon> how can you have a system for a game that is entirely luck? or am I misunderstanding how roulette works? (casino games have never really interested me)
<kazinsal> roulette has enough different odds in betting that you can theoretically come up with good potential risk-rewards
<gog> ^
<junon> really! interesting
<gog> there are like 6 different types of bets you can make
<kazinsal> yeah, you're not just guessing a number, but also properties of that number
<gog> column, row, cluster, color, even, odd
<gog> even/odd
<gog> two numbers nd one number
<junon> Ohh I see
<junon> so I suppose the more specific you are, the higher risk/reward
<kazinsal> yeah
<junon> I didn't know that, figured it was just "32 black" like in the movies
<kazinsal> betting on a specific colour is a roughly 50% chance of winning (a little less beacuse of the house edge)
<kazinsal> same with eg. betting on the lower half of the numbers or on even
<kazinsal> but since you can bet, say, even black, then you have one bet on even and one bet on black
<kazinsal> and if it's a 32 then it's even, but it's red
<kazinsal> so you get a payout on the even bet but lose the colour bet
<junon> so do you break even at that point?
<junon> Or just lose a lot less?
<gog> just slightly less than 50 because of 0 and 00
<gog> 0-only on european, both on american
<kazinsal> yeah, there's also the zero-pockets
<gog> that's why my wife prefers european lol
<kazinsal> so on american tables your odds of winning a colour bet are actually 1 : 1-1/18
<kazinsal> er, on european tables
<kazinsal> on american it's 1 : 1-1/9
<heat> gog: oy mate i'm from britain too innit bruv
<gog> yes
<gog> heat: chewsday
<kazinsal> the real test to see if someone's from britain is to gauge their interest in baked beans
<GeDaMo> Nah, it's Jaffa cakes :P
<kazinsal> and ask what they think of teenagers being able to buy plastic butter knives
<junon> makes sense
<junon> w.r.t. roulette, I have no opinion on plastic butter knives
jmpeax has joined #osdev
<heat> 99% of #osdev is north american and that's just a fact
<heat> and also always awake for some reason
<heat> sleep is a european thing
<junon> I'm from Idaho but live in Berlin, I can confirm this
<gog> wisconsin->reykjavik :p
<junon> play ja ja ding dong!!!
<gog> basically there are very few places that are open late and on weekends
<gog> mostly restaurants and bars, few shops
<gog> the nearest 24-hour grocery store is 3km away lol
<junon> btw I've successfully set up a CMake + Clang cross-compilation configuration for osdev and remember that the wiki article was more or less empty for this, would that be something worth beefing up?
<junon> I've not contributed to the wiki before so I wouldn't want to step on toes.
* junon is shy
<gog> can't hurt
<vin> gog: Oo I am in southern wisconsin currently. Clearly the midwest cold wasn't enough :p
<gog> i grew up west central
<gog> closer to minneapolis than eau claire
<heat> junon: cross compilation in general or for your own target?
<jimbzy> You're practically a Yooper.
<gog> wrong side of the state
<junon> heat: It's generic enough to be applicable to anything that would need to cross compile, namely the hello world kernel article and whatnot.
<junon> It's certainly not trivial CMake config but it's not complex either.
<jimbzy> Ohhhh I'm thinking of Duluth for some reason :p
<heat> junon, I also have a big OS-specific patch I've been thinking about doing a writeup on
sortie has quit [Remote host closed the connection]
<jimbzy> I've only been up there once, and that was enough :)
<heat> on LLVM/clang
<gog> that's still the wrong side of the state lol lol
<junon> heat: I have a repo link if you want to peek.
<gog> and duluth isn't even in wisconsin
<heat> junon, sure
<bslsk05> ​github.com: toolchains/llvm-project-12.0.0.patch at 013d88714fd9c9fe0c8859a16e0d0f7086cb4524 · heatd/toolchains · GitHub
<gog> yooper would be like north and east of green bay
<heat> I enable every sanitizer and everything
sortie has joined #osdev
<jimbzy> Ah I thought you said Minnesota hehehe
<gog> oh lol
<gog> duluth would be the "arrowhead" of minnesota
<junon> I'm not going to run sanitizers, I'm actually in the process of incorporating full-on C verification as part of the build step
<jimbzy> Yeah, that's up there by the UP.
<gog> yeah across a massive lake lol
<junon> I suppose they could be enabled but the verifiers are the main show
<jimbzy> Well, it's as close as you can get without crossing into Cheeseville hehe
thinkpol has quit [Remote host closed the connection]
thinkpol has joined #osdev
<heat> the only notable thing I haven't implemented yet was sanitizer_stoptheworld
<gog> _and_melt_with_you
<heat> so /technically/ ASAN and friends don't work just yet
<heat> the rest is there though
<jimbzy> My Family: "Hey, can I borrow your headphones so I can listen to this tabloid garbage on 11 without them?"
<bslsk05> ​git.sr.ht: ~qix/oro-kernel: CMakeLists.txt - sourcehut git
<junon> there's a bunch of cmake contrib stuff that isn't specifically related that's in another repo but yeah that's the gist of it. Can be simplified down quite a bit though.
gog has quit [Ping timeout: 244 seconds]
<heat> this has nothing to do with clang?
<junon> It does - there's a clang check at the beginning. My config enforces compilation with clang for certain reasons.
<junon> So the entire config assume clang.
<junon> assumes*
<junon> line 79
<kazinsal> I should eventually figure clang out
<heat> ah
<kazinsal> maybe also de-gmakeify my makefiles
<heat> i thought you were building it
<jimbzy> I've been saying that for several years now, kazinsal.
<heat> define figure clang out
<junon> Clang is a cross-compiler out of the box so there's no need to build it.
<junon> wayyyyy easier to reason about than gcc imo.
<heat> the big difference with clang is that you have --target= and then you specify the target you want
<heat> (and pray it was built in)
<jimbzy> The Gordian Knot is easier to reason about htan gcc, junon.
<klysm> is i686-elf often built in?
<heat> if you don't do --target it defaults to the host
<junon> klysm yes
<jimbzy> I still have no clue how it all works, but it does so I use it.
<junon> anything it supports is already built in
<heat> klysm: probably one of the *nix i686's
<junon> I don't think you can compile clang without support for certain targets. Certainly not the builds you get from official repos.
* jimbzy is the worst os developer ever.
<junon> They're all included.
<heat> yes you can
<junon> Oh okay, well there you go haha
<heat> I disable them all except linux/mac and my own
<junon> I hack on clang from time to time and have never seen the option for it, though the llvm clang config (well, the project structure as a whole) is anything but simple to understand.
<junon> sorry, llvm cmake config*
<junon> The community is very nice though, and always very helpful whenever you have to do something.
<klysm> also isn't the previous version of clang required in order to build clang?
<j`ey> klysm: you can build it with gcc too
<junon> you can build with clang or gcc.
<bslsk05> ​github.com: toolchains/llvm-project-12.0.0.patch at 013d88714fd9c9fe0c8859a16e0d0f7086cb4524 · heatd/toolchains · GitHub
<heat> klysm, no
<heat> it's recommended that you use clang + lld to build it just because it's faster, not needed
<junon> j`ey: interesting, thanks
<klysm> heat, it seems I came across something like that when attempting to install guix the first time
<moon-child> heat: amusingly, gcc and clang are each faster when built with themselves than when built with the other
<j`ey> i think they guarantee the previous version worked
<junon> that could be it
<junon> it would make sense at least
<heat> moon-child: really?
<heat> last time I tried to build gcc with clang it didn't even work
<jimbzy> Hey j`ey! How's things going with your project?
<jimbzy> What's the sitrep?
<heat> h`ey j`ey
<j`ey> jimbzy: well uh, not really going currently
<j`ey> jimbzy: i want to work on a hypervisor a little
<bslsk05> ​wiki.alopex.li: Wiki - LanguageCompilationSpeed
<jimbzy> Jobbing getting in the way?
<j`ey> jimbzy: and just doing other hobbies
<jimbzy> I actually applied for a temporary position with the city here for the summer doing road maintenance. I need to replenish my vitamin D.
<jimbzy> I know that story, buddy. I've been messing around with the Godot Game Engine again for fun.
<j`ey> and replrenish $$$ :P
<jimbzy> Yeah, that too.
<jimbzy> They pay morons like me pretty well to sweat our butts off all day ;)
<j`ey> lol
<j`ey> Im hoping I can re-use most, if not all, of the MMU code and the context switching code for my hypervisor
<jimbzy> That'd be sweet.
<j`ey> right now it boots linux, but since I dont enable MMU, Linux can overwite my hypervisor
<jimbzy> I didn't know that.
<heat> an hypervisor that can be overwritten is just a bootloader :P
<j`ey> heat: :D
<j`ey> ok, i wrote a bootloader, fine :P
<jimbzy> Whenever I read 'hypervisor' I think of my son wearing one of my golf hats. ;p
<j`ey> lol
<kazinsal> "VxRail as Code: Empowering Customers with Cloud and IT Automation" christ these marketing seminars have the most buzzwordy fuckin names
<kazinsal> I would never be a great sales guy because I care about what things *mean*
<renopt> the serenityOS dude quit his day job 👀
<renopt> respect
<kazinsal> yeah, that's either an impressive level of dedication or a hell of a savings account
<heat> kazinsal, lots of donations
<kazinsal> damn, didn't know there was a market for that
<heat> me neither
<heat> I think the videos got him really popular
<j`ey> 633£ a month on patreon and 150 github sponsors
<heat> yeah
<j`ey> so uh, probably not a massive salary
<kazinsal> yeah that'll cover a whole two thirds of my rent
lleo has quit [Ping timeout: 248 seconds]
<heat> he did hit a goldmine of popularity though
<j`ey> but he works on his OS, so that makes up for it :P
<kazinsal> reminds me I gotta check to see what my credit card bill is this month
* kazinsal braces
<heat> serenity OS has ~106x more stars than sortix
<heat> and more than redox
<heat> holy crap he defeated rust fanboys
nyarlko has quit [Quit: WeeChat 3.1]
<j`ey> lol
<kazinsal> kernel features: survived the rust evangelism strike force
<j`ey> serenityOS definitely has a lot of focus on UI type things
<j`ey> which I think is what draws people in
<froggey> people love shiny UIs
<j`ey> i do like serenity's windows d8 vibe
<j`ey> 98
<sortie> heat: Serenity doesn't have its own IRC network :)
<geist2> kazinsal: heh not a day goes by someone doesn't ask me or someone on the team why on earth zircon isn't written in rust
<geist2> as if there's an implicit assumptoin that of course you'd write it in rust
<froggey> well, why isn't it?
<geist2> exactly.
<j`ey> at least some of fuschia is *_*
<sortie> “Frequently Asked Questions about SerenityOS” “Where are the ISO images? There are no ISO images. This project does not cater to non-technical users.” k
<kazinsal> shoulda named it grognardOS
<j`ey> sortie: yeah, that was a bit sad
<geist2> it's that kinda implicit 'obviously rust is superior so why aren't you doing <your thing> in rust' high and mighty that irks me
<kazinsal> like, christ, on a bike duder even openbsd provides an installation path that is so simple even my mother could work her way through it
Skyz has joined #osdev
<maurer> I mean, until fairly recently, "I want to Box this, but please return an error code if you don't have the memory for it" was not an API.
<kazinsal> there is no excuse for *any* open sores OS project to not have an ISO
<maurer> (and even now it's unstable)
<sortie> geist2: Right, without any effort to understand the constraints the project has
<maurer> I definitely believe in Rust for kernel development, but some things still need to be done.
<heat> all I want in life are fuchsia images/ISOs
<j`ey> maurer: I agree
<acidx> kazinsal: it doesn't make sense for all of them, come on. lots of embedded OSes out there where ISOs wouldn't make sense.
<acidx> kazinsal: (also, all the "library OS" type things.)
<kazinsal> okay but you can get an image of some sort for those
<geist2> heat: we can't publish those basically
<heat> bandwidth is cheap, having my crappy laptop hack at a huge piece of software with 8 low powered CPUs is not
<geist2> hence why you wont see any official images. it's the downside of being a Big Company
<j`ey> kazinsal: yeah, it's really silly. if you just want to play with it.. you dont want to spend hours getting a toolchain etc
<kazinsal> as far as I can tell serenityOS is lawyer-unencumbered
<heat> geist2: :(
<geist2> there's some sort of implicit warranty or legalese if you actually publish an dev image, i think. not insurmountable, but not worth it right now
<kazinsal> so while it's within the serenityOS's guy's right to not publish prebuilt images, he's kind of a dick for not doing so
<geist2> if someone *else* does it i dont think there's an issue
<geist2> but honestly i may be talking out my ass there, but i think that's just a thing
<maurer> On the other hand, I'm unclear what you'd *do* with a fuchsia image if you aren't customizing it
<geist2> yah you can boot it and piddle with. but the main advantage is buiding and piddling
<froggey> tbh publishing prebuilt images is a bunch of effort and it's understandable not to if you're a small/single person dev team
<geist2> since it's not and end-user system in the tree
<froggey> that faq answer is uh dubious though
<j`ey> froggey: yeah, but the qu..
<j`ey> yeah
Skyz has quit [Quit: Skyz]
<kazinsal> yeah
<heat> froggey: I publish all my ISOs with CI
<heat> and toolchains
<geist2> side note, SkyZ has apparently found us
<heat> AH
<kazinsal> +b
<j`ey> geist2: i assumed he would, he PM'd me right before joining
<heat> why do I not get spammers? :(
<j`ey> heat: I wonder if the serenityOS CI already makes an ISO
<j`ey> yeah, they do some tests 'on target', so they probably have some ISOs they could publish :/
<geist2> i would have no issue publishing an iso of my project or whatnot if i had anything to show off
<geist2> but like i said, i think if a *company* publishes and iso there's some implied warranty, etc
Skyz has joined #osdev
<geist2> maurer: that being said #fuchsia moved to oftc and i'd be happy to blab about it there
<geist2> i'm trying to be a bit more social media savvy and actually talk about the kernel and whatnot now that we're more public
<raggi> heat: you can make an imahe, just build then run `fx make-fuchsia-vol` against an image file of whatever size you want
alexander has quit [Ping timeout: 264 seconds]
<sortie> -void FreeNode(struct Node* node)
<sortie> +void LiberaChat(struct Node* node)
<sortie> Perhaps not what I intended
<Oli> 0
GeDaMo has quit [Quit: Leaving.]
Skyz has quit [Quit: Skyz]
<heat> raggi: i know, but it takes lots of time here on my crappy laptop :(
<j`ey> yeah, i'd like to play around with it too, but i dont want to build it
<heat> it's the role reason why I can't try out the workstation product
<heat> farthest I've built was core.x64 and that was painful
<j`ey> "At the time of writing, I’m receiving a bit over $2000 in donations per month" serenity
<heat> O_O
<geist2> heat: yeah i really wish it weren't so.
<junon> geist2: you work on fu???a? (I can never spell it)
<geist2> yah
* junon will have to remember to keep my anti-google remarks internalized :D
<kazinsal> I should download and build it
<kazinsal> see how long it takes on WSL1, I/O speed be damned
<geist2> kazinsal: forever
<kazinsal> I would upgrade to WSL2 but I tried that and it absolutely *ruined* VirtualBox performance
<kazinsal> because, yes, VirtualBox's hypervisor latency can get *worse*
<geist2> same. i had to make a binary choice there and decided to just remove all WSLs
<junon> plus wsl2 + ssds apparently result in corruption
<heat> that sounds like bullshit
<geist2> yep. hyperv and virtualbox and vmware do not work well together
<junon> I dare not use it. WSL1 seems to work for me for the most part so I haven't felt the need to switch.
<geist2> they're *supposed* to but experience is it's not great
<kazinsal> I'm considering just running a dumb lightweight linux VM since sshfs and vscode apparently work together really well now
<geist2> so protip: dont reboot the switch your NFS server is sitting on while running VM disk images off another box on it
<kazinsal> oh man, yeah, I did that once
<geist2> ended up with a disconnected nfs connection which then resulted in all the VMs suddenly seeing RO disk images
<moon-child> geist2: electric boogaloo?
<geist2> naw, i just had applied a unifi firmware update to my main switch
<kazinsal> "where did all these alarms from the netapp come fro-- ah shit."
<geist2> i mean what i *should* do is maintain a 10gbe network for the NFS box and put critical servers on a back network there
<geist2> which i might do some day
<kazinsal> then you hear the WHIIIIRRRRRRRRRRRR of a big core switch rebooting
<kazinsal> the fans in those 1U 40GbE switches are *loud* when the box boots up
<geist2> yah usually it's just a blip but since i'm using ehernet bonding on the nfs box it probably forgot that state and took a while to reestablish
<kazinsal> before the PWM controller is on and it's just shoving out "GO FULL TILT" until the POST is done
<geist2> yah you should hear this ARM workstation when it boots. takes about 3 minutes to post
<geist2> and the first 1.5m is all the fans running full tilt, and i think backwards
<kazinsal> oh wow, that's a long POST time
<geist2> it's like a loud vacuum cleaner
<kazinsal> some server grade stuff
<geist2> yah, it's baiscally a server mobo in a workstation case
<kazinsal> gotcha, gotcha
<geist2> it's doing stuff the entire 3 mintes, can watch te firmware on the serial port
<geist2> the first minute or two is it training the 16 DIMMs
<geist2> each gets about 8-10 seconds
<geist2> all this time the firmware hasn't been started on the PWMs...
tricklynch has quit [Ping timeout: 272 seconds]
tricklynch has joined #osdev
<geist> question: does anyone actually use Fedora? I have a copy of it in one of my VMs and it looks pretty slick
<geist> but it's just such a different uiverse from the debian based distros i'm used to
<kazinsal> not since the Fedora Core era
<kazinsal> I think the biggest difference vs eg. Ubuntu is that Fedora doesn't include any blobs/proprietary drivers
<acidx> geist: was my daily driver until ~1 year go. pretty solid
<kazinsal> so if you need an nvidia thing you might be hosed unless nouveau/whatever is good now
<geist2> ah interesting
<geist2> not that i'm interested in changing, just curious
<kazinsal> it's a small thing but imo Fedora's installer is loads better
<geist2> i noticed, for example, that the software updater likes to reboot
<geist2> though it probably doesn't need to strictly speaking
<kazinsal> Ubuntu's graphical installer has always seemed to be in some way broken for me for fifteen friggin years
<geist2> but i guess it's not necessarily a *bad* thing if the users can tolerate it
<geist2> reboot, make sure all the libs are using the current version, etc
jmpeax has quit [Quit: leaving]
<kazinsal> iirc Fedora doesn't have an LTS either
<geist> (sorry for the geist/geist2 stuff, giving irccloud a fair try here for a bit and see if i want to flip it over to my primary irc)
<kazinsal> presumably because they want you to use <insert name of the week for the next generation of CentOS>
<kc8apf> geist: Ampere?
<geist> kc8apf: it's a cavium thunderx2
<kc8apf> ah, those are wonky
<geist> basically one of the dual socket boards from supermicro
<geist> in a workstation case, which is really mostly a like 3U server case on its side
<geist> kc8apf: yah though totally great linux machine. what was your wonky experience?
<geist> the individual cores are probably already outclassed by a new neoverse N1 or N2, but there are a lot of them and they're the only SMT ARM cores, and one of the few SMT4 cores anywhere
<geist> so that's kinda interesting
<kazinsal> actually thinking about it I need to ask some of the Cisco folks what the plan is for UCOS 14.0 -- last I heard they were considering moving up to CentOS 8 but that's clearly not going to happen
<kc8apf> Less of a specific thing and more it just doesn't quite behave like anything else. ThunderX2 came around as EFI on ARM was starting to be a thing and Cavium did what they needed to to make it work
<geist> kc8apf: yah thats true
vdamewood has joined #osdev
<geist> it does have a UEFI based award bios i think, but it seems a bit fiddly
<kc8apf> college friend of mine works on compilers at Cavium/Marvell. He knew the writing was on the wall for ThunderX3
<geist> yah that makes me totally sad
<geist> but i half expected the whole thing to be shut down the moment marvell got ahold of it
<geist> we had a good relationship witht he cavium engineering folks. seemed like good people
<geist> or seems. i dunno precisely what's going on over there right now except what's publically known, which isn't a lot
<johnjay> the qemu monitor actually lets you save and load vm states from qcow2 files
<geist> johnjay: yep! i was looking into that the other day
<johnjay> this feeling of satisfaction.... it's so amazing
<geist> unclear if you have multiple qcow2s which one it picks to save the VM memory image
<geist> i guess the first one?
<geist> and how it's stored, seems to be basically an unnamed section of the qcow2 alongside the snapshot of the existing disk image
<johnjay> dunno. maybe the one it booted from?
<geist> yah, possibly
<heat> what happens with the TSC I wonder?
<kazinsal> that does remind me I need to figure out qemu networking
<geist> one of the qcows definitely grows a bunch of data, approximately the size of a compressed memory image
<kc8apf> Octeon seems to have stagnated but then they come out with their new SSD controller which is all fancy
<kazinsal> and really just get back into using qemu in general
<johnjay> kazinsal: that's something i've wanted to do since the first time i forwarded a port on it
<geist> generally either i used user space networking for simple qemus or i create a tap for each one and bridge it with a host nic
<kc8apf> Feels like that whole generation of ARM server CPU vendors (Cavium/Marvell/Qualcomm) just gave up
<kazinsal> I need to basically have a 3-VM setup where one of them connects to the other two as well as the host nic
<kazinsal> so basically A <-> B <-> C, and also B <-> (real world)
* heat can't bridge because he's on wireless
<geist> kc8apf: yah the official word is they're focusing on vertical hyperscalars, but seems like most of the verital hyperscalars are just building their own cores, probably
<geist> so kinda pinched in the middle there
<kazinsal> this lets me test A <-> C with B as the router, as well as A <-> (reality) and C <-> (reality) with B as the router
<geist> so i dunno if that's all code for 'give up and blame the market'
<geist> whereas i think ARM in the cloud world seems to be doing okay, it may go the way of apple and all big cloud/etc vendors just build their own silicon
<kc8apf> hyperscalers all tried to avoid building their own CPUs and all the vendors kept screwing up so badly the hyperscalers just bit the bullet and built cpu teams.
<geist> which i guess i the ARM world isnt really new per se, since we've been dealing with ARM SOCs from tons of vendors for consumer hardware for ever
<kc8apf> There was a year or two where I was at Google looking at 3 different ARM processors and Microsoft was looking at the same parts. They were kinda promising until the vendors decided it wasn't worth it
<geist> yah then the question in the hyperscalar space is do they make their own cores or license from ARM. in this case ARM is pushing hard by building a ton of server core designs
<geist> so we'll see
<geist> side note: they announced a pile of new cores last week, and i found manuals for most of them
<geist> cortex-x2, neoverse n2, v1, cortex-a510, cortex-a710, etc
<kazinsal> that's something I love about the arm space and wish I had a reason to get into it
<kazinsal> suddenly, new cores!
<kazinsal> no big fancy gamer announcements or anything
<kazinsal> just, poof, here you go, play with these
<geist> looks like their way of avoiding running out of numbers in te cortex-a space is to switch to a 3 digit system for the v9 cores
<j`ey> geist: arm v9!
<heat> arm gaming where?
<kc8apf> Cortex-X2 seems to be pushing toward FP performance. Ampere is moving away from ARM's cores to focus on integer performance.
<geist> so they're starting over: cortex-a5xx and cortex-a7xx
<j`ey> geist: also new mali GPUs! :D
<geist> yah since v9 mandates SVE you'll start seeing more and more of these large vector units for better or worse
<kc8apf> HiSilicon has some interesting parts but they're impossible to get in the US
<heat> shower question: does routing-specific software frequently use SIMD?
<kc8apf> network routing?
<heat> yes
<geist> kazinsal: yah and even more boring if you can see the sausage made in the arm partner meetings ad whatnot
<kazinsal> I guess maybe if a SIMD copy path is most efficient on a specific platform then it might but
<geist> ARM plays a long game with all of this, which makes sense because it takes like 5 years to design a core
<heat> being able to keep a single ipv6 address in a SIMD register has to have some obvious benefits no?
<geist> so if you are privy to the roadmap it's all a matter of waiting years for things to show up
<kc8apf> not that I've seen. RIB->FIB is the computationally expensive bit
<heat> or having going through 4 entries in a routing table in parallel
<geist> so a lot of this is like 'ARM Finally mentioned that? yay now i can tal about it'
<kazinsal> geist: yeah. seems you get more actual computational bang for your buck, less marketing fanfare and more "here's this quarter's new tech, enjoy"
<geist> yah so it's nice to see what things will lookl ike 5 years from now but it's all this huge pipeline of tech
<geist> i think the GPU folks especially
<kc8apf> RIB->FIB isn't typically on the data path though so it doesn't get a huge amount of attention. Very unusual to be doing high rates of route updates.
<j`ey> also huge pipelines in the cores :P
<geist> but then it's also frustrating because low end vendors still punch out SOCs with 10 year old tech, so you have essentially this 10-15 year window of ARM tech that you have to think about or directly deal with
<kc8apf> the data path problem is usually solved with TCAMs
<geist> is also why i'm generally so gung ho about ditching old ARM cores and moving on with life
gruetzkopf has joined #osdev
gruetzkopf has quit [Changing host]
<geist> the next big hump for me personally is getting off of armv8.0 cores and onto at least v8.1
<kazinsal> TCAM and ASIC are the magic four-letter acronyms for "how do we make routing faster"
<geist> but since socs still ship with cortex-a53 and -a72/-a73, nop. lots of v8.0 cores
<kazinsal> but they're also hardware jumps so
* heat googles TCAM
<kazinsal> geist: yeah, seems to be the ARM equivalent to people still sitting on Sandy Bridge going "it's fine, it still clocks up to 4.5 GHz well enough"
<geist> yah basically
<kazinsal> like sure but it's oooooooold
<heat> what makes this faster?
<geist> or nehalem
<kazinsal> heat: your routing lookup is now just "throw the address and netmask at the TCAM and the forwarding information comes back"
<geist> v8.1 from an OS point of view brings new atomics (so you can rewrite all your spinlocs, etc) and stuff like A and D pagetable bits (though i think that's technically not an 8.1 thing) and stuff like PAN and whatnot
<geist> its the new atomics that are a big thing, becaus now you need to choose to rewrite your spinlocks or patch or whatnot
<geist> and it tends to be a big codegen switch
<kc8apf> kazinsal: not even your netmask. The T part of TCAM means you get don't care bits in the entries
<kazinsal> heat: instead of a binary lookup your options for each bit are 0, 1, or X
<kazinsal> where X is the "don't care", or a 0 in the netmask
<heat> yeh
<kazinsal> kc8apf: yeah
<geist> from quick glance v9 doesn't look like it's a huge deal breaker re: kernel forward compatbility. i *think* a v8 core would boot on it generally speaking without much trouble if any
<kazinsal> basically you're implementing the wildcard bits as a third ternary state
<geist> i think the main reason for a v9 snapshot is the mandating of SVE, i suspect
<geist> otherwise v9 is IIRC basically just v8.5
<kc8apf> TCAMs are just doing a 32-bit (v4) or 128-bit (v6) mask-cmp but doing it in parallel for every entry in the memory simultaneously
<kc8apf> build a TCAM large enough hold the full Internet routing table and you get single-cycle lookups for any address
<kazinsal> yep
<kazinsal> if you can't afford TCAM though your next best bet is a 256-way trie
<kazinsal> this will save you enormously on IPv4 but gets memory expensive in v6 land
<kazinsal> the good news is at that point you care enough to afford TCAM
Mikaku has quit [Read error: Connection reset by peer]
Mikaku has joined #osdev
jaevanko has joined #osdev
amanita has joined #osdev
Vercas has quit [Quit: Ping timeout (120 seconds)]
Vercas has joined #osdev
jaevanko has quit [Client Quit]
transistor has joined #osdev
transistor has quit [Client Quit]
transistor has joined #osdev
Arthuria has quit [Ping timeout: 265 seconds]
tricklynch has quit [Ping timeout: 264 seconds]
tricklynch has joined #osdev
tricklynch has quit [Read error: Connection reset by peer]
tricklynch has joined #osdev
transistor has quit [Quit: leaving]
transistor has joined #osdev
bleb has quit [Ping timeout: 272 seconds]
chartreuse has joined #osdev
RyanW has joined #osdev
SpikeHeron is now known as SweetLeaf
<doug16k> wow. if I do `objdump --dwarf kernel-generic >/dev/null` (using system objdump) I get 755 warnings like "objdump: Warning: There is a hole [0x10619 - 0x1061d] in .debug_loc section.", but if I use x86_64-dgos-objdump, no warnings.
<doug16k> try your cross objdump before you start chasing system objdump warnings
<geist> oh reminds me, i should try to build gcc 11 and see what happens
gog has joined #osdev
* gog meows
<heat> earth will explode
<heat> no one shall build gcc 11.0
* gog builds gcc 11
<heat> build systems are horrible
simpl_e has quit [Remote host closed the connection]
simpl_e has joined #osdev
<doug16k> haha gcc 11 requires at least c++11 compiler, c++98 no good
<doug16k> then gcc 11 is c++11
RyanW has quit [Ping timeout: 252 seconds]
amanita has quit [Ping timeout: 272 seconds]
<doug16k> building it too
<doug16k> hunks failed :(
RyanW has joined #osdev
<heat> hot
* vdamewood gives gog a fishy.
* gog chomps
<gog> i didn't even know that standard C had standard attributes
<gog> the square bracket kind like C++ got
<heat> that's new
<heat> C23 I think
<gog> ok i thought so
<gog> neat
<doug16k> the way config.sub just blats out rows of names makes it hard to patch
<doug16k> I have a mile long context, 7 lines. not even similar to 11 one