#uACPI - a portable and easy-to-integrate ACPI implementation
1 messages · Page 26 of 1
1.23M
@fiery turtle if my spinlock kernel api aren't stubbed, but instead my allocator has no locks when it should, does that score not count?
1.48M
amazing
now I need to fix my fucking spinlocks™️
this is how I feel
ok i give up trying to run it and get a better score
1506330 ops/s is the final score
@gentle peak I need your wisdom
how do I optimize
me spinlocks
maybe u should ifdef the minIrql checks lmao
minIrql is a parameter
almost
idk how much of what you're doing is necessary since im not familiar with the design of your kernel
so the only advice I can give is using acq rel memory order instead of seq cst
that tanks the performance
nvm
also I seriously doubt spin locks are the bottleneck
when I stopped locking in my allocator, the score went up by many
numbers
direct or indirect stubbing is whats forbidden
idk if this falls under that
kinda does
@fiery turtle btw, does early table access use synchronization calls? i need early table access done so i can set up prcbs for synchronization
also if thats arguably wrong then my score is debatable because while my old PMM is synchronized iirc, the zig gpa is being given no mutex type atm
no
perfect
only map/unmap & log
cool
ill just have to figure out how to swap out my map/unmap once the MM is initialized lol
u can check the current uacpi init level to decide if u want to call early map or normal map
oh yeah tru
i was gonna do my own init level but that also works
before my MM gets initialized my map is an addition for the bootloader hhdm, afterwards its a completely different function lol
but i need the madt to get sync stuff online which the mm needs so whatever
yeah thats pretty normal
uacpi warns you if there's any unmapped memory that was mapped early
wait wdym?
tghdefrnbexF ed
could someone test this and give me the results
of Course
meh
yeah I observed that
1.335M
rebooting has stopped working in obos
why not use the 1.5M from earlier
because it wasn't legit
since the allocator had no locks while it should've been locked
lol
tahts even better
no worries
i use qemu-system-x86_64 -serial stdio -cpu host,migratable=off,+invtsc,tsc-frequency=100000000 -M q35 -accel kvm -cdrom obos.iso
qemu-system-x86_64 obos.iso -M q35 -m 1G -accel kvm -cpu host -debugcon file:/dev/stdout
I initially sent
that
might be missing 1 zero in the tsc frequency
but it doesn't affect anything
the vm might just run a bit slower
mainly because I don't have TSC
so my score becomes slower 
smh I have been boycotted
🤯
What CPU is that?
just dont tell anyone that they can add that extra zero to the cmdline 
13700k
try rebooting
Which it shouldn't be
Though I'm testing on Windows in WSL
AMD skill issue 
so is he iirc
pmOS has gotten 1.8 million on that PC
because hyperv is trolling
1 million points are missing
On my PC
too much trolling
5900X should be on par with 12700K or something
OBOS is broken on AMD
this is kinda bad because aml is different
remember
Still
wont give you the same number as qemu aml
Should give something similar
if u forget to unref an early access table
proxima did 9M in qemu with some optimizations
and on bare metal it did ~1M
just because it runs like 26k aml instructions
instead of 1.7k
it varies wildly between hardware
its more like, what that aml does
qemu mainly stresses allocator + sychronization primitives
yea
sure
credits to marca for helping me optimize spinlocks
man told me like one thing and this happens
he isn't on this server anymore
tho
What did he tell you
You could also see if forcing alignment on the atomic_flag to something like 8 bytes helps
#350158983316766730 message
(beware before clicking on the link, it's in hotgarbage)
((come prepared))
(((gl)))
Yeah I ain't reading that channel
for good reason
lol
alright leaderboard update time
lesgo
for anyone who doesn't know, think of that channel like breaking every rule of this server at once
also please don't use . as the separator in the numbers ☠️
❁
I can't wait for my position in the leaderboard to not change at all because everyone else optimized their stuff too
I need to retest pmOS urgently
I need to get my kernel to a state where I can use uACPI...
No.
https://en.wikipedia.org/wiki/Decimal_separator#:~:text=In English-speaking countries%2C the,%2C)%20placed%20on%20the%20baseline.
A decimal separator is a symbol that separates the integer part from the fractional part of a number written in decimal form (e.g., "." in 12.45). Different countries officially designate different symbols for use as the separator. The choice of symbol also affects the choice of symbol for the thousands separator used in digit grouping.
Any such...
yeah comma is a more proper separator
it depends on the country
i stick to US english in the docs, so . is consistency
it's not just US english that does. British english also does it
exactly
I've seen people in Spain use '
even better
how is this a surprise
yes
and . is decimal separator
thats the same thing
lmao
or well, 1.500 would be 1+1/2 whereas 1,500 is 1500
local discord users learning about different languages, life is beautiful
yeah
I'm in canada, so idk how that differs from US english except for the fact that canada wants to try and be different
yes
I'm Finnish and it always trips me up that we reverse them
A decimal separator is a symbol that separates the integer part from the fractional part of a number written in decimal form (e.g., "." in 12.45). Different countries officially designate different symbols for use as the separator. The choice of symbol also affects the choice of symbol for the thousands separator used in digit grouping.
Any such...
canada is sort of a merge of us and british english isn't it?
pretty much
I think oberrow was right
1,234,567.89
thousands separator is ,
lol sorry maybe u did
so did I
. is decimal and , is thousands
US english
its the same in europe i think
I think there was a bit of confusion about what separator was being discussed
in "canadian english" the thousands separator is a space
not just us english
but I have never seen any canadian do that
true lmao
eh it depends, in Finland people often reverse them even in English text
bruh limine is refusing to boot...
no uacpi logs
same thing in "canadian french"
help
except the decimal separator is ,
just use scientific notation and fractions
il sera "100 000,50" dans le francais canadienne
no fighting about separators
australian english can be either, depending on what region you live in. I normally just use a space
@hollow elm im updating the leaderboard and managarm is still using the old measurement with old uacpi, do u want to quickly do an update to latest to check if its better? (some people got a 5x speedup from just the update)
i got it
can you remind me later? currently working on something else
man pty or smth
man 3 termios
oh there u go
ah alright, ill queue it for whenver the next update happens then
man 7 pty is for ptys themselves iirc
would also be good to get leo to run the test on his cpu 
pty is the virtual consoles for in a window manager
true
though termios doesnt go in depth about what they are, you probably should read that one article hold on
what score have u got queued up for proxima?
@north holly https://www.linusakesson.net/programming/tty/
6,406,643
nice
I got 2 days and 5 hours to get bash
some osses have shifted places
I probably went like down a place or two
but proxima is still undefeatable
i just got 2.7M
-16 hours assuming I go to sleep
.
if u want to sumbit this instead of 3M then sure 
When was that?
.
bro actively ignoring me 😭
Oh
damn it
lmaoo
obos hasn't shifted
I didn't know it was pmOS
lmao
or well i replied to ur message
I was looking at other monitor and wasn't paying attention
the logs scroll by so fast because of all the other servers that launch
if u can give me an image with just devicesd that would be nice
maybe i can get a better run
It's even doing some dumb calculations in background
do u have a Intel Core i5-13600K @left orbit ?
Yeah thanks for the score ofc
13700k
an i5?
I think it's i7
you're third right now
with 3.2M
yeah i7 sorry
when iretq os on the leaderboard
wtf
slightly ahead of managarm with +20K
astral phd os confirmed
nah managarm is just using the old uacpi
I am gonna implement uACPI this week ❤️

pmos is currently behind obos but i guess that will change shortly after the final iretq remeasure
But what about this? 
How much time do I have?
how much do u need
Idk 20 minutes
thats fine
one exit(0) I guess
damn
It's because it has sse
astral fell off of third place
And my pthread_lock is just a couple of atomic ops
huh, u sure?
i have your cpu recorded only for pmos
the one oberrow submitted was using Intel i5-4590T
1.3M
this
I mean yeah
i did it on my 13700k :p
ah ok
i also did ilobilix 
does this look correct
Does this test do raw memory accesses?
no
ah right
astral fell off
yeah
Hmm this doesn't use lto
@left orbit didnt your os score insane as well?
\s
i will remove timers
how do u have so many ops
no i mean 2418
do u pass a bunch of weird options to qemu?
sudo qemu-system-x86_64 -serial stdio -m 512M -cpu max,+hypervisor,+invtsc,+tsc-deadline -M q35 -accel kvm -cdrom limine/pmOS.iso -smp 4
whats your qemu verison
QEMU emulator version 8.2.93
@calm latch by the way you lose a lot of perf my running with smp
yeah but it's missing some stuff + not open source
ah damn
[ 0.006877] [ 0] acpi: successfully loaded 1 AML blob, 1732 ops in 0ms (avg 3082947/s)
[ 0.006756] [ 0] acpi: successfully loaded 1 AML blob, 1711 ops in 0ms (avg 3909784/s)
and i'm probably gonna rewrite like 90% and implement missing stuff so it might drop a mil or so
??
hows is there a different amount of ops
between runs
smp?
ah, its the per-cpu processor objects
yeah definitely run with -smp 1 if u want the biggest score
okay even with -smp 32 i'm still getting around 2.5 mil
why do you run it with sudo?
(i only have 16 harts)
not in kvm group
not in kvm group 


ah ok
ilobilix Yet another monolithic Linux clone wannabe. Currently under a rewrite
nice description
do u ship floppies or something
Hyper-V memes?
tape drives
there is no image building step 
how do u even boot it
bruh
I just xorriso pmOS
fair but u should have a way to build it for testing on real hw
well if u send a tarball with your os and paste the command im sure people can test
missing out on free points
that is O3 normally
#1217009725711847465 message
u should be doing this
the lb score is 3.9M soo
Nah my pmm is bad and it's still fast
Mine is segregated fit
But it's doing lazy allocations and giving it one page at a time as it pagefaults
On first access
Even though it can give contiguous ranges of any size in O(1) and map that immediately
So like there is room for improvement
yea, i'm not getting higher than 3.9m
I'll continue my optimizations soon™️
iretq might get a higher score, but w/e we can queue that up for the next update
rn I got bash to worry about
you're second anyway and i doubt you'll beat proxima
i will one day.
the currently recorded proxima score is no fpu
One day I will rewrite astral and all of you will have 10x less score 
14m is insane
You can do jit in uACPI 2.0 
that was LTO + O3 + AVX2 + some stuff stubbed
yeah i want to try
just generating hardcoded x86 instructions for each aml op might already speed it up by an order of magnitude
although its kinda stupid and a waste of time since it takes like a few ms to load even on most insane firmware
If anyone could test and verify score, please do.
qemu-system-x86_64 -machine q35,smm=off -cpu host -accel kvm -name "menix x86_64" -serial stdio -no-reboot -no-shutdown -m 2G -smp 1 -drive format=raw,file=fat:rw:install,if=none,id=fatfs -device virtio-gpu -netdev user,id=net0 -device virtio-net,disable-modern=on,netdev=net0 -device nvme,serial=deadbeef,drive=fatfs -bios /usr/share/ovmf/x64/OVMF.4m.fd
needs ovmf*
My score is with old uacpi but I douvt itd matter that much
are u saying it wont boot without ovmf?
heavily depends on the allocator
Mine is slab so probs not much difference
it moved me from 1.5 to almost 4m
with no diff on my side
I can send an iso ig
qemu-system-x86_64 -cdrom astral.iso -M q35 -enable-kvm -cpu host,migratable=off
3rd place reclaimed
(but I already merged the pr so next time ig)
did u do LTO +O3 for this?
no -O2
but why no o3
why u no optimize
what
idrk why
what happens
I could try looking at why lto doesnt work
solution: disable LTO instead of fixing the bug 
the ones in my kernel
I never built with lto in the first place soooo
lesgo

once I finish this cogmind run I'll see why lto breaks
astral phd os confirmed
zamn
astral not beating menix in this lb update 
soon
can you try menix on your cpu
sure
.
entire leaderboard gonna be tested on 13700k soon
based
lmao
why zip
i'm getting my 265k on monday
i will eat u
have no iso
thats better than having random cpus
sorry
because he does vvfat 
fent
works on my machine 
works on my arch 
but yea, no non uefi boot
i'm making an efi stub equivalent
for the sake of it
what
bruh 
unlucky wsl
i did like 10 times
menix is not hyperv friendly
woe
990K-1.1M
that's cursed
that's worse than what i had before
@fiery turtle what cpu you got
maybe it's an intel thing
wait @dusky glade you have a good cpu, right?
yea
i9 9900k
i got 2M once lmao
bruh
[ 0.057703] [ 0] acpi: successfully loaded 1 AML blob, 1708 ops in 6ms (avg 255050/s)
new top score for menix
update leaderboard rn
💀
[ 0.012915] [ 0] acpi: successfully loaded 1 AML blob, 1708 ops in 0ms (avg 2012157/s)
yeah no i cant lol
maybe once i figure out why proxima's mutexes die on the 13700k
wdym by die
absolutely tank the performance
Score invalidated?
on my cpu, normal proxima is 6.4M, but on the 13700k the exact same build is like 5M
if I stub out the locks my cpu gets a lower score than the 13700k
maybe
menix does 3.87M normally but it does 1M on my pc
soooo yeah..
also it triple faults on my pc 
on a write to the STAR msr
I still think it could be caused by the kvm-on-wsl testing setup
Under VT-x or AMD-V virtualization, executing PAUSE many times in a short time interval may cause a #VMEXIT. The number of PAUSE executions and interval length that can trigger #VMEXIT are platform-specific.
I think I might know why obos runs a bit slower
on amd
virtualized
it uses the pause instruction for all spinlocks
which causes a vmexit
actually
nvm it also happens on intel
are your locks that contended?
if the lock isn't able to be taken immediately upon calling acquire it's contended
the more threads are trying to acquire the lock at the same time, the more contended it is
then no locks are contended at all
everything I've been sending have been uniprocessor builds
then pause shouldn't be executed at all either
same
smh no mwait and c/p states or wahtever
just dont have locks
*might cause a vmexit
why
because cpus are stoobid
same as halt i guess, so that the host can schedule something else instead of wasting cpu time
depending on how the host handles this vmexit, it could be either very cheap or super expensive
also what else do u do, like literally start spinning like crazy?
that would tank the perf even more
aren't vmexits in and of themselves expensive
like the cost of one vmexit is very big
even if the actual handler doesn't do much
thas what a spinlock is
if u spin without relaxing the cpu ur likely hurthing the pair thread, wasting enery, etc etc
dont have smp
if u do pause() on a spinlock its likely contended so you're okay with it "pausing" for N microseconds
true but if the hypervisor is shitty it might be beneficial to avoid
#ifndef WILL_RUN_IN_VM 
well theres the hypervisor bit in cpuid
it's been nearly a year since the last LAI commit
lai is kill
@fiery turtle please fix these warnings else streaks will kill me if i try to upstream the port of uACPI to Ironclad lol
/base_dir/ironclad/source/uacpi/interpreter.c: In function 'handle_create_field':
/base_dir/ironclad/source/uacpi/interpreter.c:1740:17: warning: 'field_data.region' may be used uninitialized [-Wmaybe-uninitialized]
1740 | uacpi_shareable_ref(field->bank_region);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/base_dir/ironclad/source/uacpi/interpreter.c:1595:32: note: 'field_data.region' was declared here
1595 | struct field_specific_data field_data;
| ^~~~~~~~~~
/base_dir/ironclad/source/uacpi/interpreter.c:1751:17: warning: 'field_data.field0' may be used uninitialized [-Wmaybe-uninitialized]
1751 | uacpi_shareable_ref(field->index);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/base_dir/ironclad/source/uacpi/interpreter.c:1595:32: note: 'field_data.field0' was declared here
1595 | struct field_specific_data field_data;
| ^~~~~~~~~~
/base_dir/ironclad/source/uacpi/interpreter.c:1754:17: warning: 'field_data.field1' may be used uninitialized [-Wmaybe-uninitialized]
1754 | uacpi_shareable_ref(field->data);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/base_dir/ironclad/source/uacpi/interpreter.c:1595:32: note: 'field_data.field1' was declared here
1595 | struct field_specific_data field_data;
| ^~~~~~~~~~
/base_dir/ironclad/source/uacpi/interpreter.c:1745:35: warning: 'field_data.value' may be used uninitialized [-Wmaybe-uninitialized]
1745 | field->bank_value = field_data.value;
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/base_dir/ironclad/source/uacpi/interpreter.c:1595:32: note: 'field_data.value' was declared here
1595 | struct field_specific_data field_data;
|```
I indeed will
I've seen them posted 999 times so yeah ill fix them
They're completely bogus tho
Wmaybe-uninitialized is quite unreliable
If mint finishes porting it, it could be a good addition until I find uACPI but written in Ada ™️
Ask chatgpt for c to Ada converter 
Yeah and what's worse is they change the logic in every gcc version so it doesnt even reproduce on my gcc
the simple fix is just adding a memset or similar to every initialization
I was thinking of something smarter because its asking me to zero a 64 byte struct for no reason
hmm maybe if i update my wsl2 to ubuntu 24
-Wno-maybe-uninitializedthere, fixed 
yeah i wish, but i dont control the flags used by whoever compiles uacpi 
__attribute__((initialized)) every single variable 
Apparently it is
btw hows ada c compat?
well, gcc 14 has it enabled by default sadly
yeah gcc 11.4 (that comes with ubuntu 22) doesnt produce those warnings even with uninitialized explicitly enabled
daily gcc compile from source session incoming i guess
or maybe i should just run docker
good
nixos ftw
well what does that mean
do u have to make bindings yourself, or are they natively imported
like zig
or
inb4 -Wno-maybe-unitialized in the spec file
gcc can autogenerate bindings for Ada
which I forgot to tell to @vagrant hull
oops
its just ubuntu with tools from 20 years before the distro release year
fkn annoying
yeah its why I switched to arch
and then eventually to nixos
gcc -c -fdump-ada-spec -C header.h does it
bruh
💀
thank god i am lazy and i did not start writing them
hell yeah
lazyness saved me once again
clutch
employee of the month
So do I gotta implement something else besides the function prototypes in kernel_api.h
if u want to go fast
readme has all the headers listed, but platform/libc.h is probably the most important for that
yeah
good luck!
so I noticed like obos doesnt seem to implement uacpi_kernel_pci_device_open and uacpi_kernel_pci_device_close
or am I dumb
obos is probably on an older uacpi commit?
ahh
or you specifically are looking at an old commit
no thats prolly it im guessing
bruh are u fucking kidding, ubuntu 24 gcc (GNU 13.3.0) still doenst produce the goddamn uninitialized warnings
Its like 3 lines of code in that function so its not that vomplicated
Try building it from source
that was my next step i just didnt really want to do it
let me try clang before i go there
Just do a static build and stash it in a random server for ci or something
its kinda hard to ship random binaries into github ci
because u start from scratch every time
just push the binaries to a throwaway branch 
so whatsup with this
I get ptsd from looking at that
is whats up with this

well ig my question is, is it optional?
Yeah
i mean its behind an ifdef
well yeah
should i add an (OPTIONAL) comment perhpas
btw, if not sure about some option, there's platform/config.h
and then impl it
it explains each option in depth
ok
no no u absolutely dont do that
in cflags is probably the best place
u use your build tool to propagate the define everywhere
yeap that makes sense
if u modify kernel_api.h directly u have to ship uacpi's entire source in your kernel
so u cant use a submodule
its designed so that u dont have to modify uacpi's source directly
though the way I am building it with my project is rather scuffed
ah config.h is helpful indeed
Define it properly, dont do like I did
haha ubuntu user
how are you liking that llvm 15 and qemu 4? 
Real osdevs use lfs wsl
also does ubuntu like abuse snap?
i actually wanted to do that
for like the longest time
its such a retarded idea i might do it
well no its probably not hard but annoying lol
you need linux to build it so thats one thing
lies
im on latest gcc
@fiery turtle I hate to plague u with questions but should I just ignore UACPI_PRINTF_DECL(2, 3)
its a printf attribute
well, wsl works but ideally youd wanna bootstrap it so you probably dont have a distro yet
ah
try adding the offending warning flag yourself?
nah i mean im compiling it right now 
ahh
I hate those gifs 💀 I have already banned one duck for posting too many of them 
who
tbh i didnt even understand what this was in reference to or what it means
duck.dev
wtf 🙏
will i break my apt if i do make install for gcc compiled from source
why
if you did it with the default prefix of /usr/local probably not?
because there's already a gcc
it will rewrite /usr/bin/gcc
ah so i dont need to do anything?
or dpkg can return error
yeah I don't think, though ig you can run make install as non-root first to make sure that it indeed puts it to there
well if it bricks my wsl i know who to blame 
for removing gcc i always using this command: sudo rm -rf /boot
just install without sudo first
see where it tries to install it
if it doesnt do /usr/local then have fun reconfiguring and rebuilding i guess 
but it should
yeah I did remember right, configure puts it by default in /usr/local
Or make -n
Which just prints the commands
yeah even better
i was trying to think if there is a way to tell install to do a dry run
without thinking about telling make to do a dry run
Just use astral to compile and try gcc out
somehow compiling via wsl takes longer than compiling via astral 
i WAS gonna give mintia amd64 port a go but i guess i'm doing lfs wsl now
lmao
Once I make my I/O better and rewrite my scheduler it could unironically be kinda fast I think
Keep me updated on how it goes
i'll just build lfs systemd and tar it up the import as a wsl distro
hopefully it just works™️
idk wasting my time i guess
Science
You can download the kernel source from ms
nah the kernel is like separate from the distro
ah
every wsl distro shares the kernel iirc
but i built one anyway
since you can download it as mathew said
bruh libbacktrace also takes 10 years to compile
yeah that makes sense
because its like highly specialized for wsl
it's nothing special though, just some weird drivers i guess
but all in all i can skip the kernel and a bootloader
im assuming they also ship the config that they need for wsl?
with like all stuff disabled they dont care about
i found out you can even make wsl spawn a console with earlyprintk
yeah they do
its in the repo
also no ☠️
the kernel has like most of the unused shit turned on anyway
i still built like amdgpu and intel gpu drivers for some reason
nouveau too
its over virtio-console right
💀
least lazy ms project
no idea, you can put [wsl2] debugConsole = true
in %userprofile%/.wslconfig
and the next time you launch wsl it will spawn a console
dont do it now because you gotta wsl --shutdown but yeah its a thing
interesting
❯ lspci -vt
-+-[c5af:00]---00.0 Red Hat, Inc. Virtio console
+-[b8de:00]---00.0 Microsoft Corporation Device 008e
+-[a648:00]---00.0 Microsoft Corporation Device 008e
+-[7cdb:00]---00.0 Red Hat, Inc. Virtio file system
\-[0000:00]-
wsl pci topology is insane
they use pci segments exclusively
[ 0.000000] printk: bootconsole [uart8250] enabled interesting
lmao
so your average hobby os wont boot
they also use aml
Omw to make astral bootable on wsl
shouldn't be too hard
assuming you make your kernel compatiblke with linux boot proto
that is kinda cool
there's a special VMOD device which is wsl specific
which handles all wsl stuff i guess
and i dont see them exposing PCI topology in any way
so i wonder how linux figures out the pci segments to look for
nah
this option probably sets the AML variable to 1
We need limine for wsl
ahhh that is kinda cool
Wait wtf acpi has DOS device names? 😭
nah its an iasl bug
its Displayed Device Name
aka how to show it in UI
there's also a virtual TPM device
Name (_STR, Unicode ("Enclave Page Cache 1.0")) then wahtever this is
Hyper_V_Gen_Counter_V1 and this
Name (_HID, "ACPI0012" /* NVDIMM Root Device */) and whatever this is
Ohhh
I really need to do acpi stuff in astral but before that I have like 3 other things I need to do
astral suspend to S3 support 
func fact WSL supports up to 1000 processors
and includes all of them in the aml blob under if statemets
wtf lol
least scuffed aml
they were too lazy to generate this at runtime
Does aml not have a for
their entire aml is under if statements
yes but u cant alter these names
like C variable names
if u know what i mean
yeah u cant
well with safe modifying code u absolutely can
no one is that creative
especially since AML supports dynamically loading other aml code
why can't you Name ( "CPU" + Counter, ... )
TLDR: who knows
they could allow it
atm all names are stored literally
there isnt a StringOp prefix to them
its just literally 4 bytes in a row
ah okay that makes more sense
and that 4 byte literal could mean a lot of things depending on context 
could be a field read, could be a method call, could be a ref
depending on context
but they could say e.g. NameOp accepts either a name literal or a TermArg that resolves to a name
thats definitely implementable
and if you're curious
im still compiling gcc
or libstdc++ ig
i9 9900k
hmmm
its on an nvme too
At this rate astral will beat wsl
i really need to reinstall this windows because its very old and has accumulated a ton of crap
ur guys' wsl are cursed in a way where u dont get invtsc
and me wsl is cursed in a way where i get 99% variance in uacpi scores
cant win either way
wsls are cursed no matter where u look
Iirc that is like because you have a specific thing for your tsc
I think thats like scaling
And hyperv likes it
lack of skill issue
Like if your cpu doesnt support scaling the tsc hyperv just assumes it wont be invariant cuz of vm migrations and doesnt expose the bit
Its annoying because you cant disable this
i wonder how fucked would trying to boot limine on wsl be
u would just stub the linux boot protocol i guess
i would love if it was somewhat upstreamable tho
but then limine wont be able to talk to any of the disk drives
it would need a virtio-fs driver
there isnt a bios or anything
and the memory map it can figure out from the nvdimm aml device somehow
virtio-fs driver for limine wouldn't be too hard maybe
finally, a uacpi integration for limine 
then its just a matter of time when limine ends up bloated like grub where it has all kinds of drivers starting from usb 
yeah i think:
Device (\_SB.NVDR.N000)
{
Name (_ADR, Zero) // _ADR: Address
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
Return (CDSF (Arg0, Arg1, Arg2, Arg3, _ADR))
}
Method (_LSI, 0, NotSerialized) // _LSI: Label Storage Information
{
Return (LSIM (_ADR))
}
Method (_LSR, 2, NotSerialized) // _LSR: Label Storage Read
{
Return (LSRM (Arg0, Arg1, _ADR))
}
}
u use _LSI and _LSR
and that returns some nvdimm garbage that probably contains the phys address
of where ram exists
hardcoded like the rest of this info probably
this whole thing is only slightly cursed


