<bslsk05>
www.theregister.com: Intel and AMD form advisory group to reshape x86 ISA • The Register
<heat>
finally, we'll be able to take bad architectural decisions, together
<GeDaMo>
"To support this goal, the duo has solicited the help of Broadcom, Dell, Google, HPE, HP, Lenovo, Meta, Microsoft, Oracle, Red Hat, as well as individuals, including Linux kernel-dev Linus Torvalds and Epic's Tim Sweeney."
<nikolar>
Ermine: more commands?
<nikolar>
heat: at least they'll be the same across the board :P
<the_oz>
"We'll have, not only will we have the benefits of performance, flexibility and compatibility across hardware, we'll have it across software, operating systems and a variety of services," Intel EVP of datacenter and AI group Justin Hotard told us.
<the_oz>
pack it up boys
<the_oz>
we're useless
<the_oz>
"I think this will actually enable greater choice in the fundamental products, but reduce the friction of being able to choose from those choices," echoed Norrod.
<the_oz>
>greater choice, same shit A same shit B same shit C same shit D
<the_oz>
I'm convinced journalists don't read the shit they produce
<sortie>
heat: We gotta get in on x86_64 you and me. We'll be presenting wildly opposing opinions and filibuster it to a halt.
<GeDaMo>
neXt86! :P
<heat>
sortie, do we even have wildly opposing opinions on x86?
<sortie>
heat, surely we'll disagree?
<heat>
maybe slightly, certainly not wildly
<sortie>
What's happening
<sortie>
Are we finding common ground
<sortie>
That can't be right
<heat>
tell me something you don't like about x86 which pains you deeply
<sortie>
Would you believe I actually don't know so much about x86?
<sortie>
The floating point stuff has gone quite out of control
<GeDaMo>
Different instructions for different SIMD widths
<sortie>
The sheer amount of instruction set extensions is beyond what I can remembert
<sortie>
I'm sure it's all good and fine but oh man it's a lot. I'm happy gcc and binutils takes care of it for me.
<sortie>
(besides that I gotta enable it)
<netbsduser>
people have been saying that x86 is a dead dog for over 30 years now
<heat>
sortie, i would actually, you haven't dug deep into x86 details
<heat>
my pet peeve is cr3 and ASIDs
<sortie>
I know the things I need to :)
<sortie>
I do want to spend some time one of these years reading through the intel/amd manuals and discovering what else useful exists
<heat>
they keep forcing all paging details into a single 64-bit register, which has been horribly overloaded for like 20 years
<heat>
resulting in horrible shit like: needing to drop back to 32-bit to switch paging modes; not having enough PCIDs to use them properly
<sortie>
Ah they used the lower 12 bits?
<heat>
yes
<heat>
plus some at the top
<netbsduser>
wait till you find about %satp on RISC-V
<heat>
i know about satp
<the_oz>
I don't, what's that?
<sortie>
I love our dynamic of heat actually knowing all the theory and me just yolo'ing along getting incredible results
<netbsduser>
the_oz: it's the supervisor address translation something on ricv
<the_oz>
thank ya
<sortie>
I joke but there really is just SO MUCH to learn in the realm of osdev and I just learn entire topics the moment I actually need them :)
<netbsduser>
it contains the address of the root translation table, the current ASID, and the table format mode
<sortie>
Like I just became a world expert in shutdown(8) and wall(1)
<heat>
netbsduser, if you can fit all of that shit in, great, fire, otherwise you're fucked
<the_oz>
seems it'd fit the root node under a pointer
<heat>
what i'd propose for x86 is something like a register that contains format and ASID info, then another register that contains the page table root; writes to the former wouldn't apply until you wrote to the latter
<heat>
now, obviously, intel is horrible and shortsighted, so for x86-s they had a horrible, horrible, clunky solution with MSRs for the LA57 problem
<sortie>
heat: See I was concerned about the atomic store in that case and propose a 128-bit cr3
<heat>
solving the ASID limitation would also be super important to get rid of IPIs on tlb invalidation
<heat>
unfortunately that's not workable
<heat>
you don't have 128-bit GPRs and rdmsr/wrmsr works with 64-bit registers, not 128
<sortie>
heat: We'll use SSE4 to store to cr3
<heat>
my idea had to go through MSRs
<heat>
you can't use SSE to store to control registers
<heat>
there's just no encoding for it
<sortie>
Obviously that is what I propose is a new instruction for it
<sortie>
Imagine the speed we can store to cr3 with loop unrolling SSE4
<heat>
i don't think atomicity would be a big problem as long as ints are off when you switch address spaces, which is usually the case
<sortie>
I may be trolling heat right now.
<heat>
>Imagine the speed we can store to cr3 with loop unrolling SSE4
<heat>
actually stores to cr3 are fully serializing
<heat>
BOOM
<sortie>
I realize :D
<sortie>
Writing to cr3 is probably one of the most expensive single instructions I imagine
<heat>
it's fully serializing as many other instructions are
<heat>
cpuid is actually probably the most expensive single instruction
<heat>
due to being fully serializing AND usually requiring a vmexit when under a hypervisor
<sortie>
What's expensive about it?
<sortie>
Ah def vmexit I see
<sortie>
heat: Don't say vmexit to the mirror thrice when in the dark.
<heat>
what if the mirror is a linear framebuffer?
<sortie>
You're about to find out
<sortie>
How good is your liner algebra?
<heat>
bad
<heat>
i have a thing of yearly needing to recall how to multiply matrices
<Ermine>
hi
<sortie>
Can you remember what's a column and what's a row? And which order they go in when indexing into it?
<netbsduser>
concerning ASIDs, is 12 bits really such a limitation?
<netbsduser>
i haven't implemented support for them yet
<netbsduser>
my first intuition was a CPU-local process_t *last_process_by_asid[ASID_COUNT] and when switching to some newthread and newthread->process != cpu->last_process_by_asid[newthread->process->asid], invalidate entire tlb for that asid on the core
<heat>
according to the linux people it kills the idea (of keeping a global asid for each mm) out of the gate
<heat>
that's kind of what they do, yes
<heat>
the problem is that then an arm-style tlbi global invalidation just doesn't work
<netbsduser>
to be sure, it would be better if there were 16-bit ASIDs because no one needs more than 65,000 processes
<netbsduser>
heat: well i would still allocate ASIDs globally not locally for that reason
<netbsduser>
rather than CPU-local ASID allocation which a friend proposed
<kof673>
> I'm convinced journalists # i've said many times, not to interrupt...a u.s. journalist is someone who gets paid. a professional. that's it. according to greenwald (not saying they are so great...don't follow...but that was what he said he had to do re: snowden stuff)
<kof673>
if you get paid you are a professional journalist. that's it lol
<bslsk05>
lore.kernel.org: Re: [PATCH 2/8] x86: use exit_lazy_tlb rather than membarrier_mm_sync_core_before_usermode - Andy Lutomirski
<the_oz>
"professional"
<the_oz>
4th pillar or 5th column?
<kof673>
it was just: whatever he claimed allowed him to release stuff, that a normal person could not
<kof673>
*just re:
<kof673>
had to prove he was a real journalist, which means...get paid. and people were criticizing he was profitting off of information
<kof673>
so he said...that's the only way the law lets me release that...
<kof673>
else i'm not a "journalist"
<the_oz>
*takes dollar* suddenly I have freedom of speech!
edr has joined #osdev
<the_oz>
although, wartime rules differ etc etc
leon has quit [Read error: Connection reset by peer]
leon has joined #osdev
hwpplayer1 has quit [Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4)]
orccoin has joined #osdev
Dead_Bush_Sanpai has quit [Remote host closed the connection]
Dead_Bush_Sanpai has joined #osdev
<kof673>
well, it becomes; are you being paid to say that? good. otherwise you are a dirty rotten liar lol
* kof673
zzzzzzzzzzzzzzzzzzzzzzz
<the_oz>
lol
<the_oz>
>secretly they were looking for the legal entity to sue
<the_oz>
Who should I bankrupt to starve you?
cow321 has quit [Ping timeout: 260 seconds]
karenw has joined #osdev
Left_Turn has joined #osdev
Gooberpatrol66 has quit [Quit: Konversation terminated!]
Gooberpatrol66 has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
Dead_Bush_Sanpai has quit [Ping timeout: 252 seconds]
<vai>
software has unlimitless way to fail
<vai>
I spent rebooting about 700 times my kernel/OS to make the paging work
<vai>
and so it won't crash, safeguards
Gooberpatrol_66 has joined #osdev
gareppa has joined #osdev
Gooberpatrol66 has quit [Ping timeout: 276 seconds]
gareppa has quit [Client Quit]
karenw has quit [Quit: Witty Quit Message Here]
vdamewood has quit [Ping timeout: 252 seconds]
vdamewood has joined #osdev
Arthuria has joined #osdev
Arthuria has quit [Ping timeout: 260 seconds]
cow321 has joined #osdev
vinleod has joined #osdev
vdamewood has quit [Killed (mercury.libera.chat (Nickname regained by services))]
vinleod is now known as vdamewood
emntn has quit [Ping timeout: 276 seconds]
Dead_Bush_Sanpai has joined #osdev
<sortie>
It's another beautiful day in SortixBSD.
<Ermine>
Can I suggest you GNU/Sortix?
Turn_Left has joined #osdev
bauen1 has quit [Ping timeout: 264 seconds]
Left_Turn has quit [Ping timeout: 276 seconds]
karenw has joined #osdev
Dead_Bush_Sanpai has quit [Ping timeout: 252 seconds]
spareproject has quit [Remote host closed the connection]
orccoin has quit [Ping timeout: 252 seconds]
Left_Turn has joined #osdev
Turn_Left has quit [Ping timeout: 265 seconds]
bauen1 has joined #osdev
cow321 has quit [Ping timeout: 248 seconds]
hwpplayer1 has joined #osdev
dude12312414 has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
cow321 has joined #osdev
Dead_Bush_Sanpai has joined #osdev
<netbsduser>
i'm going to migrate the slab struct into my page struct for the single-page slabs case
<netbsduser>
i've been locating single-page slabs in the direct map for years now and i have a virtually-contiguous (and sparse if necessary) vm_page_t pages[] array
<netbsduser>
so it's easy to lookup and saves some bother allocating
emntn has joined #osdev
craigo has quit [Quit: Leaving]
hwpplayer1 has quit [Remote host closed the connection]
<heat>
very linuxpilled, congrats
<Ermine>
In alternative reality there's GNU/Sortix and OnyxBSD
<sortie>
I imagine heat's parody OS of BSD would be quite terrible
<bslsk05>
datatracker.ietf.org: RFC 793 - Transmission Control Protocol
<sortie>
nikolar: I'm actually genuine surprised I don't add some randomness there. I do so many places.
<nikolar>
lol
<heat>
and rfc1122 just pats it on the back and says "yep, follow this"
<nikolar>
heat: realistically, 1s+rand() is fine
<sortie>
heat: Sure that's one algorithm for computing it. I didn't have the RTT handy when I did it.
Dead_Bush_Sanpai has quit [Quit: Dead_Bush_Sanpai]
<heat>
1s retransmission time is mindboggingly slow
<sortie>
But TCP as a protocol will cope just fine with hosts that do whatever, since it has to handle packet loss
<nikolar>
heat: eh fair enough
<nikolar>
i meant constant + noise
<sortie>
In any case, this is working as intended.
<sortie>
I'm not saying it is great. It just is. It's fine. It's good enough for now in practice. I'll improve it later.
<heat>
when i was testing around trying to max out my bandwidth with fat not-too-long pipes, i realized segments dropping is super common on a high bandwidth connection
<nikolar>
sortie: don't forget to leave todos :P
<sortie>
Oh the code has a whole bunch of those and I even document the missing aspects carefully
<heat>
also got a lot of out-of-order segments. fun stuff
<heat>
SACKing is actually super helpful cuz you don't need to grind the connection to a halt
<sortie>
> The round trip time is not estimated which prevents efficient retransmission when data is lost Retransmissions happen after a second, which means unnecessary retransmissions happen if the round trip time is more than a second.
<sortie>
It's literally documented in BUGS, heat.
<sortie>
rtfm man
<nikolar>
lol
<nikolar>
is there an ip/tcp stack one can just steal :P
<sortie>
Behold my glorious documentation.
<heat>
nikolar, kinda
<heat>
lwip would work, there are also several modifications of the BSD net stacks for userspace you could adapt
<nikolar>
lwip or some such
<nikolar>
do you happen to have links for those bsd stacks
<sortie>
You can adopt my stack too. It's ISC-licensed.
<bslsk05>
github.com: GitHub - F-Stack/f-stack: F-Stack is an user space network development kit with high performance based on DPDK, FreeBSD TCP/IP stack and coroutine API.
<sortie>
Although other ones are probably way more precise
<bslsk05>
chenshuo/4.4BSD-Lite2 - User-mode TCP/IP stack from 4.4BSD-Lite2, a companion of TCP/IP Illustrated vol. 2 (149 forks/368 stargazers/NOASSERTION)
<nikolar>
neat, thanks
<heat>
np
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
op has joined #osdev
Dead_Bush_Sanpai has joined #osdev
<Ermine>
dpdk!
<Ermine>
who's first to implement MPTCP?
<netbsduser>
heat: i suspected you would like it
<netbsduser>
it's just practical really, and i just had a look at what they call slub and it's also quite a reasonable alternative approach compared with magazines
<heat>
make sure to be BASED and add a separate struct anyway
<heat>
just alias it with struct page
Gooberpatrol_66 has quit [Quit: Konversation terminated!]
Gooberpatrol_66 has joined #osdev
<nikolar>
eww lwip uses cmake
<geist>
lwip is pretty easy to build with whatever you want
<geist>
it's not a lot of files
<nikolar>
heh fair
<nikolar>
haven't looked much
hwpplayer1 has joined #osdev
<heat>
would you prefer autoconf?
<nikolar>
can i just get a trivial make
cow321 has quit [Ping timeout: 252 seconds]
<heat>
no
<nikolar>
dang
<nikolar>
fwiw, 4.4bsd-lite2 or whatever it's called, did ship a make
<nikolar>
which worked
<Ermine>
just write a shell script
<nikolar>
Ermine: can you read the cmake and write the script for me :P
<Ermine>
no
<nikolar>
dang
<Ermine>
why would i
<nikolar>
(it was a joke)
<heat>
yeah bro i agree this make shit is bloated and sucks, please use a shell script
<heat>
POSIX sh btw, not bash, bash is bloated as well