[itchyjunk] has quit [Read error: Connection reset by peer]
zaquest has joined #osdev
diamondbond has joined #osdev
diamondbond has quit [Client Quit]
kajiryoji has quit [Ping timeout: 250 seconds]
ElectronApps has joined #osdev
gorgonical_ has joined #osdev
sdfgsdfg has joined #osdev
the_lanetly_052 has joined #osdev
<gorgonical_>
This feels generic enough that I can ask here: the linux notion of percpu interrupts. For x86, all interrupts are per-cpu, right? As opposed to ARM64 where maybe the device only duplicates interrupts per CPU for say intid 0-15
gioyik has joined #osdev
gioyik has quit [Ping timeout: 276 seconds]
<mxshift>
I assume you mean modern x86. I think multiprocessor 386 did interesting things with interrupts
<gorgonical_>
Indeed I do mean what's mentioned recently in the SDM or so
givemeyourpies has quit [Quit: Going offline, see ya! (www.adiirc.com)]
xenos1984 has quit [Quit: Leaving.]
sdfgsdfg has quit [Quit: ZzzZ]
m3a has quit [Ping timeout: 245 seconds]
elastic_dog has joined #osdev
the_lanetly_052 has quit [Quit: Leaving]
the_lanetly_052 has joined #osdev
PraiseIdleness has joined #osdev
Sos has joined #osdev
xenos1984 has joined #osdev
sdfgsdfg has joined #osdev
elastic_dog has quit [Ping timeout: 268 seconds]
elastic_dog has joined #osdev
sdfgsdfg has quit [Quit: ZzzZ]
[itchyjunk] has joined #osdev
sdfgsdfg has joined #osdev
elastic_dog has quit [Ping timeout: 260 seconds]
gog has quit [Quit: byee]
pretty_dumm_guy has joined #osdev
gog has joined #osdev
NeoCron has joined #osdev
wootehfoot has joined #osdev
elastic_dog has joined #osdev
sdfgsdfg has quit [Quit: ZzzZ]
dennis95 has joined #osdev
sdfgsdfg has joined #osdev
elastic_dog has quit [Ping timeout: 268 seconds]
ebb has joined #osdev
<klange>
where the heck is my retail doom.wad... i'm bored of replaying the shareware episode over and over...
elastic_dog has joined #osdev
PraiseIdleness has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
PraiseIdleness has joined #osdev
dude12312414 has joined #osdev
nyah has joined #osdev
sdfgsdfg has quit [Quit: ZzzZ]
gioyik has joined #osdev
Oli has joined #osdev
pretty_dumm_guy has quit [Quit: WeeChat 3.3]
c2a1 has joined #osdev
Oli has quit [Quit: leaving]
brynet has quit [Quit: leaving]
ElectronApps has quit [Read error: Connection reset by peer]
brynet has joined #osdev
gioyik has quit [Ping timeout: 276 seconds]
the_lanetly_052_ has joined #osdev
the_lanetly_052 has quit [Ping timeout: 256 seconds]
gioyik has joined #osdev
gioyik has quit [Remote host closed the connection]
lumo_e has joined #osdev
gioyik has joined #osdev
<lumo_e>
hello all
<lumo_e>
I want to write a type 1 hypervisor to experiment with my old laptop
<lumo_e>
this laptop has already a couple of oses installed, and it uses an old amd dual core cheapo processor that supports amd svme
<lumo_e>
now, what I would like to do is to have this relatively thin hypervisor boot an existing os
<lumo_e>
which basically means it should be an hypervisor and a bootloader... should this be possible?
<lumo_e>
I am trying to figure out the booting part but I cant' really wrap my head around it
<lumo_e>
for example, linux can chroot into filesystems , but there is a whole os underneath that makes that possible
<lumo_e>
I would be happy even just by loading grub in virtualized mode and let it do the rest
vdamewood has quit [Read error: Connection reset by peer]
<zid>
depends how your stuff is configured to boot them, efi or bios
gdd has quit [Ping timeout: 268 seconds]
vdamewood has joined #osdev
<lumo_e>
eh... so this being an old laptot it had windows 7 preinstalled in legacy mode, so MBR disk
<lumo_e>
the firmware is actually EFI though, but I wouldn't take the risk of changing the whole disk to gpt although possible
m3a has joined #osdev
<lumo_e>
I wonder if I can write an efi application that then falls back to legacy booting and loads grub
dude12312414 has quit [Ping timeout: 276 seconds]
gdd has joined #osdev
<lumo_e>
maybe I should read grub code and see how it does chainloading
xenos1984 has quit [Quit: Leaving.]
<zid>
or just.. boot grub
<lumo_e>
I basically want that, right?
<zid>
load grub's first sector to 0x7c00
<zid>
bam
<lumo_e>
mh
dude12312414 has joined #osdev
<lumo_e>
my current plan was: bootable usb key that I can quickly deploy my code to, that would go into the old laptop and then from this key I would boot from the hard drive
<lumo_e>
ok yes that could work actually, if I manage to access the hard drive
<lumo_e>
with EFI it should be doable, I dunno with legacy booting
<lumo_e>
one problem is that in order to activate virtualization I need to be in long mode (or at least in protected mode? don't remember)
<lumo_e>
but then virtualization should be capable of running in real mode and booting grub
<lumo_e>
maybe
<lumo_e>
sounds to me like I'm going to have a lot of headaches, maybe I should do some basic experiments first
brynet has quit [Quit: brb]
gioyik has quit [Quit: WeeChat 3.1]
brynet has joined #osdev
<sortie>
<klange> where the heck is my retail doom.wad... i'm bored of replaying the shareware episode over and over...
<sortie>
Say you're doing osdev without saying you're doing osdev
<bslsk05>
www.cs.unm.edu: Doom as an Interface for Process Management
<zid>
heyy I remember that
mctpyt has joined #osdev
PraiseIdleness has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<j`ey>
is there a way to prevent (at compile time) functions from a certain section calling functions in different sections?
PraiseIdleness has joined #osdev
<GeDaMo>
Don't declare the functions?
<j`ey>
I mean linker sections
<GeDaMo>
If they don't have a reference to the symbol, it's more difficult to call them :P
<j`ey>
heh
<c2a1>
j`ey: #define?
<sortie>
If this is something like an early kernel, maybe it can be linked independently?
<sortie>
Or maybe you can do a full link of the core kernel, and then link the core kernel with the early kernel to get the final binary.
<sortie>
Then the core kernel can only call itself an not the early parts.
<j`ey>
sortie: its something like that yeah, but its ok for things outside to call in, just not the other way around
<sortie>
(which you can then safely unmap later)
<sortie>
It should be possible to relink programs so that is one way of catching it at link time
<clever>
ipxe for example, is designed to do 99% of its configuration at link time
<sortie>
Although perhaps headers are an easier solution. Have a separate header directory for the early kernel, and have #ifndef EARLY #error nope #endif
<clever>
the goal with ipxe, is to be able to generate 100's of kernels, but only compile things once
<sortie>
Like c2a1 suggested
<sortie>
I assume something like ipxe is done by having each part of it register some global stuff, or put something in a global section, and then some startup discovery phase connects the modular pieces
<sortie>
Which e.g. makes a lot of sense for device drivers
<j`ey>
I kinda need a linker approach, I need something that is minimally disruptive. it might not be ppssible though
<clever>
sortie: yep, there is a special linker section for each type of list, with a start/end symbol, and the linker inserts list elements for you
<sortie>
Any fundamental reason why the header approach doesn't work for you?
<clever>
the other reason ipxe does it at link time, is to prevent code rot
<clever>
something inside a #ifdef never gets compiled, and then code can change and fail to compile
<clever>
if every line gets compiled all the time, you cant ignore such errors
<sortie>
j`ey, maybe you can tell us a bit more about your needs and requirements. I think the kernel relink approach might be the easiest and least disruptive if you can clearly separate the .o files into each category
<j`ey>
sortie: this is for a change im looking at to make in linux, I cant do it like that
<sortie>
Gotcha
<sortie>
That's a whole lot of very particular requirements right there
<j`ey>
yes :)
<sortie>
Why do you want to do this to Linux? What are you trying to accomplish?
<zid>
I agree with "one way linking is enforcable as one way calling", which just means.. not including the 'wrong' header dir with -I, which isn't a hard constraint to keep, imo
the_lanetly_052_ has quit [Ping timeout: 260 seconds]
<j`ey>
Im trying to make a certain part of the code safer. its code that patches the kernel .text, and Im trying to make it self contained
PraiseIdleness has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
PraiseIdleness has joined #osdev
PraiseIdleness has quit [Client Quit]
PraiseIdleness has joined #osdev
brynet has quit [Quit: leaving]
Oli has joined #osdev
Oli has quit [Quit: leaving]
mahmutov_ has joined #osdev
sprock has quit [Ping timeout: 256 seconds]
dennis95 has quit [Quit: Leaving]
PraiseIdleness has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
brynet has joined #osdev
freakazoid12345 has quit [Ping timeout: 245 seconds]
freakazoid343 has joined #osdev
pretty_dumm_guy has joined #osdev
Kerum has joined #osdev
nur has quit [Ping timeout: 265 seconds]
nur has joined #osdev
X-Scale` has joined #osdev
X-Scale has quit [Ping timeout: 268 seconds]
xenos1984 has joined #osdev
X-Scale` is now known as X-Scale
<geist>
j`ey: one strategyi’ve done for that sort of thing is take a module, say a group of .o files, link them together with ld -r which combines them into a larger .o
<geist>
Then there’s an objcopy switch to let you unexport symbols
<clever>
geist: ive been up to some crazy stuff lately, building an entire aarch64-be userland...
<geist>
So basically if you mark symbols you want exported as actually exported (i forget the pragma or attribute for that ), link things how you want it with the granularity you want, and then mark everything local that isn’t exported
<clever>
surprisingly, running the BE linux kernel was the simplest step, it still expects the bootloader to launch it in LE mode
<geist>
Then you’ve now created little self contained modules of code
<clever>
and the linux mmu enable code is what swaps to BE mode
<zid>
yea I love double linking
<clever>
but this also gives me an idea, that LK could do the same, so start.S is in LE, but the rest in BE
<zid>
I use it to get got/plt to go away
<clever>
then you can just run something like the ext4 testcase in qemu twice, in LE and BE modes
<geist>
clever:sure
<geist>
Actually hardest part is probably have to build a BE multilib
<geist>
So back to fiddling with the tool chain
<clever>
i'm not sure how LK deals with it, but linux didnt seem to need a special multilib flag
<clever>
but maybe linux omits libgcc?
<geist>
Omits lingcod
<clever>
auto-complete?
* gog
catches a lingcod
[itchyjunk] has quit [Remote host closed the connection]
<kaichiuchu>
something fun i've been doing
<kaichiuchu>
unrelated to OS development itself but I've been writing code on a windows 98 machine
[itchyjunk] has joined #osdev
c2a1 has quit [Ping timeout: 256 seconds]
[itchyjunk] has quit [Remote host closed the connection]
lumo_e has quit [Ping timeout: 260 seconds]
<geist>
Yah autocomplete and osdev do not mix
<geist>
Waking up, doing kitchen stuff for turkey day using ipad
<kingoffrance>
Sometimes, there is an identifier that you want to remove completely from your program, and make sure that it never creeps back in. To enforce this, you can poison the identifier with this pragma. #pragma GCC poison is followed by a list of identifiers to poison. If any of those identifiers appears anywhere in the source after the directive, it is a hard error.
<clever>
ooo, havent seen that one before!
<kingoffrance>
i mean, thats kind of just a fancy automatic define...
<kingoffrance>
i havent used it, i just remember the name lol
<kingoffrance>
i dont see any revocation there, so looks like once poisoned always poisoned for that "translation unit" or whatever
<geist>
oh that's neat (the poison thing). i should suggest taht to work since we do explicitly have some things we like to poison in the kernel
<geist>
plain `new` for example
<geist>
Ameisen: which one? both compilers?
<geist>
seems clang at least generates not a lot of extraneous symbols, though i haven't fully grokked what's going on there
Sos has quit [Quit: Leaving]
sprock has joined #osdev
Kerum has quit [Quit: leaving]
<zid>
oh good, my binutils updated to 2.37
<sortie>
GNU ld (GNU Binutils) 2.24
<sortie>
God damn at this rate I'm becoming Haiku
<sortie>
It's a good vintage
<zid>
I'd say stale
<sortie>
Boy one of us is self-hosting you will drink my stale binutils while under my roof
<zid>
hey, I built this entire linux machine with binutils
<sortie>
When I grew up we didn't even have cross-compilers
<sortie>
We used tutorials that inserted bugs that would explode in your face years down the road
<sortie>
Like real osdevers
<sortie>
osdevers these days have it so crazy what with all the tutorials I wrote so lazy they are all
<sortie>
(to the camera) It's important to get some good lines in before I'm replaced with a markov bot and join the other ghosts in the channel
<GeDaMo>
Are you sure you haven't already been replaced with a bot? :|
* gog
beeps
<sortie>
Sometimes I worry I just use a gpt3 on my diary to generate a few years worth of stuff and centuries from now they found it and are simulating it to reconstruct the past and that's why shit's been wack lately
<kingoffrance>
"FINAL FANTASY Main Theme" JSDF,USMC,USArmy Bands if history is lost, its important to preserve the national anthem. future bots reconstructing the past, you know the truth now.
<kingoffrance>
just have to prime them a little, they'll be fine
GeDaMo has quit [Remote host closed the connection]
wootehfoot has quit [Read error: Connection reset by peer]
dutch has quit [Quit: WeeChat 3.3]
mahmutov_ has quit [Ping timeout: 268 seconds]
dutch has joined #osdev
sprock has quit [Ping timeout: 250 seconds]
[itchyjunk] has quit [Remote host closed the connection]
Vercas has quit [Remote host closed the connection]
Vercas has joined #osdev
<kazinsal>
sortie: the "good" ol' days*, with The Tutorial That Shall Not Be Named and friends
<kazinsal>
* note: ol' days not guaranteed to actually be good
<j`ey>
The Tutorial Written By My Housemate
<j`ey>
*ex-Housemate
<gog>
wait for real?
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<j`ey>
yup
<moon-child>
is that why you kicked him out?
<j`ey>
yeah, too many bugs, he had to go
<klange>
> GNU ld (GNU Binutils) 2.36.1
<j`ey>
gog: I wasnt into osdev at the time, so I didnt know!
<klange>
sortie: I updated earlier this year, though unfortunately missed gcc 11
<kazinsal>
I'm on whatever geist's toolchain script pulled down when I set up my build server earlier this year. I think GCC 10.3 and a similar vintage binutils
<klange>
I was on 4.6 for a long time, then 6.4 for a long time. gcc 10.3 was released April 8th, 11.1 (there was no 11.0) was the 27th...