Search logs:

channel logs for 2004 - 2010 are archived at http://tunes.org/~nef/logs/old/ ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present


http://bespin.org/~qz/search/?view=1&c=osdev2&y=24&m=4&d=7

Sunday, 7 April 2024

00:01:00 <geist> well, could boot up a new netbsd on simh and then it'd be a pretty modern environment to compile with
07:08:00 <kof673> > EMAC OE is EMAC's standard Linux distribution, based on the OpenEmbedded build framework for embedded Linux systems
07:09:00 <kof673> i heard you like emac, now you can emacs within emac
07:09:00 <kof673> so you named...your distro thing...emac...
07:18:00 <kof673> > Installing Linux on a very old iMac
09:48:00 <asymptotically> any distro can be emac if you boot with init=/usr/bin/emacs
09:53:00 <kof673> well there is/was a supposed systeme, so that gives 4 layers for the above scheme
10:01:00 <zid> I boot my windows machine with shell=balatro.exe
10:49:00 <gog> osdev?
11:37:00 <mjg> gog: gaming!
12:21:00 <gog> mjg: i'm not aloser
12:53:00 <zid> I'm here on behalf of anish kapoor
12:58:00 <gog> hi
13:13:00 <Ermine> Actually, my wi-fi adapter wasn't fixed...
13:15:00 <Ermine> The same 'Timeout while waiting for device setup command'
14:38:00 <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
14:39:00 <heat> it wouldn't be *hard*, but it wouldn't be easy either because onyx does not run on 32-bit architectures ATM
14:40:00 <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
14:44:00 <heat> with all of this fixed it'd work pretty fucking well and it'd be pretty cool to have a VAX port
14:54:00 <Ermine> I guess it would be easier to get it running on i386 first
14:55:00 <Ermine> (Interestingly enough, minix can't into 64bit, while onyx can't into 32bit)
14:55:00 <mjg> i'm not using either
14:55:00 <mjg> good for me
14:55:00 <heat> Ermine: yes
14:55:00 <heat> also, musl doesn't support the VAX, neither does glibc
14:55:00 <heat> so you'd need to write those bits from scratch
14:56:00 <nortti> has there been a vax linux port?
14:56:00 <heat> and the toolchain situation... no idea how that's looking for vax
14:56:00 <heat> i'm not sure, but it's not upstream
14:56:00 <mjg> heat why did you implement itanium support in qemu yet
14:56:00 <mjg> and then ported onyx to it
14:57:00 <heat> no
14:57:00 <mjg> instead you are watching anime
14:57:00 <heat> i don't watch anime
14:57:00 <mjg> is your ai boyfriend taking all your time
14:57:00 <heat> you can call me anything except an anime fan
14:57:00 <GeDaMo> Can qemu run on Vax?
14:57:00 <Ermine> gcc support is going to be useful for once?
14:57:00 <heat> wdym for once
14:58:00 <heat> gcc and LLVM are both equally useful
14:58:00 <Ermine> gcc support for vax*
14:58:00 <heat> i guess so
14:59:00 <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
15:00:00 <mjg> is anime considered cringe by general genz?
15:00:00 <mjg> i genuinely doin't know and i'm mildly curious
15:01:00 <Ermine> I am genz and I play anime game
15:01:00 <heat> anime is considered cringe in general
15:01:00 <heat> unless you're on IRC
15:01:00 <gog> my friend and i started watching revolutionary girl utena together
15:01:00 <mjg> dafuq's.dat
15:01:00 <gog> anime
15:01:00 <heat> sounds like a communist anime
15:02:00 <heat> its not
15:02:00 <heat> i am disappointed
15:02:00 <mjg> that much i figured
15:02:00 <mjg> but 'liek what's the synopsis
15:02:00 <heat> you know there's a ww2 panzer anime right?
15:02:00 <heat> https://en.wikipedia.org/wiki/Girls_und_Panzer
15:02:00 <nortti> I fail to see the connection to utena
15:02:00 <Ermine> I know there's anime about girls driving tanks
15:03:00 <heat> if a girls driving panzers is an anime, revolutionary communist anime isn't too far from that
15:05:00 <mjg> did you watch dragon ball z?
15:05:00 <heat> some episodes when i was a kid
15:05:00 <heat> but i preferred pokemon and beyblade
15:05:00 <mjg> dbz was *the* shit when i was a kid
15:06:00 <mjg> so funny story
15:07:00 <mjg> around that time i knew a guy who never seen it, i told him it's fucking amazing
15:07:00 <mjg> dude got convinced to watch an episode with me, so far so good
15:07:00 <mjg> as luck would have the episode at hand was a wtf filler
15:08:00 <heat> let me guess, he liked it and you said "woaaaaah bro if you liked that you might enjoy installing freebsd"
15:08:00 <mjg> bulma was fucking around trying to grab a dragon ball
15:08:00 <mjg> no fighting, nobody going super saiyan
15:08:00 <mjg> i was totally bummed out by how bad it was
15:08:00 <mjg> then the guy turned to me and asked "so you like this?"
15:08:00 <mjg> i did not know what to say
15:08:00 * Ermine wants to watch hokuto no ken
15:09:00 <heat> linux user tries to show dbz to his friend but it turns out widevine doesn't work on his alpine linux ppc64 setup
15:09:00 <mjg> i use alpine btw
15:09:00 <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
15:10:00 <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
15:11:00 <Ermine> widevine drm bad
15:13:00 <gog> mjg: high school girl discovers she's a chosen member of an elite society where they do sword fights
15:13:00 <mjg> 480p is high definition where i'm from
15:13:00 <mjg> and by that i mean the 80s
15:13:00 <Ermine> But anyway last time I stumbled upon drm not working I've just rebooted to binbows
15:14:00 <heat> i'm on windows atm, yall need something?
15:14:00 <heat> i can get 4K netflix
15:15:00 <mjg> ey heat
15:15:00 <mjg> when you stream shit from netflix
15:15:00 <mjg> do you know whose code you are using
15:15:00 <heat> the mjg man
15:15:00 <Ermine> Cool, but can you get 4K display
15:16:00 <heat> also BRENDAN GREGG
15:16:00 <heat> did you know freebsd powers netflix
15:16:00 * mjg burps
15:16:00 <heat> it's a little known fact all freebsd users tell you
15:16:00 <heat> the problem is finding a freebsd user
15:16:00 <Ermine> I have windows but no 4k or netflix
15:16:00 <mjg> did you know freebsd is serving about 130% of the internet?
15:17:00 <Ermine> where did i miscalculate
15:17:00 <mjg> maybe installing arch linux with an alpine vm would solve it?
15:17:00 <gog> i use haiku btw
15:18:00 <heat> alpine with a gentoo -O3 -march=native vm for glibc compat
15:18:00 <heat> you can also get the alpine linux + HBO max bundle
15:18:00 <Ermine> s/vm/chroot/
15:18:00 <mjg> i wonder who is gentoo doing today
15:19:00 <mjg> in 2005 or so it was popular with the ricing community
15:19:00 <heat> who gentoo is doing? no one, it's a distro
15:19:00 <mjg> people who have no idea about performance would compile everything with cargo culted cflags
15:19:00 <mjg> and assert it's fast
15:19:00 <mjg> if you ignore all the crashes
15:19:00 <heat> crashes, are they pessimal?
15:20:00 <mjg> only if you dump core
15:20:00 <heat> just like puking is taking the weakness out of your body, maybe crashing is taking the pessimal out of your program
15:20:00 <mjg> here is a pro tip from back in the day
15:21:00 <mjg> when writing a shitty one liner in bash, make sure to add even more avoidable sed and grep uses
15:21:00 <mjg> this increases the reliability factor
15:21:00 <mjg> ./custom_prog | grep crap # bad, about half of the pipeline is barely tested
15:21:00 <heat> with write-once-read-never impenetrable regex expressions
15:22:00 <mjg> ./custom_prog | grep crap | cat # better, 2/3 of the pipeline is well tested code
15:22:00 <heat> why custom prog and not gawk?
15:22:00 <mjg> gawk is already well tested
15:23:00 <mjg> you want to decrease the impact of the untested code by adding more code which is tested
15:23:00 <mjg> hence that cat
15:23:00 <heat> if i replace the custom prog with an overengineered gawk script am i not reducing the untested code to 0
15:24:00 <mjg> it is effort toward perfection
15:24:00 <mjg> or even PERFECTION
15:37:00 <zid> heat: You're just hiding it and making it harder to find, you should *delete* all your code.
15:59:00 <frkzoid> https://www.theregister.com/2024/04/06/register_kettle_xz/
15:59:00 <bslsk05> ​www.theregister.com: What will the xz backdoor mean for open and closed source? • The Register
15:59:00 <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?
16:00:00 <zid> It's part of the keyboard controller
16:01:00 <zid> There's lots of information on the osdev wiki
16:01:00 <zid> on the protected mode, ps/2 controller, etc, pages
16:03:00 <heat> the A20 has also not been a thing for the last like, 15 years probably
16:03:00 <heat> it's a literal noop
16:03:00 <chiselfuse> https://wiki.osdev.org/A20_Line
16:03:00 <bslsk05> ​wiki.osdev.org: A20 Line - OSDev Wiki
16:03:00 <chiselfuse> is this relevant?
16:03:00 <heat> yes
16:03:00 <heat> are you writing your own BIOS bootloader?
16:03:00 <heat> is this machine from the late 90s early 00s?
16:04:00 <chiselfuse> i'm just studying x86 in general
16:04:00 <heat> okay, don't bother with this
16:04:00 <chiselfuse> but it still exists in modern cpus, no?
16:04:00 <heat> no
16:05:00 <chiselfuse> it is mentioned in the latest amd manual though
16:05:00 <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
16:06:00 <chiselfuse> platform as in the whole chipset rather than cpu?
16:06:00 <heat> yes
16:06:00 <zid> You can study it if you find it fun and like doing research
16:07:00 <chiselfuse> how does modern firmware access the whole 32-bit space in real mode?
16:07:00 <zid> but it's not useful information
16:07:00 <chiselfuse> zid: yea i want to
16:07:00 <zid> but "like doing research" and "asking all the details serially on irc" don't really mesh
16:07:00 <heat> modern firmware is not in real mode
16:08:00 <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)
16:08:00 <heat> if you inspect your firmware's reset vector you'll notice it switches to 32-bit in the first like 5 instructions
16:08:00 <chiselfuse> i'm still not sure how firmware, bios, cpu modes fit all together
16:09:00 <chiselfuse> https://0x0.st/Xi9s.png
16:09:00 <heat> and if you read about intel ACMs you'll see they execute in 32-bit from the get go
16:09:00 <chiselfuse> this is where i encountered the mention of A20
16:09:00 <zid> did you read it?
16:09:00 <heat> huh, its funny AMD can still mask the A20 line, allegedly
16:09:00 <zid> 'optionally truncated to mimic'
16:10:00 <zid> Implies that a) it's emulated b) it's disabled by default
16:12:00 <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?
16:13:00 <zid> The IBM PC manuals from the 70s? Do those exist? I learned all this stuff really gradually
16:13:00 <zid> while doing other stuff
16:13:00 <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
16:13:00 <zid> sounds like they don't
16:13:00 <zid> IBM PC was a proprietary platform at its onset I image
16:13:00 <zid> and a lot of stuff still is to this day actually, especially regarding firmware
16:13:00 <heat> yeah wasn't the BIOS reverse-engineered and then clean-roomed?
16:14:00 <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!
16:15:00 <heat> but yeah, basically: chipset starts booting, does $TASKS, boots secondary in-chipset cores that maybe boot the x86 core
16:15:00 <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
16:15:00 <heat> no, all that it has to do is load a PE
16:15:00 <zid> die
16:15:00 <heat> anything else is UNDEFINED BEHAVIOR!
16:16:00 <heat> anyway there's literally large differences in the x86 boot process between intel and AMD
16:16:00 <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
16:16:00 <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
16:16:00 <zid> Go back to the 80s then and pick an actual machine
16:16:00 <zid> not the generic 2024 manual for the 6GHz 128-core server cpus
16:17:00 <zid> see if you can find manuals for the part numbers on the board
16:17:00 <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
16:17:00 <heat> intel still trains memory in the main x86 core
16:17:00 <zid> reverse engineer its bios, etc
16:17:00 <heat> using cache-as-ram, or sometimes SMRAM if its a server board
16:17:00 <zid> there are actually tools for unpacking pheonixbios and stuff btw, you seen those heat?
16:17:00 <heat> no
16:17:00 <heat> i haven't looked at traditional BIOSes much
16:18:00 <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
16:18:00 <zid> and make it spit out a new .bin
16:18:00 <heat> yeah
16:19:00 <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
16:19:00 <zid> I've seen people sort of 'have' to do it to make different setups work on modded boards and stuff
16:19:00 <zid> the mobo software supported what they wanted to do it just didn't have the menu option enabled
16:20:00 <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
16:20:00 <zid> without it trying to run the ram at 800MHz
16:21:00 <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,
16:21:00 <heat> then they eventually train the PCIe link, then load drivers and boot your stuff
16:23:00 <heat> this has roughly been the boot process for the last like 30 years of intel firmware, pre-EFI and post-EFI
16:23:00 <nortti> I thought ME was involved in the boot process too on intel since some years back?
16:24:00 <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
16:24:00 <heat> might checkpoint into ME yeah
16:24:00 <zid> ME boots first on my machine with ME
16:24:00 <zid> it copies the bios to ram and runs it
16:24:00 <zid> or jumps to it in rom at least
16:24:00 <zid> (the board will do things without the bios rom installed)
16:25:00 <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
16:25:00 <zid> post code 00, nvram error etc
16:25:00 <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
16:25:00 <heat> so you feel comfy if you're an x86 program written for the 80286
16:26:00 <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
16:27:00 <zid> It can do whatever the fuck it wants, as long as it jumps to 0x7c000 in real mode
16:27:00 <heat> zid still has CSM enabled
16:27:00 <zid> mine downloads programs off the internet to run, first
16:27:00 <zid> community suppot manager enabled
16:28:00 <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
16:28:00 <zid> I mean.. how else do you flash it
16:28:00 <zid> my ME's firmware was in the same .CAP and same .ROM too
16:28:00 <heat> i dunno
16:29:00 <chiselfuse> i'm still a bit confused, think i'll just read on the manual for now
16:29:00 <heat> manual won't talk about any of this
16:29:00 <heat> what you think is the "starting state" really isn't
16:30:00 <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
16:31:00 <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
16:31:00 <heat> i don't really have resources except googling and hoping people have talked about it
16:31:00 * chiselfuse sobs
16:31:00 <zid> which is fine, because, as mentioned 20 times
16:31:00 <zid> it's irrelevent
16:31:00 <zid> you can pick it up as you go like we all did
16:31:00 <heat> chipset docs usually tell you or hint at what bits of the "traditional x86 PC" are completely emulated
16:31:00 <heat> and those are sometimes public
16:32:00 <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!
16:32:00 <heat> the "chipset docs" aren't really docs, you can't really write firmware using those as the reference
16:32:00 <heat> but they tell you some interesting details about your platform
16:32:00 <heat> mine has a PCI device that hides itself if you poke a register
16:33:00 <zid> My superio doc was 400 pages long
16:33:00 <zid> thankfully half of them described pins that didn't have connectors soldered to them
16:34:00 <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)
16:34:00 <heat> and then you can get more details
16:34:00 <zid> I got tempted at some point
16:35:00 <zid> to see if there were any docs on the nvidia videobios
16:35:00 <zid> or reverse enginerds
16:35:00 <GeDaMo> http://www.bitsavers.org/pdf/
16:35:00 <bslsk05> ​www.bitsavers.org: Index of /pdf
16:35:00 <heat> but i've heard they don't detail a lot of the processes anymore because intel just gives the IBVs code
16:35:00 <zid> to see if maybe I could do manual modesets
16:35:00 <rsjw> are there any chipsets with proper docs? even considering other arches? or are we just talking x86 here?
16:35:00 <zid> ME is just a blob nobody gets to see :(
16:35:00 <zid> sadge
16:37:00 <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
16:37:00 <heat> apart from that, *maybe* simpler ARM SoCs, *maybe* riscv
16:37:00 <nortti> there's the openpower stuff too, but that's quite high-end
16:38:00 <heat> if you're lucky you get coreboot code, or edk2 code, or u-boot code
16:39:00 <heat> but modern open-source platforms for coreboot and edk2 tend to be "call into blob and make it do the magic"
16:39:00 <rsjw> boo :(
16:40:00 <heat> AGESA is a blob, the FSP is a blob
16:54:00 <Ermine> N D A
17:08:00 <Ermine> or you get libreboot that doesn't call into blobs
17:08:00 <Ermine> but then machine doesn't work either
17:08:00 <nortti> libreboot, because rebooting is the only feature provided
17:09:00 <heat> libre means "useless" in spanish
17:09:00 <Ermine> blobless stuff would require getting steppers first
17:10:00 <rsjw> what are steppers?
17:10:00 <Ermine> https://en.wikipedia.org/wiki/Stepper
17:11:00 <Ermine> device that makes chips
17:11:00 <rsjw> oh that
17:11:00 <rsjw> I thought you meant some firmware thing
17:13:00 <Ermine> Design chips and boards, release all docs and code
17:13:00 <zid> smh needing an entire lib to reboot, I just write code and it eventually triplefaults
17:14:00 <heat> triple faults don't necessarily mean reboot
17:14:00 <heat> checkmate
17:14:00 <Ermine> triple fault is how os/2 rebooted
17:15:00 <Ermine> so you need to configure virtualbox accordingly to run os/2
17:15:00 <Ermine> maybe zid is os/2 dev?
17:16:00 <heat> zid is a boros dev
17:16:00 <heat> boros > os/2
17:16:00 <Ermine> bor > /2
17:16:00 <heat> least nonsensical math expression
17:16:00 <nortti> https://en.wiktionary.org/wiki/boros#Hungarian
17:16:00 <bslsk05> ​en.wiktionary.org: boros - Wiktionary, the free dictionary
17:20:00 <Ermine> heat: better than the article I'm dealing with
17:27:00 <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.
17:28:00 <vin> I am curious if l2/l3 levels have higher caching capacity (size) as they cache lower bits
17:28:00 <heat> i know you can find tlb sizes for individual page sizes
17:28:00 <heat> i'm not sure if they give you any data on any page walker caching
17:28:00 <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
17:29:00 <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
17:30:00 <heat> measure
17:30:00 <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.
17:33:00 <heat> measure
17:35:00 <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?
17:36:00 <heat> group of what?
17:36:00 <vin> *same user
17:37:00 <heat> if you enable the G bit on any U bit anyone in userspace will be able to randomly access that TLB entry
17:37:00 <heat> unless you take care to flush them out, but that's very slow and no one does user global pages
17:39:00 <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?
17:39:00 <heat> yes
17:40:00 <heat> G is useless on userspace pages
17:40:00 <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
17:42:00 <heat> not only security but a PITA to implement correctly
17:42:00 <gog> what's the use case?
17:42:00 <heat> enterprise gog bouta make a UML class diagram for this use case
17:46:00 <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.
17:47:00 <heat> remapping might be even more expensive
17:47:00 <heat> again, measure
17:48:00 <vin> So I am exploring alternatives such as priming the tlb/page walk caches
17:50:00 <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
18:43:00 <geist> re: vax toolchain https://newos.org/toolchains/vax-linux-7.3.0-Linux-x86_64.tar.xz
18:44:00 <geist> took me some hackery to get it working, dunno how easy it is to build newer version
18:57:00 <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.
18:57:00 <zid> This seems important
19:02:00 <heat> x86 sanity challenge [IMPOSSIBLE]
19:04:00 <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
19:04:00 <zid> doesn't basically everything involving non-can throw GP
19:04:00 <zid> saves you having to give a shit about canonical addresses in the PF handler, tbh it makes sense
19:04:00 <heat> you need to guess the non-canonical address though
19:05:00 <heat> or decode the instruction and figure that part out
19:05:00 <zid> "shit's fucked" -> GP
19:05:00 <gog> 0x42069b1a2e17
19:05:00 <zid> thanks gog
19:05:00 <heat> thank you gog, very cool
19:05:00 <zid> gog did you play more balatro yet
19:05:00 <heat> #GP is a super horrible exception
19:05:00 <gog> i got through 3 runs
19:05:00 <zid> nice, what decks?
19:05:00 <zid> I showed u my deck pls respond
19:05:00 <heat> geist: i disagree, the really annoying bit is the ring you're dying in
19:06:00 <heat> because then swapgs may be completely fucked
19:06:00 <gog> blue, yellow and uh what's the one that gives you extra money?
19:06:00 <gog> for remaining discards and hands
19:06:00 <geist> sure, i mean that's a bug basically
19:06:00 <zid> I only play analglyph and spectral so I have to look up blue and yellow :p
19:06:00 <heat> one traditionally swapgs followed by sysret, but it turns out you can fault in kernel-space *because of userspace* with a borked gs
19:07:00 <heat> and there's no easy way of knowing this
19:07:00 <zid> and plasma*
19:07:00 <zid> I should try gold stake red deck at some point, but I wanna finish my damn vouchers
19:07:00 <zid> I've gotten sick runs going on analglyph like 4 times now and just not had the blind I need
19:09:00 <geist> re: sysret there's also the issue that the SP isn't modified when returning
19:09:00 <geist> i just reread the deets from https://www.felixcloutier.com/x86/sysret
19:09:00 <bslsk05> ​www.felixcloutier.com: SYSRET — Return From Fast System Call
19:10:00 <geist> also there's that pretty important detail that CS and SS are loaded from IA32_STAR but the GDT is not reloaded
19:11:00 <geist> it just slams in default segment values
19:11:00 <Ermine> heat: what's wrong with x86 this time?
19:11:00 <heat> everything
19:11:00 <heat> x86 is just the WORST
19:11:00 <Ermine> #GP = General Protection?
19:12:00 <geist> lemme see how does VAX avoid this.... it has 4 rings, but that's not really too strange
19:12:00 <geist> ah it has 4 separate SPes
19:13:00 <heat> Ermine: #GP is what x86 uses as a cop-out exception when its too herd to tell you what happened
19:13:00 <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)
19:13:00 <gog> i hate that you can't specify what you want CS and SS to be individually
19:13:00 <gog> that you have to have a specific GDT layout
19:13:00 <heat> i love that
19:13:00 <Ermine> Everyone seems to make more than 2 rings, but now everyone uses just 2 rings
19:13:00 <heat> because the GDT was a mistake
19:14:00 <geist> yah, even in a 32bit compability mode it goes all in that you're running some flat memory model
19:14:00 <gog> it was a mistake
19:14:00 <heat> it's not a happy little mistake
19:14:00 <gog> heat: i'll describe your global tables
19:14:00 <heat> it's a sad, sad mistake
19:14:00 <Ermine> Isn't GDT the thing you set once during the boot time and then go on with paging?
19:14:00 <heat> 😳
19:14:00 <geist> basically yes
19:14:00 <heat> don't describe my global tables gog, please, you're embarassing me 😳😳😳😳
19:14:00 <geist> there's some nonsense with TSSes but yes
19:15:00 <gog> yeh you need those
19:15:00 <heat> TSS being another thing you have to deal with because
19:15:00 <gog> x86 considered harmful
19:15:00 <heat> gog considered harmful
19:16:00 <heat> deprecate gog!!
19:16:00 <Ermine> noooooooooo
19:16:00 <geist> VAAAAX
19:16:00 <heat> vaax considered not-harmful
19:16:00 <nikolapdp> PDP-11!!!
19:16:00 <heat> except if you go on joe rogan
19:16:00 <gog> i am not harmful :(
19:16:00 <Ermine> what other arches do we have in performance department?
19:16:00 <zid> oh nik is here
19:16:00 <gog> and i've never been on joe rogan
19:16:00 <zid> nik
19:17:00 <zid> watch me farm for vouchers pls
19:17:00 <gog> apple m2
19:17:00 <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
19:17:00 <bslsk05> ​github.com: lk/arch/vax/exceptions.S at vax · littlekernel/lk · GitHub
19:17:00 <heat> Ermine: arm64, ppc64
19:18:00 <Ermine> POWER
19:18:00 <heat> and that's probably it
19:18:00 <nikolapdp> SPARC V9
19:18:00 <heat> oh SPARC too
19:18:00 <heat> yeah totally, some niche people still run sparc
19:18:00 * Ermine sparkles
19:19:00 <nikolapdp> i'd run sparc
19:19:00 <heat> nikolasparc
19:19:00 <Ermine> And out of them only aarch64 delivers something comparable to x86
19:19:00 <Ermine> I guess
19:19:00 <nikolapdp> i should resrve that name for when i get a sparc machine
19:20:00 <geist> yah i was running my ultrasparc most of last week, just turned it off yesterday
19:20:00 <gog> i want an alpha
19:20:00 <GeDaMo> https://www.youtube.com/watch?v=h6zdf0O1Qo0
19:20:00 <bslsk05> ​'Barn Find PDP 11/73 - Will it boot?? - Part 1' by Vintage Apparatus (00:07:03)
19:20:00 <Ermine> Actually Hetzner has aarch64 VPSen
19:20:00 <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
19:20:00 <nikolapdp> gog gog you want the whackiest memory model
19:21:00 <gog> yes
19:21:00 <gog> and PALcode
19:21:00 <Ermine> Maybe I should figure out how to do bank transfers and find some bank which is not under sanctions yet
19:21:00 <geist> GeDaMo: yah the pdp 11/53 i have is very similar to that, just missing all of the plastic outer shell
19:21:00 <heat> Ermine: there's high performance sparc and ppc
19:21:00 <heat> for Special Customerz
19:21:00 <Ermine> for a lot of $$$
19:22:00 <heat> yes
19:22:00 <nikolar> €€€€
19:26:00 <heat> ££££
19:26:00 <Ermine> ¥¥¥¥
19:27:00 <heat> £££ is sparc, $$$ is spark, €€€  is sparque
19:27:00 <Ermine> ¥¥¥ is sparkamoto
19:27:00 <nikolapdp> i want one sparque please
19:33:00 <Ermine> I give another try to get into async io thing
19:34:00 <nikolapdp> what async io Ermine
19:34:00 <Ermine> onyx async io
19:35:00 <nikolapdp> ONYX
19:36:00 <gog> the year of the onyx desktop
19:38:00 <heat> the year of the onyx everything
19:38:00 <heat> Ermine: you mean the virtio-blk thing?
19:39:00 <Ermine> yes
19:39:00 <gog> onyx server 2024
19:39:00 <gog> now with more template metaprogramming
19:42:00 <nikolapdp> templates are overrated, real programmers use the PREPROCESSOR
19:43:00 <geist> copy paste for the win!
19:43:00 <gog> ARY
19:47:00 <Ermine> nikolapdp: onyx has both
19:49:00 <nikolapdp> both templates and CPP?
19:57:00 <heat> yes
19:57:00 <heat> onyx has C and C++
19:59:00 <nikolapdp> C C C C C C
20:01:00 <heat> oracle recommends oracle solaris 11.4 for its oracle servers
20:01:00 <heat> this is wrong, onyx 11.4 is superior
20:01:00 <heat> oracle onyx?
20:01:00 <heat> email me mr ellison
20:08:00 <geist> heat: i dunno, you have done nothing to convince me of this
20:08:00 <geist> at best it's exactly as good, as given by 11.4 == 11.04
20:08:00 <geist> 11.4 == 11.4 even
20:11:00 <heat> wait
20:11:00 <heat> are you larry ellison???
20:11:00 <nikolapdp> ?11.4
20:12:00 <heat> onyx goes through routine certification as a mjg-certified "Least crapper crapper OS" whereas oracle solaris does not
20:12:00 <heat> and this is worth a lot to your customers and partners
20:12:00 <nikolapdp> who are your customers and partners heat
20:13:00 <heat> i'm under NDA and as such cannot divulge such information
20:14:00 <nikolapdp> llies
20:19:00 <heat> >Thirty-two floating-point units and thirty-two Oracle Numbers units per
20:19:00 <heat> processor (one per core)
20:19:00 <heat> what the fuck is an oracle numbers unit
20:20:00 <nikolapdp> it's a unit for numbers, duh
20:21:00 <nikolapdp> by oracle
20:22:00 <GeDaMo> "Each of the 32 cores in the SPARC M8 processor includes an Oracle Numbers unit, which is specifically designed to
20:22:00 <GeDaMo> accelerate Oracle Numbers arithmetic performance." https://www.oracle.com/a/ocom/docs/sparc-t8-m8-server-architecture.pdf
20:24:00 <nikolapdp> heat: Specifically for fixed and floating-point numbers, Oracle Database has a unique data type called Oracle Numbers,
20:24:00 <nikolapdp> which can store fixed and floating-point numbers
20:24:00 <heat> yes that's where i found it
20:24:00 <heat> nikolapdp: where did you see that?
20:24:00 <nikolapdp> Oracle Numbers Acceleration
20:24:00 <nikolapdp> is the chapter
20:24:00 <heat> chapter of what?
20:24:00 <nikolapdp> page 11
20:24:00 <nikolapdp> of the thing GeDaMo linked
20:25:00 <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"
20:25:00 <heat> oh, that thing
20:25:00 <heat> i was on a different pdf
20:25:00 <nikolapdp> yeah
20:25:00 <heat> great stuff guys
20:26:00 <nikolapdp> what's great stuff heat
20:26:00 <heat> your work and oracle's work
20:27:00 <heat> both great
20:27:00 <heat> >Java Stream Acceleration
20:27:00 <nikolapdp> thanks heat, that means a lot
20:34:00 <heat> you are valid nikolapdp and i appreciate you
20:34:00 <heat> don't let anyone tell you otherwise <3
20:34:00 <nikolapdp> <3
20:43:00 <heat> i wanna go to clown college
20:44:00 <heat> i'm an amateur clown already, becoming a professional clown would be great
20:47:00 <geist> you shold be that guy that does the trampoline thing with the stairs
20:47:00 <geist> it's cool
20:53:00 <geist> actually gigantic floating point numbers sounds pretty cool
20:53:00 <kof673> is heat old enough to get the clown reference :)
20:53:00 <nikolapdp> geist, even better, variably length floats
20:53:00 <nikolapdp> s/variably/variable
20:54:00 <heat> its a simpsons reference but no i don't have every simpsons joke memorized
20:54:00 <heat> nikolapdp: even better, variable length floats OR integers
20:54:00 <heat> with high precision
20:55:00 <nikolapdp> i know right
20:55:00 <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!
20:55:00 * kof673 zzzzzzzzzzzzzzzzz
20:57:00 <geist> nikolapdp: well sure, but i mean in hardware that's pretty difficult
20:58:00 <heat> oracle will do anything to accelerate THE ORACLE DB
20:58:00 <heat> on THE ORACLE SPARC on THE ORACLE SOLARIS
20:58:00 <nikolapdp> ORACLE
20:59:00 <heat> they even have ORACLE java-tailored extensions
20:59:00 <heat> that they only provide to ORACLE solaris
21:09:00 <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
21:19:00 <vin> but the thing is I can't find any references to it other than https://community.intel.com/t5/Software-Tuning-Performance/Is-next-page-prefetcher-available-on-Haswell-microarchitecture/m-p/1100229/
21:19:00 <bslsk05> ​community.intel.com: Is next-page prefetcher available on Haswell microarchitecture? - Intel Community
21:19:00 <vin> Have you ever come across this before?
21:40:00 <heat> woah oracle gives you an arm ampere server on the free tier?
21:41:00 <Ermine> Is it enough for minecraft server?
21:42:00 <Ermine> they had an instruction on how to run minecraft server in their cloud
21:42:00 <heat> "Arm-based Ampere A1 cores and 24 GB of memory usable as 1 VM or up to 4 VMs."
21:42:00 <heat> no idea how many cpus you get, probably not the full amount?
21:42:00 <Ermine> FOR FREE???
21:42:00 <heat> but it's still great
21:42:00 <heat> yeah
21:42:00 <Ermine> 24G RAM FOR FREE
21:43:00 <heat> "3,000 OCPU hours and 18,000 GB hours per month"
21:43:00 <mjg> what's the catch
21:43:00 <heat> larry gets your home address
21:43:00 <heat> getting this for onyx sounds great
21:44:00 <Ermine> ... but not so great for deploying a personal vpn
21:44:00 <heat> why?
21:45:00 <Ermine> Idk how many hours does it consume, given encryption and stuff
21:45:00 <heat> 3000 hours is around a month
21:46:00 <heat> so if you have a core hogged at 100% CPU it should take ~3000 OCPU hours i'd guess
21:46:00 <Ermine> Ah, I'm bad at maths
21:47:00 <Ermine> Then it's bargain
21:47:00 <heat> it seems that you get 4 cores
21:47:00 <mjg> but SOLARIS does not run on arm?
21:47:00 <heat> or 4 vms with 1 core if you're running openbsd
21:47:00 <mjg> what is the cloud on? :(
21:48:00 <Ermine> I'm paying like $15/month for single x86 core and 1G RAM here
21:48:00 <mjg> where is "here"
21:48:00 <heat> oh that's awful
21:49:00 <mjg> also sounds rather expensive
21:49:00 <Ermine> ru
21:49:00 <heat> what service?
21:49:00 <Ermine> yandex cloud
21:49:00 <hunta987> I think Frantech gave me like 1 core and 4GB of ram for $15
21:49:00 <heat> do the traditional cloud services not do business with russia anymore?
21:49:00 <Ermine> "yes"
21:49:00 <heat> haha
21:49:00 <hunta987> no they do business with the shell companies located in Seychelles
21:50:00 <hunta987> so not russia
21:50:00 <Ermine> I have a vps in amsterdam
21:51:00 <Ermine> so I guess there are some shenanigans
21:52:00 <Ermine> But oficially, they don't work with customers from russia so they don't have to deal with authorities
21:53:00 <heat> yeah but yandex is actually russian right?
21:53:00 <Ermine> Yes
21:54:00 <heat> anyway gcp free tier is like 2 vCPUs and a gig of ram
21:54:00 <heat> i guess the oracle free tier for arm is so generous cuz its ARM
21:55:00 <heat> the demand must be wayyy lower
21:55:00 <Ermine> And I used to pay $6 for digitalocean
21:58:00 <Ermine> Oh, they also provide object storage
21:59:00 <heat> anyway what i really wanted to figure out was if they had SPARC offering
21:59:00 <heat> and the answer sadly seems to be no
21:59:00 <heat> they also don't offer solaris but oracle linux
21:59:00 <heat> :(
22:00:00 <Ermine> not even illumos?
22:01:00 <heat> why would they ever offer illumos
22:02:00 <heat> it'd be like azure offering reactos
22:03:00 * CompanionCube vaguely recalls the oracle free tier randomly disappearing off the network or getting reset
22:04:00 <Ermine> well, if they actively develop solaris
22:07:00 <Ermine> oh, onyx has process personalities?
22:09:00 <heat> In Theory
22:09:00 <heat> i haven't needed to use it for anything
22:10:00 <nikolapdp> what's a process personality
22:10:00 <heat> man 2 personality
22:11:00 <nikolapdp> huh interesting