<Vercas>
Is the interrupt vector displayed by qemu in decimal or hex?
iorem has joined #osdev
<nur>
hex
<Vercas>
So you're getting an IRQ from the PIC?
<nur>
no I triggered it manually
<Vercas>
Hm.
<klange>
oh hey helps if i initialize my list of raw sockets before trying to reference it in the driver...
<geist>
Vercas: nein.
<Vercas>
geist, then someone else is playing with your name.
<klange>
okay stage 2 network stack prototype is running on the thinkpad, manages to dhcp over the socket interface on startup, and is happily spamming debug messages about receiving ARP packets and other stuff from the network
Vercas7 has joined #osdev
<Vercas7>
nur, did you get my previous 2 messages? I've timed out on IRC...
<Vercas>
nur, not sure what's going on. Popping ds fails with a #GP.
Vercas has quit [Remote host closed the connection]
<Vercas>
I don't know enough about the workings of 32-bit x86 kernels to help you here, nur.
<nur>
nope
Vercas7 is now known as Vercas
<nur>
ah
<Vercas>
WTF?
<Vercas>
My client automatically changed my nick and re-sent the failed messages.
<Vercas>
What manner of sorcery is this?
<nur>
"eventual consistency"?
<klange>
demonry of some sort
<Vercas>
I need to buy the devs a beer...
<nur>
it isn't just popping DS fails with a GP, it succeeds with a different inner function and that's driving me nuts
<Vercas>
I'd really get rid of that stack alignment thing if I were you.
<nur>
why?
<Vercas>
You absolutely don't need it unless you plan on using aligned SIMD instructions on your stack data.
<geist>
Vercas: not a good idea. the compiler may make assumptions based on it
<geist>
specifically around things like varargs and whatnot
<Vercas>
Then align the stack just before the `call`.
<Vercas>
Not in the middle of the data on the stack.
<geist>
i thought that was the point? align the stack in the exceptino code and then the compiler takes it from there
<Vercas>
Also note that you need to align it to 16N + 12 bytes.
<geist>
x86-64 automatically does it
<Vercas>
geist, that's not what he is doing.
<geist>
ah
<nur>
the result is the same though
<Vercas>
It's the first thing he does in the handler.
<geist>
ah yeah, either way works really, but usually it's done after dumping all the regs on the stack
<Vercas>
No lmao.
<geist>
that way you get a consistent stack frame up through and including the stuff the hardware dumped
<Vercas>
Either way doesn't work.
<geist>
wait, what are we talking about here?
<Vercas>
You want to have the stack data in one place.
<Vercas>
So you can access it.
<nur>
if we align afterwards you get some empty space on top of the stack right?
<Vercas>
The interrupt frame + saved registers and all that.
<geist>
well, 'bottom' but yes, after the frame
<nur>
and we want the SP to point to the first element of the struct
<nur>
not some alignment space
<geist>
sure, but you can't always get what you want
<Vercas>
nur, not necessarily the stack pointer, but you want to have a pointer to it.
<geist>
yuo can push te old pre-aligned sp to the first arg slot
<nur>
and pass the pointer in?
<geist>
the whole trick of having the iframe look like a structure pushed by val is cute, but unnecessary
<Vercas>
Also keep in mind stacks grow *down*. So pushing subtracts from the SP, popping adds to it.
<nur>
yes which is why I align by subtracting
<geist>
that being said, i think for x86-32 you might not need to do any of this alignment stuff. x86-64 definitely requires 16 byte alignment, but then the hardware pre-aligns for you on exception entry
<Vercas>
So to align the stack properly for a call (on 32-bit x86) you subtract 4, AND with 0xFFFFFFF0, then add 4.
<geist>
but x86-32 .... might want to double check. i suspect it may only need 4 byte alignment in the ABI
<Vercas>
geist, I too think 4-byte is all that is needed.
<nur>
but none of that should be affecting what's happening here
<geist>
yah i've looked in some of my old code and i definitely didn't do it, but then i may have been wrong
<geist>
and i did the 'pass iframe byval' thing
<Vercas>
nur, one possible explanation is that you are smashing your GDT somehow.
<klange>
To my knowledge, x86 only requires stack alignment for sse operations, and it's entirely ABIs that require general stack alignment.
<geist>
klange: right, but to be precise it's on top of that different between x86-32 and x86-64 SVR4 abis
<bslsk05>
en.wikipedia.org: x86 calling conventions - Wikipedia
gog has quit [Ping timeout: 258 seconds]
gog has joined #osdev
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
mingdao has joined #osdev
Arthuria has quit [Ping timeout: 258 seconds]
<doug16k>
you need alignment even more on 32 bit. there's a 50% chance of fluking 64 bit stack to be aligned, but only 25% chance of fluking a 32 bit one
<doug16k>
codegen assumes it is aligned just as much as 64 bit does
<doug16k>
and the probably is way more likely to show up on 32 bit. the compiler is frequently using sse as a wide store, so it will crash sooner in 32 bit than 64 with misaligned stack
<doug16k>
but that's user code that has autovectorizing happening
dutch has quit [Quit: WeeChat 3.1]
<doug16k>
does mips64el mean endian little?
<geist>
yes
dutch has joined #osdev
mathway has quit [Ping timeout: 252 seconds]
nyah has quit [Ping timeout: 264 seconds]
<doug16k>
it's about 60,000 page faults per second or way more, when building gcc
<doug16k>
500k/s sometimes
<doug16k>
peaks to 1.5M/s
<doug16k>
no swapfile even exists
<doug16k>
all demand faults
<doug16k>
neat watching branch and instruction counts. it's around 5 instructions per branch, most of the time
<doug16k>
I guess the short loops often loop a very large number of times and skew the average
<meisaka>
how do you get branch and instruction counts?
<doug16k>
sudo perf stat -I1000
<doug16k>
might need sudo apt install linux-tools-$(uname -r)
<doug16k>
if you want more you can go as much as: sudo perf stat -d -d -d -I1000
srjek has quit [Quit: Leaving]
<doug16k>
also see this if you haven't seen how awesome perf is before: sudo perf top
<doug16k>
let's say you want to measure branch mispredicts across whole machihe: sudo perf top -e branch-misses
<doug16k>
or give a -p or use it to launch something to be measured
<doug16k>
to see what you can measure: sudo perf list
isaacwoods has quit [Quit: WeeChat 3.1]
<doug16k>
sudo matters on that
<doug16k>
without sudo you get lowly things to measure
<doug16k>
you might be able to dig out some neat counter like read-for-ownership counts that brought a line from one core to another
srjek has joined #osdev
<doug16k>
meisaka, I have perf top in my kernel btw
<doug16k>
you can load a kernel module that provides a repl where you can start a perf top realtime hw profile display
<doug16k>
connected to over serial
<doug16k>
I used it to do some optimizations
<doug16k>
it's not the actual perf top, just a subset of all the stuff, mostly focusing on the hw perf counter "top" display
<doug16k>
uses NMI overflows to measure everything, no matter what, spinlocks with interrupts disabled and all
gog has quit [Quit: byee]
<doug16k>
the trick is to program a counter close to overflowing and get NMI samples of occurrences of that event. so to make it skip 999 mispredicts and give next one, you would put -1000 in the counter
<doug16k>
you can get interrupt on overflow
<meisaka>
how often does it take samples?
<doug16k>
as often as it overflows. the code dynamically adjusts the counter value to get about 400+/s
<doug16k>
beyond 400/s the quality doesn't go up much
<doug16k>
it can spike though
<doug16k>
it's not by time
<doug16k>
if you do cycles, it is
<meisaka>
I see
<doug16k>
if you did, say, branch mispredict, the rate fluctuates
<doug16k>
same with cache misses, you get flurries of them
<doug16k>
so you have a bit of a servomechanism chasing the right divisor to use
<doug16k>
it's all statistical. any randomness in the sampling is good
<doug16k>
I deliberately jitter the divisor over a range to make it not fall into a pattern and keep blaming one thing
<bslsk05>
github.com: dgos/symbol_server.cc at master · doug65536/dgos · GitHub
<bslsk05>
github.com: dgos/perf.cc at master · doug65536/dgos · GitHub
<doug16k>
perf.cc(448) is what runs a lot of times to prepare for next sample
<doug16k>
561 is it getting an instruction pointer sample and putting it into the buffering system that dumps them into a ring and when full, update master count list in one burst
<doug16k>
that part has to be super fast
<doug16k>
so it doesn't care about file/line until it has a batch of instruction pointers, then does a flurry of lookups to update line counts, each full buffer
<doug16k>
so it can hit the lookup avl tree in the cache for many lookups
<doug16k>
fun thing about this profiler, it measures itself when it is running, so you can optimize it away and make it not come up in top profile stuff :D
<doug16k>
that's how I know that batching was needed. it disappeared from profile one I was doing it in batches
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
bsdbandit01 has joined #osdev
* vancz
warily ponders going down the operating systems rabbit hole
<geist>
yay do it
<moon-child>
you do not choose the operating system; the operating system chooses you
<bslsk05>
pages.cs.wisc.edu: Operating Systems: Three Easy Pieces
<gorgonical>
you'll get bonus points if you write it in forth, vancz
<moon-child>
can't vouch for either personally, though
mahmutov_ has quit [Ping timeout: 258 seconds]
<vancz>
gorgonical: Im a failing bachelors student and I have that issue anyway. I had a good sleep week two weeks ago and I couldnt sleep normally since :I
<vancz>
the thing is anything cool is going to be some weird exotic shit and im noob for that haha
<vancz>
gorgonical: forth seems neat i should learn forth :P
<gorgonical>
forth is very interesting to learn because of how simple it is. I don't know that I could ever program productively in it, but it's like lisp, it makes you smarter to learn how to use it
<vancz>
mainly because jitter seems to have taken some inspiration for its compilation/jit/interpretation strategy from gforth
<bslsk05>
en.wikipedia.org: Partial evaluation - Wikipedia
<vancz>
i always thought the idea of futamura projections is super cool
bsdbandit01 has quit [Read error: Connection reset by peer]
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
<vancz>
If I start writing an OS you think they'll waive any of my courses? :P
<vancz>
problem is most of it is probably stuff i should learn
<vancz>
assuming the courses are any good
<doug16k>
no harm giving yourself exercises if you have nothing better to do, makes the course work easier later
<doug16k>
my whole OS project is an exercise I gave myself :P
<doug16k>
it's a tree of exercises that all branch out into different areas
<doug16k>
node close to root might say "make a gui", way down deep node is "make it write 8 pixels per store with avx if hardware supports"
<geist>
yep
buffet8 has joined #osdev
livinskull_ has joined #osdev
dormito10 has joined #osdev
vin1 has joined #osdev
DutchIngraham has joined #osdev
transistor has quit [Killed (strontium.libera.chat (Nickname regained by services))]
transistor has joined #osdev
dutch has quit [*.net *.split]
craigo has quit [*.net *.split]
dormito has quit [*.net *.split]
vin has quit [*.net *.split]
livinskull has quit [*.net *.split]
buffet has quit [*.net *.split]
buffet8 is now known as buffet
<gorgonical>
Anyone got tips on building a cross compiler for aarch64? I'm getting conflicting suggestions on how to do this.
<gorgonical>
Can't just apt install since not using debian. Get a pthread error when building libgcc, but building glibc doesn't work either. Are there reliable tutorials? Does the one on the wiki work?
<doug16k>
gorgonical, use geists script
<doug16k>
press a button, get coffee
<gorgonical>
oh man that's what i was looking for lol
<gorgonical>
I've been farting around with this for like two hours now
<bslsk05>
github.com: lk-overlay/default.nix at master · librerpi/lk-overlay · GitHub
<clever>
doug16k: just run `nix-shell -A shell`, and you get arm32, arm64, x86-32, vpu, risc-32, and risc-64
chin123 has quit [Remote host closed the connection]
chin123 has joined #osdev
<doug16k>
yeah my rom script has ../src/configure --autopilot that automatically makes the toolchain and builds for x86_64 i386 aarch64 riscv64 riscv32 alpha mips64el mipsel sh4 arm sparc64 hppa ppc ppc64 xtensa
<doug16k>
that is every architecture that can handle secondary-vga
<vancz>
Ok guys we know your "toolchains" are big :pp
<doug16k>
oh I only actually handle 4 of them so far
graphitemaster has joined #osdev
<doug16k>
it should be a small enough job to support them all though
<doug16k>
all I have to write is a memcpy and a memset in assembly startup, rest is compiled
MarchHare has quit [Remote host closed the connection]
<doug16k>
and do whatever you'd do to trap smp APs if any, and idle them
<doug16k>
maybe solve some minor puzzles to reach stuff or get bootstrapped
<doug16k>
whole point of this project is to stress my multi-arch skills, so that's why so many
<doug16k>
it's fun to see what weird state you start in at power up on each arch, too
<doug16k>
first hand, not hypothetical
<doug16k>
it's amusing to put a breakpoint on the first instruction executed. it has executed zero instructions when it hits the first breakpoint :P
<doug16k>
first thing it does is sto
<doug16k>
p
Vercas has quit [Remote host closed the connection]
Vercas has joined #osdev
livinskull_ has quit [Quit: 418 I'm a teapot]
livinskull has joined #osdev
PapaFrog has quit [Ping timeout: 272 seconds]
vai has quit [Ping timeout: 268 seconds]
radens has quit [Quit: Connection closed for inactivity]
ajaymt has joined #osdev
ajaymt has left #osdev [#osdev]
srjek has quit [Ping timeout: 245 seconds]
<geist>
vancz: he likes talking about his toolchain for sure
<moon-child>
tinyyycc
<moon-child>
ok, the debuginfo is garbage. But cross compiler in seconds is hard to beat
PapaFrog has joined #osdev
EtherNet has joined #osdev
EtherNet has quit [Changing host]
matt|home has joined #osdev
riposte has quit [Ping timeout: 272 seconds]
vdamewood has joined #osdev
kanzure has quit [Ping timeout: 252 seconds]
kanzure has joined #osdev
sortie has joined #osdev
Sos has joined #osdev
mctpyt has quit [Ping timeout: 245 seconds]
mctpyt has joined #osdev
riposte has joined #osdev
LostFrog has joined #osdev
PapaFrog has quit [Ping timeout: 244 seconds]
Arthuria has joined #osdev
GeDaMo has joined #osdev
vdamewood has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<rapiz>
yes. in my memory it's mostly the same as some intel manual
<rapiz>
Sos: what does alignment have to do with this? all descriptors are 8 bytes. there's no padding between gdt and gdtdesc
<Griwes>
it indeed is what is in the intel sdm
<Griwes>
*however*
janemba has quit [Ping timeout: 245 seconds]
<Griwes>
the intel sdm has more volumes than volume 2
wgrant has quit [Ping timeout: 252 seconds]
janemba has joined #osdev
dormito has quit [Ping timeout: 250 seconds]
<Griwes>
and both the description of the GDT (3.5.1, "segment descriptor tables") and of the IDT (6.10, "interrupt descriptor table (idt)") contain the words you are looking for
wgrant has joined #osdev
<rapiz>
Griwes: thank you
<rapiz>
i always refer to the instruction manual when i'm confused. but sometimes it does not help. i should read more than that next time :)
ccx has joined #osdev
<klange>
Sometimes the manual just makes us all more confused.
<doug16k>
rapiz, it's the limit, not the size
<doug16k>
it's the offset of the last byte
<doug16k>
that weird off by one allows a 16 bit field to be the full 64KB
<doug16k>
0 means 1 byte
<doug16k>
if you want 0 bytes, make the segment not present
arch-angel has joined #osdev
rapiz has quit [Ping timeout: 244 seconds]
arch-angel has quit [Quit: WeeChat 3.1]
dormito has joined #osdev
arch-angel has joined #osdev
<Arthuria>
Do I need to specify any special QEMU flags to get VESA to work? The struct I get back from the BIOS has no video modes inside.. all NULL? I send the struct with "VBE2" and BIOS responds with "VESA" and rest of struct is filled with data
<bslsk05>
github.com: dgos/modelist_bios.cc at master · doug65536/dgos · GitHub
<doug16k>
that's what I do
<Arthuria>
The way I understood it it is populed with word videomodes e.g. 0x115, 0x100, etc
<Arthuria>
Thing is the rest of the struct is populated with data, and BIOS responded with the correct signature. Is this a potential issue cuz I'm using qemu-system-i386.exe
<doug16k>
are you putting VBE2 into the struct before the call?
<Arthuria>
Yeah
<doug16k>
are you sure?
<doug16k>
you sure it isn't BV2E
<doug16k>
because forgot little endian?
<doug16k>
wild guess what might be wrong that you didn't check because it looks right
<bslsk05>
github.com: dgos/modelist_bios.cc at master · doug65536/dgos · GitHub
<Arthuria>
Either way, the fact that BIOS responds and fills out the struct, i.e. fills out signature with "VESA" and sets member VesaVersion with "00 03" indicating it's returning a VESA 3.0 support, seems like it should show the vidomodes too hmmm
<doug16k>
with ax=0x4f01
<doug16k>
sorry 0x4f00
<doug16k>
you got it all figured out then
<doug16k>
I get tons of modes
<Arthuria>
I have it in code using 0x4F01, but it just iterates through mode 0. As 0x4f00 returns all 0's in the VideoMode (offset:segment register).
<doug16k>
all the modes over again for 8, 16, 24, 32 bit
<doug16k>
no
<doug16k>
you don't start with 0x4f01
<doug16k>
you get the mode list from 0x4f00
<Arthuria>
The code I showed you, is before the use of 0x4F01. Yeah I use 0x4F00 to get all the modes, which your supposed to supply into 0x4F01. But I get no modes from 0x4F00...
<doug16k>
I don't believe you don't get modes
<doug16k>
I believe you believe it though
<doug16k>
how close to end of segment is it?
<doug16k>
what's the di
<Arthuria>
That struct the BIOS returned with "VESA" signature, contains the VideoMode, highlighted in purple - https://imgur.com/a/fcnGVDt
<bslsk05>
imgur.com: Imgur: The magic of the Internet
<doug16k>
doesn't tell me what di you used for the 4f00 call right?
<doug16k>
I'm supposed to just believe all your assumptions?
<doug16k>
es is the segment in the far pointer you are passing
<doug16k>
if di is offset from ss, es needs to be ss
<doug16k>
same as ss
<doug16k>
you are passing es:di far pointer
<doug16k>
that call filled in the memory at 0x26ff8
<doug16k>
but no signature there? is carry clear when int 0x10 returns?
<doug16k>
you meant 0x66cf6 right?
<doug16k>
you need to mov 0x6000 to es then
<doug16k>
stack has nothing to do with it according to your screenshot
<doug16k>
ignored
<Arthuria>
So I was looked at osdev and others, I don't see a mention of having to deal with ES. Though I'll look into it.
<Arthuria>
With this VBE code..
<Arthuria>
However if all you said is correct. Why is the BIOS filling out my struct that I allocated on the stack with my code and filling it out all correctly, except that 1 member hmm
arch-angel has quit [Quit: WeeChat 3.1]
<Arthuria>
So I tried setting ES, to be my SS (6000h), same thing. BIOS fills out my struct, albeit a different location now, but VideoModes still contains all 00's. Also looking online, you have to use es:di when calling BIOS VESA interrupts.
wgrant has quit [Ping timeout: 252 seconds]
wgrant has joined #osdev
<Arthuria>
doug16k, Lmao, all the stack and everything is correct, the segment:offset returned by the BIOS is returned in LITTLE ENDIAN!! Now these look like video modes! Jeez - http://pastie.org/p/6VoJeRQ7BN9sTn00NV5P8Z
<bslsk05>
pastie.org: Pastie
V has quit [Quit: We're here. We're queer. Connection reset by peer]
V has joined #osdev
dormito has quit [Ping timeout: 268 seconds]
dormito has joined #osdev
ahalaney has joined #osdev
Arthuria has quit [Ping timeout: 250 seconds]
nyah has joined #osdev
Arthuria has joined #osdev
sav has joined #osdev
bsdbandit01 has joined #osdev
wgrant has quit [Ping timeout: 252 seconds]
bsdbandit01 has quit [Read error: Connection reset by peer]
wgrant has joined #osdev
jaevanko has quit [Quit: Leaving]
rorx_ has joined #osdev
abbie6 has joined #osdev
Robbe1 has joined #osdev
adachristine has joined #osdev
mahmutov_ has joined #osdev
jjuran_ has joined #osdev
ornitorrincos_ has joined #osdev
eau_ has joined #osdev
puckipedia has joined #osdev
sprocklem has joined #osdev
gog has quit [Killed (NickServ (GHOST command used by adachristine))]
adachristine is now known as gog
Effilry has joined #osdev
janemba has quit [*.net *.split]
dh` has quit [*.net *.split]
Robbe has quit [*.net *.split]
jjuran has quit [*.net *.split]
Arthuria has quit [*.net *.split]
Mutabah has quit [*.net *.split]
valerius_ has quit [*.net *.split]
FireFly has quit [*.net *.split]
abbie has quit [*.net *.split]
Oshawott has quit [*.net *.split]
immibis has quit [*.net *.split]
sprock has quit [*.net *.split]
krychu has quit [*.net *.split]
puck has quit [*.net *.split]
ccx has quit [*.net *.split]
ornitorrincos has quit [*.net *.split]
nur has quit [*.net *.split]
eau has quit [*.net *.split]
rorx has quit [*.net *.split]
jjuran_ is now known as jjuran
abbie6 is now known as abbie
Robbe1 is now known as Robbe
Effilry is now known as FireFly
Oshawott has joined #osdev
rorx_ is now known as rorx
nur has joined #osdev
janemba has joined #osdev
wgrant has quit [Ping timeout: 250 seconds]
wgrant has joined #osdev
wgrant_ has joined #osdev
wgrant has quit [Ping timeout: 265 seconds]
transistor has joined #osdev
Arthuria has joined #osdev
dennis95 has quit [Read error: Connection reset by peer]
dennis95_ has joined #osdev
dennis95_ is now known as dennis95
wgrant_ has quit [Ping timeout: 264 seconds]
wgrant has joined #osdev
sav has quit [Quit: .]
srjek has joined #osdev
LittleFox has quit [Ping timeout: 268 seconds]
LittleFox has joined #osdev
puckipedia is now known as puck
gog has quit [Read error: Connection reset by peer]
adachristine has joined #osdev
Fox has joined #osdev
j00ru_ has joined #osdev
uplime_ has joined #osdev
kanzure_ has joined #osdev
pieguy128_ has joined #osdev
uplime has quit [Killed (NickServ (GHOST command used by uplime_))]
uplime_ is now known as uplime
LittleFox has quit [*.net *.split]
transistor has quit [*.net *.split]
janemba has quit [*.net *.split]
Sos has quit [*.net *.split]
kanzure has quit [*.net *.split]
matt|home has quit [*.net *.split]
mingdao has quit [*.net *.split]
iorem has quit [*.net *.split]
jeaye has quit [*.net *.split]
pieguy128 has quit [*.net *.split]
Belxjander has quit [*.net *.split]
warlock has quit [*.net *.split]
j00ru has quit [*.net *.split]
bradd has quit [*.net *.split]
kanzure_ has quit [Quit: leaving]
kanzure has joined #osdev
mingdao has joined #osdev
eau_ has quit [Quit: bleh!]
eau has joined #osdev
janemba has joined #osdev
jeaye has joined #osdev
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
Oli has joined #osdev
adachristine has quit [Quit: bye]
mahmutov_ has quit [Ping timeout: 252 seconds]
ornitorrincos_ is now known as ornitorrincos
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
dennis95 has quit [Ping timeout: 264 seconds]
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
dh` has joined #osdev
mahmutov_ has joined #osdev
isaacwoods has joined #osdev
warlock has joined #osdev
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
j00ru_ is now known as j00ru
DutchIngraham has quit [Quit: WeeChat 3.1]
dutch has joined #osdev
<klange>
I have to lock this thread just to avoid spewing a long string of explitives at bzt...
<geist>
:(
<geist>
someone is being a butt?
vin1 is now known as crash
<nur>
is it a forum topic?
crash is now known as vin
alexander has left #osdev [#osdev]
alexander has joined #osdev
* sortie
jokes that the forums are for people that don't actually osdev
<kazinsal>
yeah honestly bzt is just a shit disturber
gmacd has joined #osdev
gmacd has quit [Remote host closed the connection]
<kazinsal>
press the go-away-forever button on his account though and all your dreams will come true
alexander has left #osdev [#osdev]
alexander has joined #osdev
<geist>
ah yeah just checked the posts you're talking about
<geist>
seems unncessarily argumentative
<kazinsal>
I had a good chuckle at his DEAR MODERATORS thread
<kazinsal>
wonder if he's one of those morons that thinks "free speech" means that forum moderators aren't legally allowed to stop him
<nur>
I'm a failure at osdev, I just don't let it stop me. I'm having a ball in here :D
Arthuria has quit [Ping timeout: 268 seconds]
<geist>
it's also why i dont do forums, honestly
<geist>
or for that matter chat 'rooms' that are toxic, but it seems that forums have a higher chance of going toxic. though that's probably not true
<nur>
I've met some of my best friends on forums though.
pretty_dumm_guy has joined #osdev
<kazinsal>
I generally don't do the osdev forums in particular because they're primarily frequented by people with the bare minimum level of competency to figure out what the "submit" button does
<geist>
indeed. feels a bit like what the osdev discord is like
<nur>
there's a discord?
<kazinsal>
regrettably there is
<kazinsal>
not sure who runs it
<kazinsal>
(not us, I guess)
<geist>
it's tough, there's no magic there except to have a few experienced folks try to bring up the level of discorse, and then themselves not be toxic
<geist>
negative. there are a few osdev discords that have come and gone, from what i understand
<nur>
I'm too old to figure out how discord works
<nur>
I've been on irc since 1997 and I never logged off
<geist>
oh i dont mind it too much, and with some care you can build a nice, non shitposting non toxic environment
<klange>
There is one notable Discord server that's been around for a couple years now and went through a big management change.
<geist>
the unofficial raspberri pi discord that clever and I are on, for example, seems like a nice place with decent information density
<brynet>
I created a discord account recently, amusing to hang out with some old osdev/megatokyo friends who stopped using IRC.
<geist>
megatokyo forums, totally forgot about that
<kazinsal>
I primarily use discord for playing games with various irl friends and also a few guilds/online groups etc
<klange>
Ironically, I am also from megatokyo but not _that_ one.
<froggey>
they were good, then they got merged into osdev.org
<brynet>
heh
<geist>
kazinsal: basically yeah
<geist>
smallish friend groups it works great on, and the streaming bits for games is fun
<klange>
(our [the webcomic's] forum is an absolute cesspit)
<kazinsal>
totally. I'm "in" a bunch of larger discords but they're all buried in folders and muted
<geist>
see if we were on discord we could all have live streams of us trying to stumble through code
<j`ey>
lol
<kazinsal>
just a bunch of people in different time zones hitting up and enter in a terminal and muttering "fuck"
<geist>
kazinsal: exactly. once i joined about 10 of them i realize i have no time to follow more than one or two
<klange>
I've been in and out of the osdev discord, currently out.
<kazinsal>
largest discord that I'm in and actually read is a couple hundred active users and that's because it's my wow classic guild
<geist>
klange: i check it every few days but thus far for about a month its had a low enough info density that i haven't found much use
<kazinsal>
the rest are basically just meatspace friends and not-quite-meatspace friends
<froggey>
damn, megatokyo is still around and, more surprisingly, still updating
<klange>
There's a proglangdev Discord that's pretty solid. Good people, no noticable drama.
<geist>
i have a meatspace friend discord in the form of a slack channel
<geist>
i guess they jumped on the slack bandwagon before discord was a thing
<klange>
brynet: the webcomic not that tech forum ;)
<brynet>
ah
<froggey>
yeah
<brynet>
:]
<kazinsal>
I think the last time I caught up with MT was uh, 2008
<brynet>
honestly surprised that page is still there :D
<brynet>
The biggest thing I remember is all the work that was done to create a megatokyo forum theme for osdev.
<brynet>
(not by me)
<kazinsal>
since Schlock Mercenary ended the only webcomics I still keep up with are The Whiteboard and Questionable Content for the light absurdity and the gay robots respectively
<geist>
yah i have MT comic in my comic rotation but i long since forgot what was going on
<geist>
took me a few years to realize that that was exactly it. it was not going to go anywhere ever
<Bitweasil>
I read QC for a while, but I'm... probably a few months behind.
<klange>
Hey, we teased the possibility of the main character actually getting some action!
<Bitweasil>
It just started going down paths I didn't care about.
<geist>
egscomics is pretty good too for a long running serial that has lots of characters that come and go
<kazinsal>
EGS is one that I kinda stopped reading a while ago because it was getting kind of incomprehensible to come back to
<kazinsal>
and I feel like a full re-read is necessary but is also definitely not going to hold up at all
<geist>
yah tat's the downside
<geist>
i'm also really losing track of what's going on the last year or two
<kazinsal>
when some of the side stories started becoming canon as well it was like, okay, now I have to read two comics to be able to know what's going on in the main one
<kazinsal>
but only sometimes
<kazinsal>
GPF I also pretty much tuned out of after about a year of "the Earth is trapped in a pocket dimension" and that was three years ago
<Bitweasil>
I do keep up with xkcd. :)
<Bitweasil>
The current one being "Just about every modern tech announcement." :(
<klange>
xkcd is a bit easier to keep up to date on as it has no cognitive load of keeping track of an ongoing plot
<johnjay>
it's fine to have multiple drives with multiple EFI partitions right?
<johnjay>
my bootloader showed me options from both so i think i'm good
<kazinsal>
yeah an ESP just means "there's something here that the firmware should be able to read from"
<johnjay>
ah ok. i'm trying to recall why i couldn't get uefi to boot from ubuntu before.
<johnjay>
i had some problem that required chrooting into it and running update-grub
<johnjay>
if you add and take away hard drives maybe that changes UUID numbers?
<johnjay>
i thought those were always the same
<kazinsal>
UUIDs are supposed to be unique for the lifespan of the volume I think
<johnjay>
what i had done is i had windows on an old IDE drive
<kazinsal>
which doesn't necessarily mean lifespan of the *drive* but rather lifespan of whatever unique configuration is on it
<johnjay>
and linux was on the SSD
<johnjay>
so i bought a second SSD and put windows on it but only after unplugging the first SSD with linux so it wouldn't get boot loader overwritten, or so i thought lol
<johnjay>
then when i went back to the original config ubuntu wouldn't boot
<johnjay>
i may have booted ubuntu while the new drive was connected. not sure
<johnjay>
but why would that have made grub unable to boot?
<kazinsal>
grub might just be doin it wrong
<geist>
yah honestly i usually just set up a disk image manually once. you can do it with parted or gparted
<geist>
create an ESP, set the right bits, format it
<geist>
but then that's probably not what's being asked here
<geist>
kazinsal: noice!
<geist>
reminds me, xfinity upgraded my network to 1.2gpbs.... but i have no way to utilize it
<geist>
kinda frustrating, though clearly whatever.
GeDaMo has quit [Quit: Leaving.]
<kazinsal>
yeah, I can apparently get 1.5 down / 1 up but the ONT is only 1 GbE and my switch has no 2.5/5/10GbE SFP+ ports on it
<kazinsal>
so I just stuck with the 1 Gbps symmetrical. more than enough really
<geist>
yah at first i thought shenanigans, but then apparently one of the ports on the cable modem is actually 2.5
<geist>
but im using a dedicated router, etc which has non upgradable 2.5. only real solution there i gues is to run it into a switch that can do 2.5, assign it a vlan, and then have the router connect to the switch with a pair of bonded 1 gpbs links
<geist>
and then hope it gets distributed nicely across the pair
<geist>
but then i'd need a switch that can do 2.5 + bonded, and that's probably more expensive than just getting a new router
<geist>
well, probably not, but still
<geist>
i think mikrotik or so has a 8 port 10gbe for a semi reasonable amount. presumably that would also link up at 2.5
<kazinsal>
most new 10GbE will do NBASE-* as well yeah
<geist>
i generally use unifi for everything but i'm a bit unhappy with the direction they're going in, so kinda in a wait and see with what they do over the next year or so
<geist>
before i invest more in their 10gbe stuff
<kazinsal>
yeah, I'm still using an old Cisco 2960S 48-port gigabit switch that work was throwing out
vdamewood has joined #osdev
vinleod has joined #osdev
vdamewood is now known as Guest6484
vinleod is now known as vdamewood
Guest6484 has quit [Ping timeout: 245 seconds]
dormito has quit [Ping timeout: 265 seconds]
<doug16k>
ppc has fec00000-fec00fff pci-conf-idx, and fee00000-fee00fff pci-data-idx. doesn't that look like 0xCF8-0xCFF I/O port access method? 0xfec00000==port 0xcf8 and port 0xfee00000==port 0xcfc?
<geist>
yah that does look like something like that
immibis_ has joined #osdev
<johnjay>
lol this is so frustrating
<johnjay>
so i was trying to find a link in the irc logs. i thougth i had it right by doing grep -a -C 10 johnjay <file> | grep grub
<johnjay>
then i realized I need to specify the -a for both grep's
<johnjay>
because irc logs always seem to be binary files now
<johnjay>
and if the text you want occurs after the bad 00 bytes then it doesn't show it... just says "binary file matches"
<clever>
johnjay: there could be null bytes in your log from an improper shutdown
<clever>
that sometimes filles a cluster with nulls
<johnjay>
ah ok. that could be due to me losing connection and then weechat reconnecting, or you mean a full crash?
<clever>
that will show the binary data that strings removed
<johnjay>
it printed a lot of text strings though
<johnjay>
i assume as part of just the diff though
dormito has joined #osdev
Arthuria has joined #osdev
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]
Lucretia has quit [Ping timeout: 265 seconds]
<doug16k>
I can probably drop I/O PCI access and only use ecam on x86
<doug16k>
so it's mmio ecam or i/o-like mmio index/data
<geist>
warning: some virtual machines only still do legacy
<geist>
for example, google GCE is legacy mode only
<geist>
easier to trap and if you're not using higher level pcie features in a fake machine, no need to
<doug16k>
yeah you just made me realize I need to decouple the autodetecting and make it possible to manually do it
<doug16k>
so it doesn't need to be qemu necessarily
<doug16k>
should probably do bochs so I don't couple too much to qemu
<doug16k>
I can go get GCE?
<doug16k>
never heard of it
<Bitweasil>
Google Compute Engine.
<doug16k>
oh I see
<Bitweasil>
Trapping CF8/CFC is *way* easier than MMIO trapping.
<doug16k>
vm host
<geist>
right
<Bitweasil>
(I've done both, most OSes are well enough behaved to not bother MMIO if they don't find a device on the IO port range)
<geist>
i believe one of the other ones also only does cf8 based pci config. AWS?
<doug16k>
yeah might as well leave it there, it is easier to trap
<doug16k>
maybe should go as far as avoiding ecam and making it prefer cf8 in a vm eh?
<doug16k>
resort to ecam when doing pcie thing that must have it
<geist>
that's what i'd do honestly
<doug16k>
(the past-4K config space)
<kazinsal>
yeah presently I'm not using any PCIe featuers so I don't bother looking at ecam
* geist
makes another run of gcc builds with 11.1
<geist>
still gets trippy wathcing this 256 core arm machine chew through builds like that
<doug16k>
if you have SMP and you want to route IRQs to specific CPUs, you need ecam stuff IIRC
<geist>
make -j 512!
<j`ey>
geist: weee!!
<kazinsal>
you can do MSI stuff through the standard configuration access method
<doug16k>
geist, probably >some_log_that_can_take_the_abusive_output.txt too
<kazinsal>
iirc you need ecam for MSI-X though but again that's a PCIe feature
<doug16k>
2>&1
<kazinsal>
eugh, abusive output from software is the worst
<kazinsal>
xorriso muxes errors and useful build info into the same stderr stream
<doug16k>
yeah I am uncomfortable with that tool. it will happily continue and produce incomplete/invalid output
Lucretia has joined #osdev
xuochi has joined #osdev
<doug16k>
it thinks it is a cd mastering tool, and doesn't realize that it is actually a compiler :P
<xuochi>
hey guys. I was thinking about Doug Englebart's mother of all demos, and I was wondering if any one has made an operating system based around objects/documents and hypertext?
<geist>
yah frankly anything to do with cdroms and the filesystems contained therein i stay away from
<geist>
thankfully we have moved on
<Bitweasil>
ecam is the 4k config space, or even further extended?
<Bitweasil>
geist, 640 cores ought to be enough for anyone! ;)
bsdbandit01 has joined #osdev
<Bitweasil>
How does it actually *work* with that many cores?
<Bitweasil>
I'd imagine you thrash cache and RAM so badly most of them are twiddling their bits in wait states.
<doug16k>
cache of course
<doug16k>
cache hit rate is 95% to 99% in practice
<Bitweasil>
Sure, but even with a lot of cache, 256 cores is a lot of area to split it across.
<Bitweasil>
Though I suppose if you have *all of gcc* in cache...
<Bitweasil>
I don't have a good feel for how that stuff ends up working in practice.
<Bitweasil>
I know the M1 is blisteringly fast...
<clever>
ive seen a blog post explaining why `ghc -j512` is exponentially worse then `make -j512` spawning 512 different ghc's
<doug16k>
no, it surely has an obscene amount of cache to go with all the cores
<Bitweasil>
Ok.
<doug16k>
you benefit. it doesn't plateau
<clever>
basically, the caches for the .h level type info, are shared between threads, and the mutex stuff is causing conflicts and a waste of cpu
<doug16k>
they build it so it can handle it. that's why so many memory channels and stuff
<clever>
until thats solved, its better to run entirely seperate instances
<clever>
but part of the problem, is specific to haskell
<clever>
though, i can see the same thing happening to any multi-threaded app
<doug16k>
more cpus == more losses? absolutely. but you have so much more processing power, what you gain overwhelms the extra losses
<clever>
doug16k: in the case of the ghc bug, the losses get so extreme, that it runs slower overall, at higher j numbers
<doug16k>
yea of course thrashing the cache is worse
<clever>
this one, is even worse, a quirk of a lazy language
<clever>
when the shared object is modified, the state is lost, and it turns back into a thunk
<doug16k>
you want each cpu doing as little as you can while still utilizing the whole machine
<clever>
and the RTS will compute the value later
<clever>
then 5 cores try to read the same state at once
<doug16k>
ideally one thread runs on each cpu
<clever>
and a performance tunable, says dont bother with a mutex
<clever>
so all 5 cores repeat the same computation
<doug16k>
that madness?
<doug16k>
that unpredictable performance is one of the things that drive people away from languages
<clever>
its a chunk of pure code, by definition, it will have the same result, no matter what core computes it
<clever>
you can solve that by inserting a strictness thing in the right spot
<doug16k>
like in java you never know when you will hang for as long as it feels like doing a gc
bsdbandit01 has quit [Read error: Connection reset by peer]
<clever>
i have also seen a talk on how to get predictable performance out of java
<doug16k>
yes years ago I used to be nuts about thread pooling and trying to be a savage and throw data all over the place across cores and stuff. now I realize the parallelism belongs at a higher level
<clever>
so your fps would be stable in android
<clever>
basically, turn automatic gc off, avoid creating garbage, and force a gc when the fps doesnt matter (loading screens)
<doug16k>
you can't avoid anything
<doug16k>
lots of code you don't control runs
<clever>
you avoid creating garbage, by never having objects in local vars, reuse an object that is a field in a global thing, and reset the object manually
<clever>
thats what the gc during loading is for
<clever>
to clean up the small amount of garbage you cant avoid
<clever>
then just budget to have some garbage pile up
<doug16k>
on android it's not bad - tools will warn you that you are going stupid creation in paint handlers and stuff
<doug16k>
s/going/doing/
<doug16k>
and recyclerview - your whole ui is based around reusing objects
<doug16k>
android people are obsessed with gc
<doug16k>
which is kind of nice
<doug16k>
recyclerview is pretty impressive really. once it warms up it approaches as efficient as you could possibly do it
<clever>
ListView also recycled the list items
<doug16k>
android memory is easy mode. you can create huge complex cycles and it will figure it out and not leak
<doug16k>
don't hate the gc too much. it does have ludicrously good locality and small allocation performance
<clever>
in the talk i saw, the goal was more about fps jitter
<clever>
games dont feel right, if every 90th frame takes 3 frame times
<doug16k>
yeah, the surprise delays. sometimes they give you a way to donate cpu time at a good time so it won't delay you at a bad time
gog has joined #osdev
<klange>
I'm having a _Chain of Command_ experience at work... was assigned to a ticket to investigate why an A/B test was breaking, found it was broken in a completely different way than the test described in that it just wasn't working at all. Had other priorities, ticket got reassigned, they say it's working fine [and they can reproduce the original issue]...
<doug16k>
ya I need to go see how fast tf2 actually runs, it sits at fps_max 300, cl_showfps 1 says 299.<random digits>
<doug16k>
but you can't change fps_max during a game
<geist>
Bitweasil: on this particular machine (256 thread ARM) it's fairly straightforward cache layout
<geist>
two sockets of 32 cores, each with a large L3
<geist>
i forget precisely the topology within the socket, actually. i think it might be a big ring like intel hardware?
<geist>
or maybe it's one of those rings with the L3 split amongst clusters of cores
<geist>
so really it's 'only' 64 cores, but then it's SMT4
<Bitweasil>
Ah, huh.
<Bitweasil>
Interesting.
<kazinsal>
reminds me, I kind of want to try to eventually build a NUMA system running Araxes that can ahve a whole socket fail and it just flips everything over to the other socket and that socket's RAM
<geist>
eally SMT4 for things like building stuff is silly. my informal benchmarking of the machine in SMT4 vs SMT2 mode is what i'd expect. about parity. ie, no more benefit in those kind of work loads adding more coes
<geist>
s/coes/threads
<geist>
really the L1/L2s get a thrashing more than anything else, with 4 threads on each
<Bitweasil>
*nods*
<Bitweasil>
Need some of that M1 cache, 128kb/192kb
<Bitweasil>
Per core.
<geist>
yah totally
<geist>
i forget what this has...
<kazinsal>
every time someone mentions the M1 I refresh the fedex tracking page for my eventually-arriving laptop and frown
<bslsk05>
pastebin.com: geist@x2:~$ lscpuArchitecture: aarch64Byte Order: Little End - Pastebin.com
<Bitweasil>
Yeah, that's... nice, but with 64-bit code, kind of sucks. :(
<Bitweasil>
kazinsal, worth the wait, it's absolutely epic.
<geist>
kazinsal: ooooh you ordered the air or the pro?
<kazinsal>
air
<Bitweasil>
The Pi4 I'm on: Caches: 32 KB data + 48 KB instruction L1 cache per core. 1MB L2 cache.
<geist>
i'm still holding out for the second gen, but i also don *need* a new laptop right now
<kazinsal>
got a screaming deal on an open box but still in all the shrink wrap air, on the same day that my ancient thinkpad gave up the ghost
<Bitweasil>
geist, I expect a ton of lightly used 1st gens will come up on the used market with the 2nd gens arrive, so if they don't offer anything you need, get a used M1.
<gog>
i got a new phone finally
<geist>
yah, i *do* have a M1 mini though
<geist>
so it's not like i'm not getting any M1 love
<gog>
new-used, but not a total wreck like my old one
<Bitweasil>
The "Oh, hey, we should give benchmarkers something that literally never throttles" option. :D
<geist>
gog: yay!
<Bitweasil>
I have mine on a LG 5k, and it mostly stays off these days. :/
<gog>
it's a moto g6+... its specs are comparable to my laptop
<geist>
Bitweasil: yah i haven't been able to figure out how to get the M1 to even spin up its fan to audible levels
<geist>
i guess it has a fan, but it basically never breaks a sweat
<Bitweasil>
I think I did it once.
<Bitweasil>
My office was super hot.
<Bitweasil>
But I've got TG Pro on it, and the fan just... idles at 1700 RPM.
<Bitweasil>
No matter what you do.
dormito has quit [Ping timeout: 245 seconds]
<Bitweasil>
The old 2018 Mac Mini, you move the mouse and the fan would scream.
<geist>
yah i was thinking about it, i suspend it every night, but really at the wall it makes almost no difference
<Bitweasil>
So, GeekBench results on the 2018 MM vs the M1... lmao.
<geist>
like it's a single LED bulb difference maybe
<Bitweasil>
Single Threaded/Multi Threaded/OpenCL/Metal
<Bitweasil>
2018 with the i5: 1031/5531/4834/2214
<geist>
once again skyz is spamming me with random
<Bitweasil>
M1: 1746/7711/19640/22702
<Bitweasil>
It's literally an order of magnitude better in Metal compute.
<Bitweasil>
and, you know, 70% faster single threaded.
<Bitweasil>
And never spins up the fans.
<geist>
also hes apparently following the irc logs since he immediately responds to me saying something
<Bitweasil>
The Intel one was certainly loud.
<Bitweasil>
*sigh*
<geist>
yah. i dunno if it's browsers getting slower, me keeping more tabs open, web pages getting bigger, etc but my old 2014 MBP is definitely chugging along much more so than it used to
<geist>
i dont think it's just expectations of me changing, though that's hard to pin down
<Bitweasil>
Web pages are massively fat.
<Bitweasil>
Turn on an aggressive ad/script blocker and it helps a ton.
<geist>
i think it's a bit of everything, yeah
<gog>
i blame the document object model
<geist>
and yes
<Bitweasil>
CNN is like half a Windows 95.
<kazinsal>
geist: yeah I have a pre-emptive ignore in place for that reason
<gog>
i periodically have to close and open facebook tabs because it'll absolutely choke firefox if i scroll enough
<geist>
was funny, i checked how much ram evince was using to load up the ARM ARM a while ago: 1.9GB vm, 580MB real memory
<geist>
kazinsal: i keep tryig to point him in some sort of productive direction, but then every day he just resets back to the same place
<Bitweasil>
Continuing to endlessly ping/update/etc.
<geist>
that's my curse, always trying to help
ahalaney has quit [Remote host closed the connection]
<moon-child>
some people refuse to be helped
<kazinsal>
the goodness in your heart is too pure after all these years
<Bitweasil>
Fox News is 23.6MB today.
<geist>
sometimes you have to play the long game with them, and they mature over time
Fox is now known as LittleFox
<kazinsal>
Bitweasil: and 0 bytes of valid content!
<moon-child>
heh, maybe
<Bitweasil>
Yahoo is a "svelte" 8.1MB!
<Bitweasil>
Oh, no, wait, delayed load, 9.1
<LittleFox>
Bitweasil, thanks for the reminder to fix my nick :D
<geist>
usually what happens with te long game is you get someone that comes in here literally too young to be mature enough
<geist>
then 3 or 4 years later they come back and they grew up
<kazinsal>
haha, yeah
<Bitweasil>
Reddit front page is 24MB.
<kazinsal>
once they're done with high school they suddenly can code
<gog>
i feel personally attacked
<geist>
so if you show them a little bit of compassion the first time around they remember and come back when they're ready
<gog>
j/k though i'm way too self-conscious to let myself ask for help all that often
<Bitweasil>
With ad blockers, CNN is 7.6/16.3. But that's still *insane* for a bit of text and some photos.
<geist>
well, obviously everyone matures at different rates, which is why i dont put a hard number on 'are you this old'
<geist>
nor do i really care, but sometimes you get the obviously too young to stay focused on task, etc
<kazinsal>
true. I'm in the back half of my 20s and I'm still a dingus
<geist>
word. but if you can still stay on topic and focus that's all you need
<gog>
but you're a good bean who gives headpats to catgirls who need them <3
<LittleFox>
being 27 I still am young a lot of times, but also kinda mature often enough
<geist>
focus as in actually follow through with going away and learning something
<LittleFox>
so there isn't even a single state you are in at any given age
<geist>
right
<geist>
that beign said i dot think i've seen the young osdevers as much the last 10 years or os. probably a result of them not gravitating towards IRC
<geist>
very possible we're slowly getting older population wise on this channel and newer folks are going to other avenues, like discord
<gog>
i'm not going back to the osdev discord lol
<Bitweasil>
I don't know if it's that, or if there simply aren't as many younger people in the deep weeds spaces.
<geist>
that too
<Bitweasil>
I don't know many, and I do this stuff professionally. :/
<kazinsal>
yeah, anyone who makes their way onto IRC as a youngin at this point probably is already well on their way to being a cognisant programmer
<LittleFox>
hm when I started back around 2009 I was only active on the lowlevel.eu forum, not via IRC
<gog>
i was already an irc goon when i started around 2008
<LittleFox>
I think there are two younger ones occassionally in euIRC/#lost
<LittleFox>
one kinda regularly even
<gog>
and my latest experiment is still just barely more developed than my earliest :/
<kazinsal>
I had an interesting headstart in nerdery through my uncle, who gave me an OpenBSD machine at the tender age of six and explained what perl was
<LittleFox>
kazinsal, oha :D
<geist>
awww that's cool
<geist>
i didn't really discover linux until college, because 1995
<gog>
i spent my teen years in abject isolation and taught myself programming to distract myself
<geist>
prior to that i lived in the sticks and one did not simply get access to linux or bsd unless you ordered it on cdrom
sortie has quit [Quit: Leaving]
<geist>
plus linux kernel was like .9 then
<gog>
yeah i had to call a computer shop to download the redhat 8 isos for me and the jagoff didn't even know how to burn an image
paulusASol has joined #osdev
<gog>
i had to copy the iso file from the disc and re burn all of them :|
<LittleFox>
I remember downloading novell linux desktop (yes, not thaaat old) over our new DSL connection
<geist>
nice!
<kazinsal>
I think my first Linux was a really early version of Xandros, and then Fedora Core
<LittleFox>
we had 1GB free ... every other MB costing additional
<LittleFox>
well .. it was 3 CDs
<kazinsal>
I never did get into the weeds of compile-it-yourself distros
<kazinsal>
lack of patience then and, honestly, lack of patience now
<geist>
yah when i went to college i went from dialup to 10mbit eth in the dorm room. straight on the net, no nat, no firewall
<gog>
i used gentoo for far too long
<geist>
was back in the day when that was okay.
<gog>
funroll-loops
<geist>
was like suddenly being connected to The Feed
<gog>
participated in the great paludis portage trollwar
<LittleFox>
geist, I think thats still the norm here for students housing
<Bitweasil>
Gentoo is a great learning OS, because it's *always broken.*
<LittleFox>
:D
<kazinsal>
geist: ha, yeah, the jump from dialup to DSL was like that for me
<LittleFox>
to have a truly "always broken" os you need to make it yourself
<Bitweasil>
"It's 5PM, I'll run emerge update world. It's now 3AM and I have something working again."
<geist>
and it was only 10mbit bcause that was literally the best you could get. i dont htink 100mbit had been invented yet
<gog>
emerge -avuDN --oneshot world
<kazinsal>
you mean I can just download stuff and not have to worry about what happens if someone picks up the phone? miracles
<kazinsal>
kids these days have never heard a receiver go off hook followed by muffled dialup screeches from the next room over
<kazinsal>
and your connection dropping seconds later
<gog>
sometimes if you hang up quickly enough it won't drop
<geist>
or a few seconds of tense waiting to see if it could pick it up
<geist>
and hoping zmodem could continue
<geist>
this is one of the reasons i always used external modems, you could get blinkenlights to see what was going on
<geist>
but the mainr eason is we had lightening strikes a lot at the house so it was easier to insulate the modem from the computer, and easier to reach over and unplug it before a storm
<gog>
the only hardware modem i ever had was a 28.8k ISA modem
<gog>
everything else was some HFC winmodem
<geist>
yah that was the other reason. pretty quickly everything went winmodem after the first time someone invented it
<geist>
so the best way to get a Real Modem was to get an external one
<geist>
ensured it wasn't garbage
dormito has joined #osdev
<Bitweasil>
Yeah...
<Bitweasil>
I don't miss those days.
<geist>
yah pretty much. the BBS stuff it's fun to be nostalgic about, but dialup internet was just not a great experience all around
<geist>
was a necessary evil, short of using the AOL portal inside their app
<kazinsal>
on the other hand I can't imagine social media existing at 56kbps
<LittleFox>
kazinsal, a good and a bad thing at the same time
<Bitweasil>
They could.
<Bitweasil>
Just not in the current form.
<Bitweasil>
The current form is distilled evil.
<Bitweasil>
So.
<geist>
right, was before instant messaging really. that didn't come along till a bit later
<geist>
ICQ, AOL messenger, etc
<Bitweasil>
Meanwhile, IRC hasn't changed a bit, and that was fine on dialup.
<doug16k>
I had USR sportster 14.4. the AT command set was a toybox of fun
<Bitweasil>
ATDT!
<geist>
at&s0=1 iirc did something
<doug16k>
that means answer on 1 ring IIRC
<LittleFox>
you can still have the AT command fun, LTE modems still do that ^^
<doug16k>
oh &
<Bitweasil>
+++
<geist>
there was a period there where some modem had a bug that looked for +++ on *incoming* data too
<kingoffrance>
find an old external voice modem and vgetty :)
<geist>
so you could knock someone offline if they were dialed in by sending +++ATH
<LittleFox>
geist, ouch
<doug16k>
the security holes of the past are so gaping
<kingoffrance>
now im curious if there be other gettys
pretty_dumm_guy has quit [Quit: WeeChat 3.2-rc1]
<Bitweasil>
oof.
<Bitweasil>
Before even Smurfping!
<geist>
yah years later nce i went back to learn things i just took for granted, i was surprised to see the +++ escape stuff
<geist>
i think there was some property that made it not fire all the time, but i forget what it was
<doug16k>
I want to make a PPP implementation before it is completely gone
<geist>
like maybe you had to have a gap of time before or after it?
<doug16k>
PPP over modem
<geist>
or PPP was supposed to escape it?
<doug16k>
I think PPP dealt with that yeah
<LittleFox>
doug16k, "before completely gone" huh? its not feeling like its going everywhere, at least PPPoE
<geist>
so it's possible the +++ATH thing only happened on BBSes or something that wasn't using PPP
<doug16k>
LittleFox, yeah, over ethernet is not going away soon
<LittleFox>
even fibre connections here are PPPoE x.x
<doug16k>
not until a lot of phone equipment rusts out anyway :P
<geist>
yep, until i moved a little while ago, my fiber was PPPoE as well
<LittleFox>
I just want a link local IP and BGP session
<LittleFox>
but .. wrong channel for that I guess x)
<geist>
apparently it solves a particular niche problem with tunneling over fiber networks
<geist>
they just wrap it in some sort of fiber framing and dump the session back at the CO and PPPoE solves that particualr issue
<gog>
i have no idea what my fiber modem did internally, probably pppoe
<gog>
possibly NSA backdoored
<doug16k>
ethernet is too easy. all nice, neat, separate frames with a bow on it. PPP is fun because it's just a pure stream and you don't have the slightest clue where anything begins or ends without doing work
vdamewood has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<doug16k>
and you are guaranteed to get lots of errors
<doug16k>
ethernet is close to infallible in practice, as far as bad crc goes
<gog>
jumbo frames are also wonderful
<kazinsal>
ethernet is great, it's everything else that sucks
<clever>
doug16k: i have a 3d usb cellular internet stick, and its just protocols ontop of protocols, lol
<clever>
doug16k: when you first enumerate it, it claims to be a usb cdrom drive with the windows drivers and an autorun.inf
<gog>
oh god i hate those
<clever>
if you try to eject the cdrom, it re-enumerates as a serial port
<kazinsal>
my favourite thing is when TCP doesn't get told that there's a VPN in the way
<kazinsal>
and your connection just goes to shit because your MSS is too big
<doug16k>
yeah those are cool
<clever>
you can then treat it like a plain dialup modem, and dial +777 i think it was
<LittleFox>
kazinsal, even better when you fix that with mss clamping
<clever>
and then you get PPP packets, and internet
<LittleFox>
and then UDP things break
<LittleFox>
because those don't have MSS
<doug16k>
the idea of the device also being a drive that has the installation media there is pretty neat
<LittleFox>
doug16k, also have on here that has a microsd reader, so it's not completely useless
<clever>
in my case, i just wrote a udev rule to eject the driver disk upon detection
<clever>
so it always turned into a serial port
<doug16k>
sounds like they pieced it together
iorem has joined #osdev
<clever>
yeah, my 3g stick also had uSD reader
<doug16k>
I have little forgiveness for devices not behaving nicely as usb devices, it is very easy to be a usb device
<LittleFox>
uhm
<LittleFox>
wouldn't sign that
* LittleFox
looks annoyed at the last µC project
<doug16k>
the whole idea of usb is to put all the complexity into the host controller so the devices are cheap and simple
<LittleFox>
yes
<LittleFox>
but that does not mean it's easy
<LittleFox>
:D
<doug16k>
make a bluetooth thing and tell me how easy usb is after
<LittleFox>
you win.
<LittleFox>
for now
<doug16k>
no winning. it's all relative
<LittleFox>
have some USB 3 boards in the mail, we'll see x)
<kazinsal>
theory: the host controller is the complex part; reality: PCIe 4.0 GPU over thunderbolt over USB3.x with thunderbolt over USB3.x displays routed through it
<LittleFox>
(hopefully they are USB 3 DbC adapters, worst they are garbage ¯\_(ツ)_/¯)
<doug16k>
if you mean from a small resource device, then yeah, that scales up the difficulty
<clever>
i have implemented usb device mode on an rpi, in baremetal
<LittleFox>
clever, nice
<doug16k>
I mean if you are an actual manufacturer that is actually manufacturing, I hold you to a higher standard
<doug16k>
getting any usb device to work is a huge accomplishment
<LittleFox>
somehow I only get it to run in normal firmware mode, not in bootloader mode x.x
<LittleFox>
(xmega)
<clever>
LittleFox: i was also playing hard mode, i had to do things like initialize the usb phy, bring power domains up in the right order, and set the clock divisor to generate the usb clocks from the main crystal
<LittleFox>
clock things and usb phy sounds like "same" on xmega
<clever>
without documentation :P
<LittleFox>
power domains .. well, you can be in a low power mode ...
<LittleFox>
oh
<LittleFox>
yeah
<clever>
i still have no clue what PHY i'm even using
<LittleFox>
ok
<LittleFox>
:D
<LittleFox>
did anyone here get XHCI debug capability to work?
<clever>
LittleFox: is that like ehci debug?
<LittleFox>
yes, but less annoying - only needing a crossover cable, no logic in that. also, any port on that controller can do that, not only a single one
<LittleFox>
and.. superspeed
<clever>
ahh
<clever>
i was looking into ehci debug earlier, and it looks to be limited to only "high-speed" 480mbps
<LittleFox>
but it's surprisingly hard to source crossover cables here
<LittleFox>
well .. since ehci is limited to usb 2.0 this makes sense
<clever>
so a full-speed 12mbps gadget cant be an ehci debug dongle
<LittleFox>
oh
<LittleFox>
I see what you mean
<clever>
yeah
<LittleFox>
only high speed, not lower, not higher
<clever>
it only works on the ehci half of the controller
tpg has joined #osdev
<clever>
yep
<LittleFox>
xhci is the same, only superspeed
<LittleFox>
the cables for that don't even have D+/D- connected
<clever>
that at least makes the controller simpler
<LittleFox>
I have some cursed code written to control a xhci controller from linux userspace
<clever>
heh
<LittleFox>
hope the boards in the mail will make a good DbC cable x)
<clever>
can you set control flags to never generate an irq?
<clever>
linux may not even notice what your doing! :D
<LittleFox>
since I detach the driver from the controller
<LittleFox>
^^
<clever>
that should also be done, yes
<LittleFox>
I'm in full control over it then, but receiving interrupts would still be hard
<LittleFox>
but debug can be used without interrupts
<LittleFox>
also, only want to test that code with less bugs outside it - like my kernel
<clever>
i was thinking more about not spamming the kernel with interrupts it doesnt know how to service
<LittleFox>
ah
<LittleFox>
well, if I'm at that kind of problem, the code already served enough I think
<LittleFox>
:D
<clever>
when i was first writing the 3d drivers for the rpi, i caused a similar issue
<clever>
there was no way to detatach the blob driver from the irq
<clever>
so the instant linux did its first frame render, the firmware blob on the other side of the chip crashed
<clever>
because it got an irq unexpected
<LittleFox>
lol
<clever>
i filed a bug, and they added a config.txt entry to mask any irq
<clever>
doesnt really detach things, but it does stop the crash
bsdbandit01 has joined #osdev
bsdbandit01 has quit [Read error: Connection reset by peer]