<mrvn>
zid`: you need rsp1 in the TSS too. Only way to handle a stack/double fault.
<mrvn>
.oO(And one TTS per core and multiple GDTs at some core count)
<mrvn>
Poll: Do you have one GDT per core or a single GDT with many TSSes?
elastic_dog is now known as Guest25
Guest25 has quit [Killed (cadmium.libera.chat (Nickname regained by services))]
elastic_dog has joined #osdev
lanodan has quit [Ping timeout: 248 seconds]
craigo has quit [Ping timeout: 268 seconds]
elderK has joined #osdev
GeDaMo has joined #osdev
slidercrank has joined #osdev
Arthuria has quit [Remote host closed the connection]
[itchyjunk] has quit [Read error: Connection reset by peer]
<geist>
i've generally done the latter, but both work about the same
<mrvn>
any systems with too many cores for a single GDT?
<Mutabah>
hmm... 64 in a threadripper
<Mutabah>
Which is pushing into the numbers where you might need a second GDT
<mrvn>
Yeah, close enough that one should care about the GDT overflowing.
<Mutabah>
Hmm.. is there an upper limit on the GDT size? Excluding the 16-bit limit field?
<Mutabah>
If not, then the limit is ~4090 cores :)
<mrvn>
why should there be a second limit? Amd is it 16-bit?
<Mutabah>
(4096 16 byte GDT entries, but only the TSS is 16 byte)
<Mutabah>
I mean: Is there another limiting factor to the GDT size than just the 16 bits available for the "limit" field on the gdt pointer (and in the selectors)
<mrvn>
Looks like you really can use all of 64k.
<mrvn>
Why did I think you only had 256 entries?
<geist>
really at the point at which you're worried abut 256+ or so cores, you had better have a lot more ducks in a row that just the size of the GDT
<zid`>
the gdt limit is the only real limit yea, all the selectors are masked to the same size elsewhere like CSTAR etc
<mrvn>
can the TSS be in the LDT?
<zid`>
seems like a relativley simple whitepaper too, extended gdtr, check with cpuid, enable in control reg, lgdt now reads a 20 bit limit, blah blah
<mrvn>
4 extra bits? You want to go from 80 to 84bit for the descriptor?
<mrvn>
zid`: Instead of extending the limit why not make the limit be multiples of descriptor?
CaptainIRS has quit [Quit: You have been kicked for being idle]
<mrvn>
most people will fail at the first question
<mrvn>
observation: There is only one case with "const" but "const" should be the default because the compiler will complain when it shouldn't.
<GeDaMo>
I don't even know what "perfectly forwarded" means :|
<mrvn>
GeDaMo: means rvalues are forwarded as rvalues and lvalues are fowarded as lvalues and preserves constness.
danilogondolfo has joined #osdev
<mrvn>
"This overload makes it possible to forward a result of an expression (such as function call), which may be rvalue or lvalue, as the original value category of a forwarding reference argument."
<zid`>
Not even the gcc authors do, dw, they just nod and write stuff praying nobody notices nobody knows what the actual behavior should be
<zid`>
and*
<mrvn>
Without it you have to write (up to?) 6 cases to forward an argument. 36 with 2 arguments, and so on
<immibis>
why would you need a 20-bit GDT limit if you can give each CPU a separate GDT?
<mrvn>
so you don't need to give each CPU a separate GDT.
<zid`>
I have absolutely no idea.
<mrvn>
But I think the choice they made to extend the GDT is the LDT.
<mrvn>
Has anyone used an LDT? Call gates? Task Gates?
fedorafan has joined #osdev
<Mutabah>
I think I once used a LDT...
<Mutabah>
and I used a task gate for #DF support in 32-bit mode
mlombard has quit [Quit: Leaving]
SGautam has quit [Quit: Connection closed for inactivity]
<zid`>
I saw a picture of an LDT once
elderK has quit [Quit: Connection closed for inactivity]
<Amorphia>
the trans agenda is plushy sharks and taking over the osdev scene
<lav>
progarm aka. john petrucci's limb
bradd has quit [Ping timeout: 268 seconds]
<bnchs>
i'm not trans but.. i would like stripey socks and plushy shark
<Amorphia>
everybody wants this
<gog>
brb rebot
gog has quit [Quit: byee]
<Amorphia>
hey lav remember that code you sent me ages ago
<Amorphia>
some UEFI thingy
<Amorphia>
i wanna maybe try and make it worky
<lav>
right
<zid`>
can you make me worky after
<Amorphia>
ld: cannot open linker script file /usr/lib64/elf_x86_64_efi.lds: No such file or directory
<Amorphia>
i am missing a thing
<Amorphia>
how i get
gog has joined #osdev
<zid`>
that's a linker script
<zid`>
you can tell because it says linker script
<gog>
hi
<zid`>
Hello gog.
<Amorphia>
ok but where do i get this linker script
<lav>
idk iirc only thing i installed for that was gnu-efi, idk tho
<zid`>
if it's in /usr/lib64 I assume it's part of some system package from some distro
<gog>
yeah it's in gnu-efi
<zid`>
like gnu-efi for example
<zid`>
yea google confirms
* gog
efi expert
<zid`>
gnu-efi/gnuefi/elf_x86_64_efi.lds · Go to file T · Go to line L · Copy path · Copy permalink.
<Amorphia>
but i already have that installed :<
<zid`>
first result on the googs
<zid`>
well, make a symlink or adjust the path in the build
<zid`>
so that it finds it
<Amorphia>
mkay
<zid`>
cus it ain't right now
<gog>
i should update my efi tutorial
<gog>
it no longer needs gnu-efi
<Amorphia>
ahhh okay mine is in /usr/lib not /usr/lib64
<Amorphia>
:O it compiled
<Amorphia>
poggies
<gog>
poggies
gog is now known as pog
* Amorphia
pogs pog
* pog
flips
* lav
is apog at gog
<Amorphia>
Could not prepare Boot variable: No such file or directory <-- output of 'efibootmgr -c'
<Amorphia>
am i using this command wrong
<Amorphia>
if i run it without args it gives me a buncha boot numbers
<Amorphia>
like numbered boot item thingies
<lav>
i have no idea i just chucked it in /boot and added the entry to grub
<Amorphia>
Note: efibootmgr requires that the kernel support access to EFI non-volatile variables through /sys/firmware/efi/vars or /sys/firmware/efi/efivars/.
<Amorphia>
hmmmmm
<Amorphia>
lav: what is GRUB
<lav>
grand unified boot loader
<Amorphia>
yeah i know but do we still use that in the bright new land of UEFI
<Amorphia>
oh yeah we do
* Amorphia
has grub stuff in /boot
<lav>
you just bokt the linux efistub directly?
<lav>
yeah grub2 it's called
<lav>
s/k/o/
<lav>
you add it as a chainloader in this case iirc
<Amorphia>
should be possible to run it directly from the EFI boot menu tho
<Amorphia>
surely
<lav>
sure prolly
* Amorphia
will reboot and try poking thins in boot menu
<lav>
i actually chain refind and grub because grub has theming and other pog things
<Amorphia>
whats refind
<lav>
boot manager thing i use because the apple one kinda sucks
bitterlollipop has quit [Quit: system sleep - ZZZzzz...]
fedorafan has quit [Ping timeout: 248 seconds]
<dzwdz>
it's great on pcs too
lanodan has joined #osdev
<dzwdz>
it makes even the weirder dualbooting setups just work
<dzwdz>
tm
fedorafan has joined #osdev
FreeFull has joined #osdev
terminalpusher has joined #osdev
<pog>
oops
<pog>
undefined behavior
<pog>
:'D
<Amorphia>
pog: do we need to define your expected behaviour more strictly
<pog>
yers
* Amorphia
draws up a program for pog to follow
<Amorphia>
item 1) do as I say at all times
<mrvn>
2) Do what I mean, not what I say.
<Amorphia>
mrvn: lmao i was just thinking that
<pog>
>:3
<pog>
unknown parametesr, shutting down
<lav>
tbh they should make a compiler that just does the Right thing on UB
<pog>
yes
<pog>
i need to re-order the way i load my kernel
<levitating>
lav: Rust?
<pog>
so i can actually collect boot data correctly
<zid`>
booty data
<pog>
RUST RUST RUST RUST
<levitating>
1515 pog: so i can actually collect boot data correctly
<pog>
yes
* lav
oxidizes
* pog
reduces
<lav>
wanna form a bond? ><
<levitating>
What kind of bond?
<mrvn>
covalent
<lav>
james
<levitating>
james
<lav>
bond
<lav>
though actually, shouldn't it be a co-lav-ent bond?
<zid`>
struct booty_data { struct e820 *e; .. };
<zid`>
I need more things to fill my booty
<mrvn>
e820 is the memory map, right? Use grub and multiboot
fedorafansuper has joined #osdev
fedorafan has quit [Ping timeout: 252 seconds]
<mrvn>
lav: have you asked chatgpt?
<lav>
i asked catgpt, it gave me a very insightful answer
<pog>
meow
<lav>
meow
<mrvn>
Wuff, Wuff!
<pog>
yay i got it to work but i don't like it
<lav>
I'll be off IRC for a few days. see y'all then :3
<levitating>
lav: I think covalent is correct.
<lav>
it was a joke about my nick
<levitating>
oh
<levitating>
*wooos*
lav has quit [Quit: So long, and thanks for all the fish!]
<pog>
mewwww
<zid`>
mewsh
<pog>
:o it worked
<pog>
0x464c457f
<pog>
\7f E L F
<Amorphia>
pog: that's pog
<Amorphia>
pog: did i ever tell you about the time me and some IRC pals had a competition to see who could write the smallest binary to print hello world
<Amorphia>
we had an a.out category and an ELF category