klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
<geist> well, could boot up a new netbsd on simh and then it'd be a pretty modern environment to compile with
navi has quit [Quit: WeeChat 4.2.1]
linear_cannon has quit [Ping timeout: 255 seconds]
Matt|home has quit [Quit: Leaving]
goliath has quit [Quit: SIGSEGV]
masoudd has quit [Ping timeout: 268 seconds]
gbowne1_ has joined #osdev
gbowne1 has quit [Ping timeout: 268 seconds]
Arthuria has quit [Ping timeout: 268 seconds]
mavhq has quit [Ping timeout: 260 seconds]
netbsduser has joined #osdev
gog has quit [Ping timeout: 252 seconds]
neo_ has quit [Quit: brb]
neo has joined #osdev
Arthuria has joined #osdev
troseman has joined #osdev
troseman has quit [Client Quit]
netbsduser has quit [Ping timeout: 252 seconds]
xenos1984 has quit [Read error: Connection reset by peer]
Arthuria has quit [Killed (NickServ (GHOST command used by Guest684531))]
Arthuria has joined #osdev
xenos1984 has joined #osdev
lanodan has quit [Ping timeout: 256 seconds]
zetef has quit [Ping timeout: 268 seconds]
netbsduser has joined #osdev
lanodan has joined #osdev
\Test_User has quit [Quit: e]
terrorjack has quit [Quit: The Lounge - https://thelounge.chat]
terrorjack has joined #osdev
netbsduser has quit [Ping timeout: 260 seconds]
\Test_User has joined #osdev
Arthuria has quit [Ping timeout: 252 seconds]
netbsduser has joined #osdev
mavhq has joined #osdev
netbsduser has quit [Ping timeout: 268 seconds]
Matt|home has joined #osdev
netbsduser has joined #osdev
netbsduser has quit [Ping timeout: 268 seconds]
Matt|home has quit [Remote host closed the connection]
volum has joined #osdev
pretty_dumm_guy has quit [Ping timeout: 268 seconds]
pretty_dumm_guy has joined #osdev
netbsduser has joined #osdev
lanodan has quit [Quit: WeeChat 4.2.1]
pretty_dumm_guy has quit [Ping timeout: 240 seconds]
netbsduser has quit [Ping timeout: 240 seconds]
volum has quit [Ping timeout: 250 seconds]
volum has joined #osdev
GeDaMo has joined #osdev
lanodan has joined #osdev
netbsduser has joined #osdev
volum has quit [Ping timeout: 250 seconds]
Fingel has quit [Quit: Fingel]
bliminse has quit [Quit: leaving]
bliminse has joined #osdev
<kof673> > EMAC OE is EMAC's standard Linux distribution, based on the OpenEmbedded build framework for embedded Linux systems
<kof673> i heard you like emac, now you can emacs within emac
<kof673> so you named...your distro thing...emac...
<kof673> > Installing Linux on a very old iMac
netbsduser has quit [Ping timeout: 260 seconds]
netbsduser has joined #osdev
gbowne1_ has quit [Quit: Leaving]
zetef has joined #osdev
netbsduser has quit [Ping timeout: 268 seconds]
dsdolzhenko has quit [Ping timeout: 268 seconds]
dslaveone has joined #osdev
dsdolzhenko has joined #osdev
volum has joined #osdev
carbonfiber has joined #osdev
volum has quit [Quit: Client closed]
npc has joined #osdev
volum has joined #osdev
dslaveone has quit [Quit: Konversation terminated!]
volum has quit [Quit: Client closed]
rustyy has quit [Quit: leaving]
dsdolzhenko has quit [Read error: Connection reset by peer]
npc has quit [Ping timeout: 260 seconds]
spareproject has joined #osdev
<asymptotically> any distro can be emac if you boot with init=/usr/bin/emacs
<kof673> well there is/was a supposed systeme, so that gives 4 layers for the above scheme
op has joined #osdev
spareproject has quit [Ping timeout: 240 seconds]
<zid> I boot my windows machine with shell=balatro.exe
rustyy has joined #osdev
gog has joined #osdev
zxrom has joined #osdev
nikolapdp has quit [Remote host closed the connection]
nikolapdp has joined #osdev
npc has joined #osdev
op has quit [Ping timeout: 240 seconds]
npc has quit [Ping timeout: 240 seconds]
npc has joined #osdev
<gog> osdev?
npc is now known as Guest310
Guest310 has quit [Ping timeout: 240 seconds]
spareproject has joined #osdev
spareproject has quit [Ping timeout: 240 seconds]
npc has joined #osdev
npc has quit [Ping timeout: 240 seconds]
spareproject has joined #osdev
Left_Turn has joined #osdev
volum has joined #osdev
volum has quit [Ping timeout: 250 seconds]
<mjg> gog: gaming!
spareproject has quit [Ping timeout: 255 seconds]
navi has joined #osdev
masoudd has joined #osdev
pretty_dumm_guy has joined #osdev
FreeFull has quit []
dsdolzhenko has joined #osdev
brynet has quit [Ping timeout: 255 seconds]
volum has joined #osdev
masoudd has quit [Ping timeout: 264 seconds]
neo has quit [Read error: Connection reset by peer]
brynet has joined #osdev
<gog> mjg: i'm not aloser
dslaveone has joined #osdev
dslaveone has quit [Quit: Konversation terminated!]
<zid> I'm here on behalf of anish kapoor
<gog> hi
volum has quit [Quit: Client closed]
<Ermine> Actually, my wi-fi adapter wasn't fixed...
<Ermine> The same 'Timeout while waiting for device setup command'
spareproject has joined #osdev
goliath has joined #osdev
masoudd has joined #osdev
volum has joined #osdev
Arthuria has joined #osdev
Arthuria has quit [Ping timeout: 260 seconds]
zetef has quit [Remote host closed the connection]
spareproject has quit [Ping timeout: 255 seconds]
Arthuria has joined #osdev
op has joined #osdev
Arthuria has quit [Killed (NickServ (GHOST command used by Guest684531))]
Arthuria has joined #osdev
heat has joined #osdev
<heat> Ermine: supporting VAX on onyx tutorial: 1) know the architecture and platform 2) port it 3) deal with the ensuing type incompatibility that may arise
<heat> it wouldn't be *hard*, but it wouldn't be easy either because onyx does not run on 32-bit architectures ATM
<heat> basically three main problems: 1) sometimes size_t might represent something that was implicitly a 64-bit offset 2) fix the off_t -> off64_t horrendousness in the syscall layer 3) deal with the direct map issue
<heat> with all of this fixed it'd work pretty fucking well and it'd be pretty cool to have a VAX port
linear_cannon has joined #osdev
<Ermine> I guess it would be easier to get it running on i386 first
<Ermine> (Interestingly enough, minix can't into 64bit, while onyx can't into 32bit)
<mjg> i'm not using either
<mjg> good for me
<heat> Ermine: yes
<heat> also, musl doesn't support the VAX, neither does glibc
<heat> so you'd need to write those bits from scratch
linear_cannon has quit [Ping timeout: 268 seconds]
<nortti> has there been a vax linux port?
<heat> and the toolchain situation... no idea how that's looking for vax
<heat> i'm not sure, but it's not upstream
<mjg> heat why did you implement itanium support in qemu yet
<mjg> and then ported onyx to it
<heat> no
<mjg> instead you are watching anime
<heat> i don't watch anime
<mjg> is your ai boyfriend taking all your time
<heat> you can call me anything except an anime fan
<GeDaMo> Can qemu run on Vax?
<Ermine> gcc support is going to be useful for once?
<heat> wdym for once
<heat> gcc and LLVM are both equally useful
<Ermine> gcc support for vax*
Arthuria has quit [Killed (NickServ (GHOST command used by Guest684531))]
Arthuria has joined #osdev
<heat> i guess so
<heat> netbsd might use the vax target, i dunno what geist used for his vax porting efforts, maybe vax-elf if that's a thing
<mjg> is anime considered cringe by general genz?
<mjg> i genuinely doin't know and i'm mildly curious
<Ermine> I am genz and I play anime game
<heat> anime is considered cringe in general
<heat> unless you're on IRC
<gog> my friend and i started watching revolutionary girl utena together
<mjg> dafuq's.dat
<gog> anime
<heat> sounds like a communist anime
<heat> its not
<heat> i am disappointed
<mjg> that much i figured
<mjg> but 'liek what's the synopsis
<heat> you know there's a ww2 panzer anime right?
volum has quit [Quit: Client closed]
<nortti> I fail to see the connection to utena
<Ermine> I know there's anime about girls driving tanks
<heat> if a girls driving panzers is an anime, revolutionary communist anime isn't too far from that
<mjg> did you watch dragon ball z?
<heat> some episodes when i was a kid
<heat> but i preferred pokemon and beyblade
op has left #osdev [#osdev]
<mjg> dbz was *the* shit when i was a kid
<mjg> so funny story
<mjg> around that time i knew a guy who never seen it, i told him it's fucking amazing
<mjg> dude got convinced to watch an episode with me, so far so good
<mjg> as luck would have the episode at hand was a wtf filler
<heat> let me guess, he liked it and you said "woaaaaah bro if you liked that you might enjoy installing freebsd"
<mjg> bulma was fucking around trying to grab a dragon ball
<mjg> no fighting, nobody going super saiyan
<mjg> i was totally bummed out by how bad it was
<mjg> then the guy turned to me and asked "so you like this?"
<mjg> i did not know what to say
* Ermine wants to watch hokuto no ken
<heat> linux user tries to show dbz to his friend but it turns out widevine doesn't work on his alpine linux ppc64 setup
<mjg> i use alpine btw
<heat> x86-64 glibc linux user tries to show dbz to his friend but it turns out widevine doesn't support HD on his end so he's stuck with 480p netflix dbz
<heat> mjg but he can't show dbz to his friend because he doesn't use widevine because it's FUCKING PESSIMAL and he can't cooperate with pessimal efforts
<Ermine> widevine drm bad
<gog> mjg: high school girl discovers she's a chosen member of an elite society where they do sword fights
<mjg> 480p is high definition where i'm from
<mjg> and by that i mean the 80s
<Ermine> But anyway last time I stumbled upon drm not working I've just rebooted to binbows
<heat> i'm on windows atm, yall need something?
<heat> i can get 4K netflix
<mjg> ey heat
<mjg> when you stream shit from netflix
<mjg> do you know whose code you are using
<heat> the mjg man
<Ermine> Cool, but can you get 4K display
<heat> also BRENDAN GREGG
<heat> did you know freebsd powers netflix
* mjg burps
<heat> it's a little known fact all freebsd users tell you
<heat> the problem is finding a freebsd user
<Ermine> I have windows but no 4k or netflix
<mjg> did you know freebsd is serving about 130% of the internet?
<Ermine> where did i miscalculate
<mjg> maybe installing arch linux with an alpine vm would solve it?
<gog> i use haiku btw
<heat> alpine with a gentoo -O3 -march=native vm for glibc compat
<heat> you can also get the alpine linux + HBO max bundle
<Ermine> s/vm/chroot/
<mjg> i wonder who is gentoo doing today
<mjg> in 2005 or so it was popular with the ricing community
<heat> who gentoo is doing? no one, it's a distro
<mjg> people who have no idea about performance would compile everything with cargo culted cflags
<mjg> and assert it's fast
<mjg> if you ignore all the crashes
<heat> crashes, are they pessimal?
<mjg> only if you dump core
<heat> just like puking is taking the weakness out of your body, maybe crashing is taking the pessimal out of your program
<mjg> here is a pro tip from back in the day
<mjg> when writing a shitty one liner in bash, make sure to add even more avoidable sed and grep uses
<mjg> this increases the reliability factor
<mjg> ./custom_prog | grep crap # bad, about half of the pipeline is barely tested
<heat> with write-once-read-never impenetrable regex expressions
<mjg> ./custom_prog | grep crap | cat # better, 2/3 of the pipeline is well tested code
<heat> why custom prog and not gawk?
<mjg> gawk is already well tested
alpha2023 has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
alpha2023 has joined #osdev
<mjg> you want to decrease the impact of the untested code by adding more code which is tested
<mjg> hence that cat
<heat> if i replace the custom prog with an overengineered gawk script am i not reducing the untested code to 0
<mjg> it is effort toward perfection
<mjg> or even PERFECTION
FreeFull has joined #osdev
<zid> heat: You're just hiding it and making it harder to find, you should *delete* all your code.
Arthuria has quit [Ping timeout: 260 seconds]
<bslsk05> ​www.theregister.com: What will the xz backdoor mean for open and closed source? • The Register
<chiselfuse> i'm confused about A20M# and can't find much info on it. from what i understand it's a value that can be flipped to enable 32-bit addressing (accessing 4GB instead of 1MB) in real mode used usually by bootloaders. how do you set this value? is there some instruction?
<zid> It's part of the keyboard controller
<zid> There's lots of information on the osdev wiki
<zid> on the protected mode, ps/2 controller, etc, pages
<heat> the A20 has also not been a thing for the last like, 15 years probably
<heat> it's a literal noop
<bslsk05> ​wiki.osdev.org: A20 Line - OSDev Wiki
<chiselfuse> is this relevant?
<heat> yes
<heat> are you writing your own BIOS bootloader?
<heat> is this machine from the late 90s early 00s?
<chiselfuse> i'm just studying x86 in general
<heat> okay, don't bother with this
<chiselfuse> but it still exists in modern cpus, no?
<heat> no
<chiselfuse> it is mentioned in the latest amd manual though
<heat> this is 1) a platform detail, not a CPU detail 2) something that's completely irrelevant as modern firmware accesses the whole 32-bit space (and starts at the very top) willy nilly
npc has joined #osdev
stolen has joined #osdev
<chiselfuse> platform as in the whole chipset rather than cpu?
<heat> yes
<zid> You can study it if you find it fun and like doing research
<chiselfuse> how does modern firmware access the whole 32-bit space in real mode?
<zid> but it's not useful information
<chiselfuse> zid: yea i want to
<zid> but "like doing research" and "asking all the details serially on irc" don't really mesh
<heat> modern firmware is not in real mode
<heat> the BIOS was written in 32-bit for a long time, UEFI is 32-bit or 32-bit/64-bit mixed (details not relevant)
<heat> if you inspect your firmware's reset vector you'll notice it switches to 32-bit in the first like 5 instructions
<chiselfuse> i'm still not sure how firmware, bios, cpu modes fit all together
<heat> and if you read about intel ACMs you'll see they execute in 32-bit from the get go
<chiselfuse> this is where i encountered the mention of A20
<zid> did you read it?
<heat> huh, its funny AMD can still mask the A20 line, allegedly
<zid> 'optionally truncated to mimic'
<zid> Implies that a) it's emulated b) it's disabled by default
<chiselfuse> i want to know how chipset, firmware, cpu, bios, uefi all work from the very beginning, should i read something else before x86 manuals?
<zid> The IBM PC manuals from the 70s? Do those exist? I learned all this stuff really gradually
<zid> while doing other stuff
<heat> you'd need to read a lot more than the x86 manuals, and you have a *lot* to read, a lot of it isn't written down, a lot of it you can't read as it's confidential
<zid> sounds like they don't
<zid> IBM PC was a proprietary platform at its onset I image
<zid> and a lot of stuff still is to this day actually, especially regarding firmware
<heat> yeah wasn't the BIOS reverse-engineered and then clean-roomed?
<zid> the vendor ships you a mobo with its firmware pre-installed, maybe the way it turns the system on and does the POST is barely documented on a chinese forum somewhere if you're super lucky!
<heat> but yeah, basically: chipset starts booting, does $TASKS, boots secondary in-chipset cores that maybe boot the x86 core
<zid> all that it *has* to do is transfer control to you at 0x7C000, everything other than that is out of scope for the vendor, and the 'PC' parts (keyboard controller, interrupt controller) etc all have their own manuals
<heat> no, all that it has to do is load a PE
<zid> die
<heat> anything else is UNDEFINED BEHAVIOR!
<heat> anyway there's literally large differences in the x86 boot process between intel and AMD
<chiselfuse> i want to understand even if at a high level what the components are and what happens from the time it's powered on. i don't mind much deep details
<zid> Whether the motherboard actually has an 8042 keyboard controller on it that you can enable or disable address lines with, or if the cpu secretly spies on you and emulates one etc, is out of scope of all these documents
<zid> Go back to the 80s then and pick an actual machine
<zid> not the generic 2024 manual for the 6GHz 128-core server cpus
<zid> see if you can find manuals for the part numbers on the board
<heat> e.g modern AMD platforms (AM4, etc) train memory in the secondary core, and thus you have ram from the get go, in the reset vector
<heat> intel still trains memory in the main x86 core
<zid> reverse engineer its bios, etc
<heat> using cache-as-ram, or sometimes SMRAM if its a server board
<zid> there are actually tools for unpacking pheonixbios and stuff btw, you seen those heat?
<heat> no
<heat> i haven't looked at traditional BIOSes much
<zid> You just get a gui like the pheonixbios, and remap all of the menus, enable/disable entries, change all the dropdowns and defaults and stuff
<zid> and make it spit out a new .bin
<heat> yeah
<heat> you can probably do that for EFI firmware as they have this horrible HII spec that you can in theory inspect and fuck with
<zid> I've seen people sort of 'have' to do it to make different setups work on modded boards and stuff
<zid> the mobo software supported what they wanted to do it just didn't have the menu option enabled
<zid> don't remember an example, but stuff like the memory multipliers and stuff so they could run a faster more modern cpu or whatever
<zid> without it trying to run the ram at 800MHz
<heat> chiselfuse: anyway, for an intel platform: x86 boots at 0xfffffff0, caches off, memory off, they quickly switch to 32-bit and *usually* enable cache-as-ram (which basically lets you use cache as memory), then they do mundane platform tasks, then train DRAM, then migrate the firmware data and code to DRAM, then they do more mundane firmware tasks,
<heat> then they eventually train the PCIe link, then load drivers and boot your stuff
<heat> this has roughly been the boot process for the last like 30 years of intel firmware, pre-EFI and post-EFI
<nortti> I thought ME was involved in the boot process too on intel since some years back?
<chiselfuse> heat: they "quickly switch to 32-bit"? i thought it let me start in real mode and i would have to set some register to tell it to switch to portable mode
<heat> might checkpoint into ME yeah
<zid> ME boots first on my machine with ME
<zid> it copies the bios to ram and runs it
<zid> or jumps to it in rom at least
<zid> (the board will do things without the bios rom installed)
<heat> i'm including "mundane platform tasks" for everything platform related, i.e talking with ME, setting up GPIO pins, random configuration and training they need, etc
<zid> post code 00, nvram error etc
<heat> chiselfuse: that's really old behavior, modern EFI doesn't start you in 16-bit, BIOS switches back to 16-bit when booting you
<heat> so you feel comfy if you're an x86 program written for the 80286
<heat> but the BIOS itself has been written in 32-bit for ages, Intel EFI is usually 32-bit for early stages (pre-DRAM, because e.g intel cpus can't handle page tables in CAR), 64-bit for later stages
<zid> It can do whatever the fuck it wants, as long as it jumps to 0x7c000 in real mode
<heat> zid still has CSM enabled
<zid> mine downloads programs off the internet to run, first
<zid> community suppot manager enabled
<heat> amd is funny, the secure processor's firmware is in the same firmware volume as the rest of the thing, they're just arm64 efi modules in the middle of your x86 firmware
<zid> I mean.. how else do you flash it
<zid> my ME's firmware was in the same .CAP and same .ROM too
<heat> i dunno
<chiselfuse> i'm still a bit confused, think i'll just read on the manual for now
<heat> manual won't talk about any of this
<heat> what you think is the "starting state" really isn't
<chiselfuse> heat: at least i'll know what *doesn't* have to do with any of this :P. if you have a resource about what you're discussing now pls recommend though
<zid> [17:13] <heat> you'd need to read a lot more than the x86 manuals, and you have a *lot* to read, a lot of it isn't written down, a lot of it you can't read as it's confidential
<heat> i don't really have resources except googling and hoping people have talked about it
* chiselfuse sobs
<zid> which is fine, because, as mentioned 20 times
<zid> it's irrelevent
<zid> you can pick it up as you go like we all did
<heat> chipset docs usually tell you or hint at what bits of the "traditional x86 PC" are completely emulated
<heat> and those are sometimes public
<zid> [17:14] <zid> the vendor ships you a mobo with its firmware pre-installed, maybe the way it turns the system on and does the POST is barely documented on a chinese forum somewhere if you're super lucky!
<heat> the "chipset docs" aren't really docs, you can't really write firmware using those as the reference
<heat> but they tell you some interesting details about your platform
<heat> mine has a PCI device that hides itself if you poke a register
<zid> My superio doc was 400 pages long
<zid> thankfully half of them described pins that didn't have connectors soldered to them
<heat> if you're really lucky and up to doing illegal shit, you may be able to find a confidential bios writers guide (AMD used to have more or less public ones I think)
<heat> and then you can get more details
<zid> I got tempted at some point
<zid> to see if there were any docs on the nvidia videobios
<zid> or reverse enginerds
<bslsk05> ​www.bitsavers.org: Index of /pdf
<heat> but i've heard they don't detail a lot of the processes anymore because intel just gives the IBVs code
<zid> to see if maybe I could do manual modesets
<rsjw> are there any chipsets with proper docs? even considering other arches? or are we just talking x86 here?
<zid> ME is just a blob nobody gets to see :(
<zid> sadge
<heat> rsjw: the old AMD platforms (pre-ryzen, when they sucked) have good docs, i'm not sure if they're remotely enough, but the BKDGs detail a lot of stuff
<heat> apart from that, *maybe* simpler ARM SoCs, *maybe* riscv
zetef has joined #osdev
<nortti> there's the openpower stuff too, but that's quite high-end
<heat> if you're lucky you get coreboot code, or edk2 code, or u-boot code
<heat> but modern open-source platforms for coreboot and edk2 tend to be "call into blob and make it do the magic"
<rsjw> boo :(
<heat> AGESA is a blob, the FSP is a blob
<Ermine> N D A
xenos1984 has quit [Ping timeout: 268 seconds]
xenos1984 has joined #osdev
zetef has quit [Remote host closed the connection]
<Ermine> or you get libreboot that doesn't call into blobs
<Ermine> but then machine doesn't work either
<nortti> libreboot, because rebooting is the only feature provided
<heat> libre means "useless" in spanish
<Ermine> blobless stuff would require getting steppers first
<rsjw> what are steppers?
<Ermine> device that makes chips
<rsjw> oh that
<rsjw> I thought you meant some firmware thing
<Ermine> Design chips and boards, release all docs and code
fluix has quit [Read error: Connection reset by peer]
fluix has joined #osdev
<zid> smh needing an entire lib to reboot, I just write code and it eventually triplefaults
<heat> triple faults don't necessarily mean reboot
<heat> checkmate
<Ermine> triple fault is how os/2 rebooted
<Ermine> so you need to configure virtualbox accordingly to run os/2
<Ermine> maybe zid is os/2 dev?
<heat> zid is a boros dev
<heat> boros > os/2
<Ermine> bor > /2
<heat> least nonsensical math expression
<bslsk05> ​en.wiktionary.org: boros - Wiktionary, the free dictionary
<Ermine> heat: better than the article I'm dealing with
xenos1984 has quit [Ping timeout: 268 seconds]
<vin> Is there a way to find out the cache capacity of each level in Paging-Structure? I went through Vol 3 Sec 4 of Intel Software Manual and didn't find anything.
<vin> I am curious if l2/l3 levels have higher caching capacity (size) as they cache lower bits
<heat> i know you can find tlb sizes for individual page sizes
<heat> i'm not sure if they give you any data on any page walker caching
<vin> yea heat its usually 64 for 4kb and 4 for 2MiB I believe but I am interested more in the cache sizes of page walks
<vin> Because I am not able to reason if moving hot data close together on the virtual address space (not necessarily into) a page is going to be helpful
<heat> measure
<vin> moving it to a single page will be because of stream prefetching (L2/L3) but what if the spartisity is reduced, would it still make a difference.
<heat> measure
xenos1984 has joined #osdev
<vin> I will. An orthogonal question, when the global bits of a page are enabled along with the U bit, can any user space process from the same group access the physical frame with this virtual address?
<heat> group of what?
<vin> *same user
<heat> if you enable the G bit on any U bit anyone in userspace will be able to randomly access that TLB entry
<heat> unless you take care to flush them out, but that's very slow and no one does user global pages
<vin> Just the TLB entry? So you are saying if TLB is not flushed and the virtual address is not cached then the new process can't get the physical address because it does not have it its page map?
<heat> yes
<heat> G is useless on userspace pages
<vin> I see. Yea, I understand the security concerns but if I can enable G bits on particular frames that I want to share with another process then this is very convinient
<heat> not only security but a PITA to implement correctly
<gog> what's the use case?
<heat> enterprise gog bouta make a UML class diagram for this use case
<vin> gog I want to move objects that are spread out on the address space close together to avoid tlb misses and page walk cache misses. However, I don't want to copy them to these new locaitons as it can expensive.
<heat> remapping might be even more expensive
<heat> again, measure
<vin> So I am exploring alternatives such as priming the tlb/page walk caches
<vin> we can't just remap because the obejcts can be a fraction of the apge size. Having a contigous address range remapped (address aliasing) to the physical address was something I was thinking of BUT you can only remap at page granularity
masoudd has quit [Killed (NickServ (GHOST command used by masoudd_))]
masoudd_ has joined #osdev
<geist> took me some hackery to get it working, dunno how easy it is to build newer version
Matt|home has joined #osdev
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 255 seconds]
<zid> When returning to a non-canonical address using SYSRET, AMD64 processors execute the general protection fault handler in privilege level 3,[54] while on Intel 64 processors it is executed in privilege level 0.
<zid> This seems important
<heat> x86 sanity challenge [IMPOSSIBLE]
<geist> yeah really throwing a #GP because of a non canonical is the giant problem here. why they didn't wire it up to fire a PF i dunno
<zid> doesn't basically everything involving non-can throw GP
<zid> saves you having to give a shit about canonical addresses in the PF handler, tbh it makes sense
<heat> you need to guess the non-canonical address though
<heat> or decode the instruction and figure that part out
<zid> "shit's fucked" -> GP
<gog> 0x42069b1a2e17
<zid> thanks gog
<heat> thank you gog, very cool
<zid> gog did you play more balatro yet
<heat> #GP is a super horrible exception
<gog> i got through 3 runs
<zid> nice, what decks?
<zid> I showed u my deck pls respond
<heat> geist: i disagree, the really annoying bit is the ring you're dying in
<heat> because then swapgs may be completely fucked
<gog> blue, yellow and uh what's the one that gives you extra money?
<gog> for remaining discards and hands
<geist> sure, i mean that's a bug basically
<zid> I only play analglyph and spectral so I have to look up blue and yellow :p
<heat> one traditionally swapgs followed by sysret, but it turns out you can fault in kernel-space *because of userspace* with a borked gs
<heat> and there's no easy way of knowing this
<zid> and plasma*
<zid> I should try gold stake red deck at some point, but I wanna finish my damn vouchers
<zid> I've gotten sick runs going on analglyph like 4 times now and just not had the blind I need
pretty_dumm_guy has quit [Ping timeout: 272 seconds]
<geist> re: sysret there's also the issue that the SP isn't modified when returning
<geist> i just reread the deets from https://www.felixcloutier.com/x86/sysret
<bslsk05> ​www.felixcloutier.com: SYSRET — Return From Fast System Call
pretty_dumm_guy has joined #osdev
xFCFFDFFFFEFFFAF has joined #osdev
<geist> also there's that pretty important detail that CS and SS are loaded from IA32_STAR but the GDT is not reloaded
<geist> it just slams in default segment values
<Ermine> heat: what's wrong with x86 this time?
<heat> everything
<heat> x86 is just the WORST
<Ermine> #GP = General Protection?
<geist> lemme see how does VAX avoid this.... it has 4 rings, but that's not really too strange
<geist> ah it has 4 separate SPes
<heat> Ermine: #GP is what x86 uses as a cop-out exception when its too herd to tell you what happened
<geist> just the current one is active based on what ring you're in, but you can access the lower ones via a MSR (or the equivalent of MSRs on VAX)
<gog> i hate that you can't specify what you want CS and SS to be individually
<gog> that you have to have a specific GDT layout
<heat> i love that
<Ermine> Everyone seems to make more than 2 rings, but now everyone uses just 2 rings
<heat> because the GDT was a mistake
<geist> yah, even in a 32bit compability mode it goes all in that you're running some flat memory model
<gog> it was a mistake
<heat> it's not a happy little mistake
<gog> heat: i'll describe your global tables
<heat> it's a sad, sad mistake
<Ermine> Isn't GDT the thing you set once during the boot time and then go on with paging?
<heat> 😳
<geist> basically yes
Left_Turn has joined #osdev
<heat> don't describe my global tables gog, please, you're embarassing me 😳😳😳😳
<geist> there's some nonsense with TSSes but yes
<gog> yeh you need those
<heat> TSS being another thing you have to deal with because
<gog> x86 considered harmful
<heat> gog considered harmful
<heat> deprecate gog!!
<Ermine> noooooooooo
<geist> VAAAAX
<heat> vaax considered not-harmful
<nikolapdp> PDP-11!!!
<heat> except if you go on joe rogan
<gog> i am not harmful :(
<Ermine> what other arches do we have in performance department?
<zid> oh nik is here
<gog> and i've never been on joe rogan
<zid> nik
<zid> watch me farm for vouchers pls
<gog> apple m2
<geist> i was gonna show off some leet vax exception vector stuff, but actually i only barely filled it in https://github.com/littlekernel/lk/blob/vax/arch/vax/exceptions.S
<bslsk05> ​github.com: lk/arch/vax/exceptions.S at vax · littlekernel/lk · GitHub
Turn_Left has quit [Ping timeout: 256 seconds]
<heat> Ermine: arm64, ppc64
<Ermine> POWER
<heat> and that's probably it
<nikolapdp> SPARC V9
<heat> oh SPARC too
<heat> yeah totally, some niche people still run sparc
* Ermine sparkles
<nikolapdp> i'd run sparc
<heat> nikolasparc
<Ermine> And out of them only aarch64 delivers something comparable to x86
<Ermine> I guess
<nikolapdp> i should resrve that name for when i get a sparc machine
<geist> yah i was running my ultrasparc most of last week, just turned it off yesterday
<gog> i want an alpha
<bslsk05> ​'Barn Find PDP 11/73 - Will it boot?? - Part 1' by Vintage Apparatus (00:07:03)
<Ermine> Actually Hetzner has aarch64 VPSen
<geist> i think i'll switch it to emulated scsi (one of the drives is starting to throw scsi errors) and then maybe put it up on a rack more permanently
<nikolapdp> gog gog you want the whackiest memory model
<gog> yes
<gog> and PALcode
<Ermine> Maybe I should figure out how to do bank transfers and find some bank which is not under sanctions yet
<geist> GeDaMo: yah the pdp 11/53 i have is very similar to that, just missing all of the plastic outer shell
<heat> Ermine: there's high performance sparc and ppc
<heat> for Special Customerz
<Ermine> for a lot of $$$
<heat> yes
<nikolar> €€€€
<heat> ££££
<Ermine> ¥¥¥¥
<heat> £££ is sparc, $$$ is spark, €€€  is sparque
<Ermine> ¥¥¥ is sparkamoto
<nikolapdp> i want one sparque please
<Ermine> I give another try to get into async io thing
<nikolapdp> what async io Ermine
<Ermine> onyx async io
<nikolapdp> ONYX
<gog> the year of the onyx desktop
<heat> the year of the onyx everything
<heat> Ermine: you mean the virtio-blk thing?
<Ermine> yes
<gog> onyx server 2024
<gog> now with more template metaprogramming
<nikolapdp> templates are overrated, real programmers use the PREPROCESSOR
<geist> copy paste for the win!
<gog> ARY
<Ermine> nikolapdp: onyx has both
<nikolapdp> both templates and CPP?
<heat> yes
<heat> onyx has C and C++
<nikolapdp> C C C C C C
<heat> oracle recommends oracle solaris 11.4 for its oracle servers
<heat> this is wrong, onyx 11.4 is superior
<heat> oracle onyx?
<heat> email me mr ellison
<geist> heat: i dunno, you have done nothing to convince me of this
<geist> at best it's exactly as good, as given by 11.4 == 11.04
<geist> 11.4 == 11.4 even
<heat> wait
<heat> are you larry ellison???
<nikolapdp> ?11.4
<heat> onyx goes through routine certification as a mjg-certified "Least crapper crapper OS" whereas oracle solaris does not
<heat> and this is worth a lot to your customers and partners
<nikolapdp> who are your customers and partners heat
<heat> i'm under NDA and as such cannot divulge such information
<nikolapdp> llies
<heat> >Thirty-two floating-point units and thirty-two Oracle Numbers units per
<heat> processor (one per core)
<heat> what the fuck is an oracle numbers unit
<nikolapdp> it's a unit for numbers, duh
<nikolapdp> by oracle
<GeDaMo> "Each of the 32 cores in the SPARC M8 processor includes an Oracle Numbers unit, which is specifically designed to
<GeDaMo> accelerate Oracle Numbers arithmetic performance." https://www.oracle.com/a/ocom/docs/sparc-t8-m8-server-architecture.pdf
<nikolapdp> heat: Specifically for fixed and floating-point numbers, Oracle Database has a unique data type called Oracle Numbers,
<nikolapdp> which can store fixed and floating-point numbers
<heat> yes that's where i found it
<heat> nikolapdp: where did you see that?
<nikolapdp> Oracle Numbers Acceleration
<nikolapdp> is the chapter
<heat> chapter of what?
<nikolapdp> page 11
<nikolapdp> of the thing GeDaMo linked
<GeDaMo> "The Oracle Numbers data type provides four new instructions (ONadd, ONsub, ONmul, and ONdiv) and supports natively all lengths of fixed and floating-point numbers up to 22 bytes"
<heat> oh, that thing
<heat> i was on a different pdf
<nikolapdp> yeah
<heat> great stuff guys
<nikolapdp> what's great stuff heat
<heat> your work and oracle's work
<heat> both great
<heat> >Java Stream Acceleration
<nikolapdp> thanks heat, that means a lot
Arthuria has joined #osdev
<heat> you are valid nikolapdp and i appreciate you
<heat> don't let anyone tell you otherwise <3
<nikolapdp> <3
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
<heat> i wanna go to clown college
<heat> i'm an amateur clown already, becoming a professional clown would be great
<geist> you shold be that guy that does the trampoline thing with the stairs
<geist> it's cool
<geist> actually gigantic floating point numbers sounds pretty cool
<kof673> is heat old enough to get the clown reference :)
<nikolapdp> geist, even better, variably length floats
<nikolapdp> s/variably/variable
<heat> its a simpsons reference but no i don't have every simpsons joke memorized
<heat> nikolapdp: even better, variable length floats OR integers
<heat> with high precision
<nikolapdp> i know right
<kof673> Krusty's Accountant: Let me get this straight. You took all the money you made franchising your name and bet it *against* the Harlem Globetrotters? Krusty the Clown: [miserable] Oh, I thought the Generals were due! K: He's spinning the ball on his finger! Just take it! Take it!
* kof673 zzzzzzzzzzzzzzzzz
<geist> nikolapdp: well sure, but i mean in hardware that's pretty difficult
Arthuria has quit [Ping timeout: 268 seconds]
<heat> oracle will do anything to accelerate THE ORACLE DB
<heat> on THE ORACLE SPARC on THE ORACLE SOLARIS
<nikolapdp> ORACLE
<heat> they even have ORACLE java-tailored extensions
<heat> that they only provide to ORACLE solaris
masoudd has joined #osdev
masoudd_ has quit [Ping timeout: 272 seconds]
gog has quit [Quit: byee]
<vin> Woah, I had no idea there was next *PAGE* prefetching on Intel to preload TLB entries. I always assumed prefetches only happen at cacheline and within page boundary
gog has joined #osdev
Arthuria has joined #osdev
<bslsk05> ​community.intel.com: Is next-page prefetcher available on Haswell microarchitecture? - Intel Community
<vin> Have you ever come across this before?
hunta987 has joined #osdev
carbonfiber has quit [Quit: Connection closed for inactivity]
stolen has quit [Quit: Connection closed for inactivity]
gog has quit [Quit: byee]
Arthuria has quit [Ping timeout: 260 seconds]
Arthuria has joined #osdev
<heat> woah oracle gives you an arm ampere server on the free tier?
<Ermine> Is it enough for minecraft server?
<Ermine> they had an instruction on how to run minecraft server in their cloud
<heat> "Arm-based Ampere A1 cores and 24 GB of memory usable as 1 VM or up to 4 VMs."
<heat> no idea how many cpus you get, probably not the full amount?
xenos1984 has quit [Read error: Connection reset by peer]
<Ermine> FOR FREE???
Nixkernal has quit [Ping timeout: 272 seconds]
<heat> but it's still great
<heat> yeah
<Ermine> 24G RAM FOR FREE
<heat> "3,000 OCPU hours and 18,000 GB hours per month"
<mjg> what's the catch
<heat> larry gets your home address
<heat> getting this for onyx sounds great
<Ermine> ... but not so great for deploying a personal vpn
<heat> why?
<Ermine> Idk how many hours does it consume, given encryption and stuff
<heat> 3000 hours is around a month
<heat> so if you have a core hogged at 100% CPU it should take ~3000 OCPU hours i'd guess
<Ermine> Ah, I'm bad at maths
<Ermine> Then it's bargain
<heat> it seems that you get 4 cores
<mjg> but SOLARIS does not run on arm?
<heat> or 4 vms with 1 core if you're running openbsd
<mjg> what is the cloud on? :(
<Ermine> I'm paying like $15/month for single x86 core and 1G RAM here
<mjg> where is "here"
<heat> oh that's awful
<mjg> also sounds rather expensive
<Ermine> ru
<heat> what service?
<Ermine> yandex cloud
<hunta987> I think Frantech gave me like 1 core and 4GB of ram for $15
<heat> do the traditional cloud services not do business with russia anymore?
<Ermine> "yes"
<heat> haha
<hunta987> no they do business with the shell companies located in Seychelles
<hunta987> so not russia
<Ermine> I have a vps in amsterdam
<Ermine> so I guess there are some shenanigans
<Ermine> But oficially, they don't work with customers from russia so they don't have to deal with authorities
<heat> yeah but yandex is actually russian right?
<Ermine> Yes
<heat> anyway gcp free tier is like 2 vCPUs and a gig of ram
<heat> i guess the oracle free tier for arm is so generous cuz its ARM
<heat> the demand must be wayyy lower
<Ermine> And I used to pay $6 for digitalocean
npc has quit [Remote host closed the connection]
<Ermine> Oh, they also provide object storage
<heat> anyway what i really wanted to figure out was if they had SPARC offering
<heat> and the answer sadly seems to be no
<heat> they also don't offer solaris but oracle linux
<heat> :(
<Ermine> not even illumos?
navi has quit [Quit: WeeChat 4.2.1]
xenos1984 has joined #osdev
<heat> why would they ever offer illumos
<heat> it'd be like azure offering reactos
goliath has quit [Quit: SIGSEGV]
* CompanionCube vaguely recalls the oracle free tier randomly disappearing off the network or getting reset
<Ermine> well, if they actively develop solaris
<Ermine> oh, onyx has process personalities?
<heat> In Theory
<heat> i haven't needed to use it for anything
<nikolapdp> what's a process personality
<heat> man 2 personality
<nikolapdp> huh interesting
Arthuria has quit [Killed (NickServ (GHOST command used by Guest684531))]
Arthuria has joined #osdev
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 268 seconds]
Bonstra has left #osdev [EOF]
Bonstra has joined #osdev
troseman has joined #osdev
gbowne1 has joined #osdev
Matt|home has quit [Quit: Leaving]
volum has joined #osdev
troseman has quit [Quit: troseman]
troseman has joined #osdev
troseman has quit [Client Quit]
troseman has joined #osdev
volum has quit [Quit: Client closed]
Arthuria has quit [Ping timeout: 240 seconds]
Turn_Left has quit [Read error: Connection reset by peer]
troseman has quit [Quit: troseman]