<geist>
weird, i went away from the house a few minutes and i had a massive network failure at home
<geist>
thinking, okay, the ISP went down when i got back my main server and firewall/etc was just powered off
<geist>
more specifically the UPS it was plugged into just powered off
frkzoid has quit [Ping timeout: 260 seconds]
frkazoid333 has joined #osdev
frkazoid333 has quit [Ping timeout: 245 seconds]
<clever>
geist: after i upgraded my mobo/cpu a few months ago, i tried testing it with rustc, it pulled enough amps that the UPS just said "no", and turned itself off, lol
<heat>
as it should
<clever>
the old UPS would just sound the overload alarm, but stay on
<clever>
it can likely pass more AC then it can generate
<clever>
maybe the new one cut more corners
<geist>
it's almost exactly what must have happened
<geist>
or the UPS triggered some sort of something that caused it to shut down
FreeFull has quit []
<zid>
What you've got there is a king of the fire spirits issue
<zid>
you're going to need an elemental spirit user to fix it
CaCode has quit [Ping timeout: 246 seconds]
andydude has joined #osdev
MiningMarsh has quit [Ping timeout: 250 seconds]
foudfou_ has joined #osdev
foudfou has quit [Ping timeout: 240 seconds]
dutch has quit [Quit: WeeChat 4.0.2]
[itchyjunk] has quit [Remote host closed the connection]
dutch has joined #osdev
heat has quit [Ping timeout: 246 seconds]
vai has quit [Ping timeout: 244 seconds]
vai has joined #osdev
janemba has quit [Read error: Connection reset by peer]
janemba has joined #osdev
<zid>
futurama is back, for some reason, apparently
<moon-child>
again?
<moon-child>
are they trying to simpsons it?
bgs has joined #osdev
<klange>
The entire first episode of the new series is a meta commentary on how they're bringing back the series.
<klange>
Also a massive callout to people like me who sat down and binged the entire existig series...
janemba has quit [Read error: Connection reset by peer]
janemba has joined #osdev
frkazoid333 has joined #osdev
janemba has quit [Read error: Connection reset by peer]
janemba has joined #osdev
bgs has quit [Remote host closed the connection]
gabi-250 has quit [Remote host closed the connection]
gabi-250 has joined #osdev
Yoofie has quit [Ping timeout: 260 seconds]
Yoofie has joined #osdev
goliath has joined #osdev
SGautam has joined #osdev
Burgundy has joined #osdev
GeDaMo has joined #osdev
foudfou_ has quit [Remote host closed the connection]
foudfou has joined #osdev
gareppa has joined #osdev
vai has quit [Ping timeout: 264 seconds]
Burgundy has quit [Ping timeout: 246 seconds]
[itchyjunk] has joined #osdev
slidercrank has joined #osdev
slidercrank has quit [Remote host closed the connection]
bleb has quit [Ping timeout: 244 seconds]
eroux has quit [Ping timeout: 246 seconds]
eroux has joined #osdev
bleb has joined #osdev
<zid>
Hvar sefur þú? Gyllta borgin mín
<zid>
Spegilmyndin, sýnir mér, varpar ljósi
<zid>
this is icelandic right?
andydude has left #osdev [#osdev]
bslsk05 has joined #osdev
[itchyjunk] has quit [Read error: Connection reset by peer]
awita has joined #osdev
danilogondolfo has joined #osdev
\Test_User has quit [Ping timeout: 252 seconds]
\Test_User has joined #osdev
SGautam has quit [Quit: Connection closed for inactivity]
benlyn has joined #osdev
SGautam has joined #osdev
eck has quit [Ping timeout: 250 seconds]
eck has joined #osdev
nyah has joined #osdev
benlyn has quit [Read error: Connection reset by peer]
<bslsk05>
'How NOT To Implement the POSIX Standard, Featuring Windows NT ...' by NCommander (00:14:39)
benlyn has quit [Remote host closed the connection]
benlyn has joined #osdev
<mcrod>
hi
<ddevault>
how do you guys like to implement fork(2)
<gog>
don't
<gog>
never fork
<ddevault>
do you implement COW? do you pre-emptively copy certain mappings, like the stack? do you copy read-only pages, if so, eagerly or when remapped rw?
<ddevault>
bah, appointment, will read the discussion later, if one ensues
Left_Turn has joined #osdev
<Mutabah>
I used cow when implementing fork back in my previous project
<Mutabah>
(current one doesn't have fork)
<sham1>
CoW is the best way of doing fork, if one wants to stay sane
<sham1>
Of course, it'd be better not to have fork, but that ship has sailed
<mcrod>
gog: may I pet you
zxrom has quit [Quit: Leaving]
<gog>
mcrod: yes
* gog
preemptively prrr
<zid>
Hvar sefur þú? Gyllta borgin mín
<zid>
Spegilmyndin, sýnir mér, varpar ljósi
<zid>
gog this is icelando right
ia64developer has joined #osdev
<sham1>
Pre-emptive prr? Sounds like a concurrency issue
<GeDaMo>
Should have constructed a promise(purr) to be resolved later
MiningMarsh has joined #osdev
<ia64developer>
t
<ia64developer>
Fabrice Bellard has announced that Qemu has now been renamed to "Q - The Everything Emulator"
<ia64developer>
Clang will be "C" and GCC will be "G".
<ia64developer>
Mintsuki has followed by renaming Limine by "L" and Kevin Lawton will rename Bochs to be "B".
<ia64developer>
Risc-V will now be "R", "x86" will now be "8"
<nortti>
iirc there was a graphical os x frontent of qemu called q back in the day
<nortti>
did some x86 osdev on my ppc mac with that
<gog>
zid: yes
<gog>
where do you sleep, my gilded town
<zid>
ah, it's about the golden city, so that makes sense
<gog>
<something image>, <something about vision> <something about lights>
<bslsk05>
'Made in Abyss Season 2 OST: 15.Gravity ft. Arnór Dan (Lyrics)' by Dan (00:05:10)
<gog>
my kid and i ran into one of her teachers and she started speaking icelandic at me and i was able to hold the first third of the conversation in it :P
<gog>
then it fell apart
<zid>
kid?
<zid>
this is news to me
<GeDaMo>
gog has a goat? :|
<zid>
ikr?
<zid>
weird how it's never coem up before
<zid>
I wasn't aware iceland had non-primate mammals anywhere either
<zid>
GeDaMo can you stop putting stuff through my letterbox btw
<zid>
with no regard to whether it is voiced or unvoiced!
<heat>
personally i like compress(1), it's perfect
<heat>
ddevault, btw I do COW on everything (in fork), and I don't preemptively un-COW anything, because that's just kind of guesswork
<heat>
I believe other systems do the same
<zid>
If you want to preemptive cow stuff, use ForkEx that has hints
<zid>
duh
<heat>
the way I COW is that everything that *was* mapped stays mapped, read-only. ofc i don't copy read-only pages, how could those get COW'd?
<heat>
POSIX kind of has the underlying notion that everything MAP_PRIVATE is COW, even without fork
<heat>
so e.g a read-only MAP_PRIVATE | MAP_ANON mapping is just temporarily mapping the zero-page COW until I mprotect it and fault some real memory in
<heat>
and the same thing applies for a file
<gog>
moo
<sham1>
OOM
<mjg>
ooooo
<mjg>
hh
<heat>
hello mjg
<heat>
what brings you here
<mjg>
big sad
<heat>
are you large sadness
<mjg>
xxl
<mjg>
i came up with a great idea
<mjg>
and then i found out linuxi s already doing it in some places
<mjg>
if i can guarantee mntput_no_expire will always be called outside of rcu section, i can use the trick there to whack the barrier
<heat>
synchronize_rcu is slow though?
<heat>
why tf would you want to do that
<mjg>
it is slow but almost never needed
<mjg>
in this case it would only happen when whacking a mount point
<mjg>
comparatively, __legitimize_mnt is called every time a lookup succeeds
<mjg>
which is liek billions of times vs one
<heat>
hmm ok
<mjg>
thank you for your approval
<mjg>
kind of weird it was not sorted out already, but then again, tons of other things were not either
<heat>
i really need rcu
<mjg>
use linux
<heat>
no
<heat>
i'll probably write my own and LGPL it
<mjg>
implement rcu and make your dtrace port use it
<heat>
fuck no
<heat>
dtrace sucks ass fuck dtrace
<mjg>
you are one finicky genz aren't you
<heat>
yes
<mjg>
going from porting dtrace to saying it fuck it overnight
* mjg
totally expects heat to use openbsd next week
<heat>
i may port it one day, but that day is not today, or probably this week
<mjg>
or is the hate wagon just one way?
<heat>
you know what I kind of like? perf_event_open
<heat>
even though it's stupidly complex to grok
<mjg>
i don't know it, it probably sucks tho
<heat>
see your local manpage
<heat>
you dirty RHEL user
<mjg>
if there is a linux-specific syscall, you can blindly assume it is bad
<mjg>
they implement first and damage-control later
<heat>
well, there's no perf_event_open2 yet
<heat>
sooo
<heat>
maybe this one's good
<mjg>
i think nfs code would leave the kernel with a semaphore still locked
<mjg>
which would get unlocked when nfsd decided it wants to exit
<mjg>
that was funny
<heat>
that's cool
<mjg>
i remember a guy asking what's wrong with returning to userspace with a mutex
<heat>
there's nothing wrong as long as you have a way to auto-unlock it
<heat>
i.e on ->release()
<SGautam>
Anyone else experience massive lag after Windows update? This has happened every time and I've to reinstall the GPU drivers for it become normal.
<gog>
never update
<SGautam>
nice suggestion
xenos1984 has quit [Ping timeout: 245 seconds]
DoubleJ has quit [Quit: Not all those who wander are lost]
xenos1984 has joined #osdev
Yoofie has quit [Ping timeout: 245 seconds]
<mjg>
big brain partitioning: /dev/nvme0n1p3 20G 507M 19G 3% /boot
<mjg>
while: /dev/nvme0n1p4 30G 56K 28G 1% /home
<FireFly>
yeah that is.. novel
<FireFly>
why 20G /boot :p
<mjg>
i'm guessing someone got burned by deleting old kernels
<mjg>
:A
<heat>
linux kernel
<Lareina>
mjg: lol
<heat>
this does remind me i haven't used my module system in a long time
danilogondolfo has quit [Quit: Leaving]
<gog>
khello
<heat>
hi gog
<heat>
how r u
<sham1>
"fish" giveTo: gog
xenos1984 has quit [Ping timeout: 258 seconds]
<heat>
gog = giveItem "fish" gog
<sham1>
That's no smoltalk
<heat>
haskell mofo
<sham1>
Haskell is pessimal
<pie_>
yeet
<mjg>
lol at haskell for real
<sham1>
Haskell: Blub Paradox
<gog>
i don't know what this crap is
<gog>
haskel or whatever
<gog>
i don't wat haskell give me haddock
<heat>
haskell is good
<mjg>
haskell has fearless concurrency
<heat>
if you're not configuring your desktop environment in haskell what the fucka re you doing
<heat>
xmonad 4 life motherufcksre!!!
<mjg>
OH
<mjg>
do you know how to spot a new college grad
<mjg>
fuck writes in haskell
<mjg>
the functional folk are not anywhere near as loud as the rust ones
<heat>
half of IRC users are highly profficient in haskell and rust
<bslsk05>
'WSL CRTerm test (with curvature shader).' by Siddharth Gautam (00:01:49)
<SGautam>
*it, not I
<SGautam>
ah, youtube messed up the compression due to the noise.
<geist>
yah cool retro term is great
<geist>
i have old older computer with a smallish LCD acting as a fake term with that
<geist>
the effect is pretty good
<SGautam>
this is not cool retro term :)
<heat>
mjg, would you believe it got slower? lol
<SGautam>
i tried running Cool-Retro-Term on Win32 it simply wouldn't compile, and when it did it just crashed, i guess I didn't bother much trying to fix Qt linkages, eventually I thought it would be fun to write a terminal emulator but it is not exactly fun.
* gog
prr
vai has quit [Ping timeout: 260 seconds]
<gog>
hi
<gog>
hihihihih
<SGautam>
hello
<heat>
ah shit i see why
<gog>
repessimization
<heat>
this is a lockless singly-linked-list and i accidentally used the lockless "atomic" variants
<gog>
atomic dog
<SGautam>
Is the difference between mutex and an atomic purely on the level at which they operate?
<gog>
i thought atomic meant an operation runs to completion or it doesn't, no partials or side-effects
<heat>
it also doesn't race with any other operation going on in the CPU
<heat>
two atomic adds in two different cores will never race with each other
<mjg>
heat: ?
<mjg>
patch mofo
<mjg>
one thing you may do is add a sysctl to flip between imlementations at runtime
<mjg>
to rule out funzy problems
qubasa has quit [Ping timeout: 246 seconds]
<mjg>
oh 00:41 < heat> this is a lockless singly-linked-list and i accidentally used the lockless "atomic" variants
<mjg>
lmao
<mjg>
a geezer told me atomics are chip tho
<mjg>
so don't worry about it
<mjg>
gog: the term atomic is overloaded
<gog>
i'm working on the database definition
<mjg>
gog: mere aligned mov of 8 bytes from memory to a register is considered atomic in the sense it is all or nothing
<gog>
yes
<mjg>
at the same time lock xadd is atomic in the sense you are guaranteed to see a sane value, but you are also suffering a synchro cost with other cpus
<mjg>
which is TURBO FUCKI^WEXPENSIVE
<mjg>
basically anything with the lock prefix and xchg with a memory oeprand (which has an impliedl ock prefix) == atomic and SLOW AF
<mjg>
anything else "atomic" is the same as regular op
<gog>
hmm
<mjg>
it's mostly about preventing the compiler from fucking with codegen
<heat>
i can't use f_llist before the file is dead (aka ref = 0)
<heat>
so the idea doesn't work
<mjg>
right
<mjg>
's what i asked
<mjg>
00:55 < mjg> heat: is that f_llist really safe to use an arbitrary point? i think there was a list like htat but i can't recall if that's the one
<heat>
yeah
<mjg>
lemme check the file
<mjg>
maybe there is a free sucker in there
<heat>
obviously if the same struct file were in multiple fd tables you'd race
<mjg>
the struct is big af
<heat>
REAL kernels have BIG structs
<heat>
the freebsd ""kernel"" is a just a toy
<mjg>
union {
<mjg>
struct llist_nodef_llist;
<mjg>
unsigned int f_iocb_flags;
<mjg>
struct rcu_head f_rcuhead;
<mjg>
};
<mjg>
that's the union i remembered
<mjg>
well i'm gonna write my patch then
<mjg>
no issues of that sort, innit
<heat>
something I didn't address is cond_resched shenanigans
<heat>
which you will have to deal with
<heat>
i think
k0valski188912 has quit [Quit: Ping timeout (120 seconds)]
<heat>
REAL kernels never "preempt"
<heat>
what the fuck is preemption anyway? it's just a massive con
* geist
cuts heat off right there
<heat>
real talk i've never actually benched it
<heat>
should be a fun test
<gog>
ima stop you righ tthere
<mjg>
btw heat, i have a sketch how to ditch that cmpxchg16b in kmem alloc
<mjg>
*and* support interrupts
<gog>
i know what can help us all
* gog
puts on a singsongy voice
<heat>
why do you want to ditch it?
<gog>
depessimization
<mjg>
heat: slow af
<heat>
you didn't prove it's slower than the alternative
<heat>
and the people back then did bench it
<heat>
it was faster
<mjg>
guy replaced interrupt disablement (which is turbo slow) with cmpxchg16b (again slow)
<mjg>
if he had preemption disablement a'la bumping a counter and branching
<mjg>
it would be a different manner
<mjg>
matter
<mjg>
but he could not as is due to the need of this code working with interrutps
<mjg>
maybe you are reading too much into the commitm essage
<heat>
right, but this code needs to work with ints
<mjg>
i can make it work with ints without disabling them
<mjg>
or using cmpxchg16b
<mjg>
or at least seems so so far
heat has quit [Remote host closed the connection]
heat has joined #osdev
<mjg>
key is to make non-irq variant transactional with a series of compiler barriers
<mjg>
and stores to per-cpu state
<mjg>
then you can recognize you interrupted the fucker and roll it back
<heat>
the cmpxchg idea is already kinda transactional
<mjg>
yes but slow af
<mjg>
my code will add some stores
<heat>
are you sure that's faster?
<mjg>
not ZERO COST ABSTR^WIDEA but better
<mjg>
ye the cpu can mostly parallelize them
<mjg>
's liek 1-2 cycles
<mjg>
all i need is for the cpu to pretend they happen one by one if an interrutp occurs
<mjg>
and tis already guaranteed
<mjg>
however, my preferred plan of action instead of rolling wich mcgyver shit is to have a variant which does not work with interrupts
<mjg>
life would be better for everyone
<heat>
i don't think the change to reduce the kmalloc min align from 128 on arm64 has been merged yet
<heat>
it has been like, what, 8 months?
<heat>
so good luck have fun
<mjg>
that's a massive hit or miss mate
<geist>
this sounds very x86 centric
<gog>
reality has an x86 bias
<mjg>
:)
<mjg>
it very much is, yes
<mjg>
you may notice the non-hack variant is not though
<geist>
was gonna say the stores and the chopping thing, but actually i guess even a weak memory model like arm and riscv has to maintain that too
<geist>
ie an irq happens between two stores
<heat>
somehow alpha flips you off here
<mjg>
code executing on one cpu is guaranteed to see a sequentially consistent state