#ReactOS's Modern Hardware Woes

1 messages Ā· Page 2 of 1

bright gale
#

so it is mapped somewhere

buoyant thorn
#

pfn? page tables? they are mapped. But is it hhdm?

bright gale
#

i mean this function looks like a typical phys_to_virt

buoyant thorn
#

I looked at what it does briefly and it's like some macro would do. It gets pfn number from the phys addr, then it gets pointer to the corresponding pfn entry and from there it gets pte address. Bingo. After you have this, you can get vaddr of the requested phys addr. because of so called recursive pagging. Have no idea why it's called that, bc it's recursive only in regard of mapping the page tables themselves.

bright gale
#

im confused

#

whats a pfn entry

buoyant thorn
#

An entry in the pfn database. Each such holds info on a ram page. Among which pte address for the mapping currently using this ram page.

bright gale
#

what if there's multiple address spaces mapping it

buoyant thorn
#

It must be for the current context I'd say. There are prototype ptes as well for shared memory.

bright gale
#

hm

#

so if its not mapped anywhere that would return null?

buoyant thorn
#

I guess. There's such a check.

bright gale
#

i see

hard flower
#

I got jumpscared by this

#

But yeah kind of

#

I figured it out when I working on another PR and confirmed with Windows

hard flower
pseudo surge
#

i love walking ntdll exports and extracting the syscall numbers and doing direct syscalls

bright gale
hard flower
#

zaval explained it

#

its kinda like that

#

What makes it page
chapter 15

stable topaz
hard flower
#

it is lol

stable topaz
#

And yet

#

Our Mm is still broken

#

Depsite half of us reading that

hard flower
#

#DownWithARM3

bright gale
hard flower
#

It first checks if there is an entry in the PfnDatabase

#

And if it is then it's mapped

#

Otherwise nope

bright gale
#

but pfndatabase contains every physical page

hard flower
#

Yes

bright gale
#

so like, literally all physical memory is always mapped?

hard flower
#

I think so

bright gale
#

then its literally hhdm lol

#

just kinda indirect because stuff isnt mapped at a fixed offset

hard flower
#

Yeah

normal reef
#

how does that work on 32 bit then

bright gale
#

@thin temple btw did u see that? Nt also has an HHDM now

scarlet nova
#

good for them tbh

pseudo surge
kindred cliff
#

oh nice

#

wait is that the f00f bug in your bio

hard flower
#

Source: I tried the test on x86 build as well and it works

buoyant thorn
grim briar
#

ig it was meant as describes every physical page?

#

well idk

bright gale
#

So for all intents and purposes it's the exact same thing just with an indirection

autumn pond
buoyant thorn
# bright gale So for all intents and purposes it's the exact same thing just with an indirecti...

Then page tables are also hhdm. Pfn is not for the mapping role finally, it's for state dynamics maintenance and ram allocation (working sets management). The mere fact you can derive a vaddr for a given physaddr using a pfn entry doesn't make it hhdm. Hhdm is just a range in virtual address space where all ram is mapped. whereas pfn is not like that, it's metadata about a lot of mm stuff put in a structure organized in a quite complex way. This drastic difference is because these 2 were meant to serve absolutely different things.

bright gale
#

Sorry I don't understand the difference

buoyant thorn
#

Are page tables hhdm too?

bright gale
#

The idea of HHDM is u have a way to access any physical memory without mapping it explicitly

#

The fact that its easy to calculate that place doesnt mean its fundamentally needed

#

It can be indirect like nt

autumn pond
#

i mean who was the first to call it so

buoyant thorn
#

The idea (or rather purpose) of pfn is totally different. It's not for "accessing any physical memory". It's for keeping the state of every page. Either it's free, standby, modified or in use and if in use then by what. Telling that it the same as hhdm is like telling that page tables are hhdm, page tables then would be even closer. Accessing PFN you don't access "any physical memory". Nor even you can do that. You wouldn't be able to access a page if it weren't mapped. Because there is no any hhdm and pfn doesn't do any hhdm trickery. Maybe julysky could convince.

bright gale
bright gale
#

What's relevant is given a physical address u can access its contents without mapping it

buoyant thorn
#

No you can't

bright gale
#

Thats what that function does tho

buoyant thorn
#

No

bright gale
#

#1325160121474486372 message

#

Literally the guy who sent the pr

buoyant thorn
#

If the page hasn't been mapped you wouldn't be able to access it.

#

so like, literally all physical memory is always mapped?

The answer to this question is no

bright gale
#

Well then you know better than a ros dev

buoyant thorn
#

You didn't understand him correctly.

bright gale
#

Ill wait for their input on this

buoyant thorn
bright gale
#

No lol I'm just repeating what I've been told and what I've briefly seen in the tests, other than that I dont really care about arguing about it I just wanna know the truth

buoyant thorn
#

I see. I tried to explain, but I guess the authority of julysky's level is needed here. But I think he doesn't like ros, so I am not sure if tagging him here would be a good idea. trl

pseudo surge
kindred cliff
#

little messy but it works really well. it's backed by some assembly files to get the names right and stuff

pseudo surge
#

i also tried making my own ldr, however API sets and SxS finished that attempt

kindred cliff
#

oh yeah the modern stuff is tricky

kindred cliff
thin temple
#

Not news

#

They use one on 64 bit to accelerate arbitrary page frame accesses (no need to set up a temporary mapping) especially during times where the other mechanisms wouldn't work because they're at elevated irql and can't take page faults and so on

#

They still use the recursive mapping to access the page tables and they still use the file mappings to access page cache data

#

Also that has nothing to do with the what makes it page thing that was posted literally at all

#

I believe you guys are confused

#

No

#

There is an "hhdm" but this function has absolutely nothing to do with that, it isn't even adjacent

thin temple
buoyant thorn
#

Well. I tried to explain that.

#

But they didn't want to believe me. trl

thin temple
#

For a private page, the PTE address field of the PFN structure points back to the address within the recursive page table that currently tracks the page (NOTE that the recursive page table is different for each process but resides at the same virtual base address in each of their address spaces)

#

Because recursive page tables are "unrolled" virtually into a linear array, you index them by virtual page number to get the address of the corresponding PTE that maps that virtual page

#

This means you can easily un-index it with simple arithmetic to recover the virtual address from the pte address

#

That's what they're doing here

#

This function lets you figure out where a private page is located in a process's address space given its physical address, not within an hhdm

#

This function would not work for a shared page (such as a file cache page or page of shared anonymous memory) because the PTE address for those is a "prototype PTE" which does not reside in process page tables

#

And it definitely is not looking the page frame up in an HHDM

#

For that they just use a simple macro that adds an offset

thin temple
hard flower
#

So it can tell if a page is located in a process' address space

#

Does that also include the pages allocated for setting up the address space for the process of not?

thin temple
#

Based on the simplicity of the function I'm guessing the caller is meant to already know it's a private page or is prepared to deal with the nonsense result if it's not

bright gale
#

Do u know the api family for hhdm?

thin temple
#

I don't think there is one I think it's just used internally for what I said

hard flower
thin temple
#

This works because the page table is guaranteed to exist and be wired in memory for as long as there's a resident standby page with a reference for it

hard flower
#

So wait

#

I can use this to determine if a page is being used for the page table for the running process?

thin temple
#

Use what to determine that

#

Ah yeah page tables are private pages and their PteAddress points to the upper level table entry, so the resulting virtual address would be the page table's location within the recursive page table range

#

And you could use that to determine that yes

hard flower
#

that solves another problem I have! Nice

bright gale
thin temple
#

The virtual address of the pte mapping it is stored in the PteAddress field

bright gale
#

So like one step after that

bright gale
thin temple
#

For example if they do this for a page table then the page table presumably has some reference stopping it from being paged out

#

They could also hold some spinlock

#

That's not the province of this function to worry about

bright gale
#

Oh

buoyant thorn
bright gale
#

I mean as long as they implemented it correctly

thin temple
#

Also what's with that nerd in the comments to the PR

#

šŸ¤“ "is it allowed?"

#

Nobody tell that guy that the vast majority of the reactos kernel was written in this exact fashion (understanding and manually decompiling a disassembly w/ help of debug symbols)

autumn pond
#

its sad that their project to write new mm wasnt completed

#

when they hired a guy to redo the memory manager

stable topaz
stable topaz
stable topaz
#

If it’s functionally the same because you looked at how it works cool fine

#

Ida Is only so useful to understand what you’re doing

thin temple
#

Insert Alex Ionescu pushlock.c with "Set a to b." type comments

stable topaz
#

I think everything Alex wrote should be thrown out

#

fucking bullshit file

#

Rewrote a bunch of code from him through all this because he didn’t understand what he was doing

bright gale
#

Is that because he just copied from ida

stable topaz
#

There’s worse example

thin temple
#

It's just a dumb decompilation job with no understanding of how the pushlocks worked

stable topaz
#

Ipi.c was really bad

#

Parts of Ob

thin temple
#

The comments are only there in an attempt to obfuscate this lack of understanding, seemingly

thin temple
unique lichen
#

I can't remember which version of pushlock he did... He must have taken the early version before it became unfair?

stable topaz
#

All of the accused code is Alex

#

But MS also loved Alex and we were audited blah blah

autumn pond
#

its remarkable how different people express different opinions about alex

#

apart from the comments the reactos version of push locks looks good, but im no expert. have you guys noticed any technical problems with it ?

thin temple
#

No because it's an exact functional replica of how it was in windows in the early '00s

#

It doesn't have priority inheritance, there's that

stable topaz
#

And Alex is the personification of the opposite opinion

#

I want reactos to be compatible with windows drivers and apps.

That means we have to replicate a lot of the NT architecture,

That doesn’t mean everything

#

For instance the arbiter system from NT is one of the stupid over dramatizations of how handing IRQs I’ve ever seen

#

I understand it better than anyone on the team at this point, I’m not reimplementing it

thin temple
#

I don't think the memory manager needs to be identical to NT's internally

stable topaz
#

true, and ARM3 is a poor attempt at making something closer but sacrificing a good design

#

The previous Mm was buggy but a little better

#

Had the foundation to be something usable

#

ARM3 is alex’s design remember

#

We tried to have a contract to fix the Mm but it was all spent undoing Alex bs

thin temple
#

I would do something a little like what I'm planning on which is to make it a lot like UVM (including how the fork support works) but with NT-like page lists and working set management

pseudo surge
hard flower
#

But yeah I know how to figure this out now

hard flower
#

I wanted to use MI_TRACE_PFNS and fixed compilation on amd64

#

And he told me to avoid it since it doesn't play well on SMP

hard flower
stable topaz
#

Just understand what you’re writing

#

understanding what windows does with Ida isn’t a sin

#

TLDR just don’t be Alex

thin temple
#

well yeah thats one reason

#

NT's does implement COW fork

#

but in a stupid way

#

that could be avoided by just designing fork into it better

autumn pond
autumn pond
#

i should check how it works in reactos

stable topaz
#

It doesn’t

bright gale
#

How complex is ros memory manager?

autumn pond
#

actually i wonder how fork works in nt

hard flower
#

I was initially looking at the ROS memory manager because of something else

#

But I think I mostly got the high level idea

unique lichen
#

The memory manager initializes a new address space for the child process. It can attach into the parent's context and walk the parent's VAD tree. This tree tracks which virtual addresses have been reserved.

#

For each inheritable VAD it allocates a special inheritance descriptor and charges quota. For each created descriptor duplicates the VAD into the child's.

#

Then for each PTE decides the type; for example, for fork PTE would just increment its reference count I believe.

#

It also needs to attach into the child's context to add working set elements. Then it links each descriptor into the parent's clone tree.

#

I was going to say that conceptually it's not difficult, but it's actually quite racey. And it's probably at least 6 levels of synchronization.

#

The kernel clones the handle table as well.

#

It's probably been rewritten for NT 10, but the core is still the same. Probably, at least he improved the creation of cloning chains to improve parallelism.

#

It's not so surprising that ReactOS might not support this, I think today the need isn't that great in a Windows-like ... Maybe for debugging.

hard flower
#

I think ROS might need it considering there are plans for the POSIX subsystem on it

unique lichen
stable topaz
#

Reactos can now burn CDs

#

And use CD DRM in latest nightly

stable topaz
#

I'm kidding, we replied with a massive comment that is a NOT SO tldr of "What ReactOS is allowed to do"

#

So if you're interesting in the subject, yeah lol

bright gale
#

but thats kinda cool anyway, i remembed CDs being kinda complex

stable topaz
#

it's just ATA passthrough

#

not too bad

#

fun though!!

#

I actually like that standard a lot

#

you can do a lot of cool things with it

bright gale
#

ATAPI or whatever?

stable topaz
#

Actually passthrough exists in a lot of things

#

like USB cd drives

#

for example

#

usbstor.sys itself is a SCSI driver

#

It's just one of those things that "just works" on windows that you don't think about for a hobbiest OS

hard flower
#

🄶

stable topaz
#

bingo

#

that's what i do

#

you did nothing wrong

#

afaic

hard flower
#

God I'm reminded of that weird drm

stable topaz
hard flower
#

šŸ’€

#

And it used tls callbacks

#

Oh yeah does ROS do tls callbacks?

stable topaz
#

yes

stable topaz
#

if any luck first PR that allows the new ACPI driver to be USABLE will open before july 20th

bright gale
#

Daamn letsgo

stable topaz
#

I ended up writing a Ryzen GPIO driver out of annoyance

bright gale
#

The one required for the power button?

surreal void
#

Wasn't it also some ACPI namespace or something?

stable topaz
#

few more fixes have been thrown into latest nightly, hopefully the new ATA + AHCI combo driver will kick into high gear

#

because if we try to merge this ACPI work without it funnny things will happen

autumn pond
thin temple
#

its more complicated than the uvm way and slower

stable topaz
#

I took off Friday and Thursday

#

So I can get this going

#

But also it’s my birthday on Saturday so

#

What I want for my birthday is functioning ACPI

bright gale
#

lmfao

#

great goal what can i say

stable topaz
rotund ibex
#

Pog

marsh folio
bright gale
#

wdym

tender ferry
#

this says managram

#

no nayux

severe quartz
bright gale
rotund ibex
tender ferry
#

yes

#

it's a joke

#

people often misspell managarm as "managram"

#

which is also why i spelt nyaux "nayux" on purpose

buoyant thorn
#

nanogram. trl but, of course, mammogram is the best.

stable topaz
#

Getting ready for first server motherboard uACPI boot with reactos

stable topaz
#

UACPI did work

#

our VBE driver did not lmao

hard flower
#

@stable topaz happy birthday!!

stable topaz
hard flower
#

Idk if it's 19th over there for you
It is here

#

So h

stable topaz
#

4 hours till for me so close enough

#

Thank you

gloomy burrow
#

Happy Birthday

bright gale
rotund ibex
#

Happy Birthday!

kindred cliff
#

happy birthday

marsh folio
marsh folio
fervent mica
#

Aaaaa happy birthday hope I'm not too late

sleek badger
#

happy late birthday!

stable topaz
#

A reverse sleeper so the mb is ofc older but still uACPI handles it well

bright gale
#

what's a reverse sleeper lol

hard flower
#

Basically the opposite of a sleeper build

#

Where you have an old case with brand new hardware inside

livid marsh
stable topaz
#

3.24

bright gale
#

ah lol

livid marsh
#

ahh

bright gale
stable topaz
#

yeah it’s using uACPI, and the new pci.sys

bright gale
#

nice

#

how close is it to being PR'able?

stable topaz
#

Pretty close I only really have 2 regressions I need to solve

bright gale
#

thats pretty cool

stable topaz
#

No?

buoyant thorn
#

Why the ? You aren't sure or what? I asked because I haven't used these modern glassy cases with a dozen fans. Everything is on laptops. My last PC (lost with the home) had way less fans and they were smaller, but of good quality. Still the noise drove me crazy. It was not even from fans, but from air flowing through the small holes in the back side of the case. And here I see a dozen of pretty big fans, that's why I asked. Genuinely interested. So it's quiet? With all these fans spinning it doesn't do even that waterfall sound?

bright gale
#

If you look at the pic only one fan is connected out of 3 on the front

buoyant thorn
#

Well, at least 3 of the visible then. In addition to this on the right, CPU's one and on the back look spinning too. Plus, there should be something on GPU and maybe with SSD.

stable topaz
#

I’m confused why you’d think it wouldn’t be quiet

#

That’s why the ā€œ?ā€

#

I don’t think I’ve seen a PC case that was genuinely audible in years

buoyant thorn
#

I explained why. It's probably we have different noise sensitivity. On the scale 0 to 10, how would you evaluate its noise level. 0 being no any noise, 10 unbearable, 5 - after 30 mins getting uncomfortable.

bright gale
#

@stable topaz are u guys feeling scared now

stable topaz
#

lol no

#

But I’m glad they’re making progress :

bright gale
#

lol

stable topaz
bright gale
#

nvm it doesnt have much

stable topaz
#

Minesweeper doesn’t need much

bright gale
#

is it really just this?

stable topaz
#

Ehh

#

Doubt

bright gale
#

lol

#

fake video

#

i mean they have a literal firefox icon on the desktop

thin temple
#

at some point they ran a "rival" osdev discord ("rival" is in quotes because nobody here really noticed they existed) with the ExectOS guy who plagiarized minoca and misrepresented "his" work on hackernews

bright gale
#

ah lmao

hard flower
#

I've tried it before it fails

marsh folio
hard flower
scarlet nova
#

btw, i forgot to ask earlier today, but what's the lore with Bob Pony? @stable topaz

stable topaz
#

I just thought what he did was kinda weird

#

ā€œLet me grab someone’s exe, change it and reload it on my siteā€

#

Ignoring the Patreon stuff for a moment

#

Sounds like a good way to exploit your readers

#

Then implying it was directly from him..

#

Just net weird

scarlet nova
#

interesting, thanks

#

that is indeed a weird thing to do

#

and then he deleted the tweet

stable topaz
#

Indeed so it’s a non issue now I guess

stable topaz
#

Lot's of insane progress lately

#

we're looking pretty good for interoperability

bright gale
#

Nice

rotund ibex
#

W

stable topaz
#

Doing a small PC upgrade to Imrpove reactos performance

#

I hope it’ll be enough for minesweeper

rotund ibex
#

How many millions of fps will you get šŸ‘€

stable topaz
#

30 because reactos can’t render more than that without crashing

#

Requires a gigabyte of RAM per frame

rotund ibex
#

should have gotten 128gb then

stable topaz
#

damn you’re right

rotund ibex
#

ReactOS support networking, right?

#

then you can probably just Download more ram

stable topaz
#

Oh, you’re right

#

Perfect

kindred cliff
#

put swapfile.sys on google drive and call it a day

rotund ibex
#

Uploading (*and* downloadinh ig) ram šŸ—£ļø šŸ”„

stable topaz
#

this isn't really a software channel

#

but ill dump a few successes just because they're prep for what im about to do

kindred cliff
#

holy shit

stable topaz
kindred cliff
#

i can try digging up a screenshot of my game engine on reactos

queen perch
stable topaz
#

ok yall get one failure

kindred cliff
#

my game engine uses various warcrimes to function on basically every version of windows after 2000

#

on windows 2000 it crashes before the loader finishes

#

i think it's my fault for using a modern linker and not one from 25 years ago

#

somehow all of my render backends broke independently of each other

#

gonna add reactos support to the program i'm making now though

stable topaz
#

bool reactos goes hard

sweet matrix
sweet matrix
#

(though I did have to compile them custom and patch some things out)

#

you dont need a 25 yo linker to target old windows versions

kindred cliff
#

i don't trust mingw though, it never works for what i need

sweet matrix
kindred cliff
#

i dunno. things i can make work fine with clang or msvc seem to be much more annoying with gcc

#

i think the complete lack of msvc compatibility just makes it a lot harder to write code for windows in the ways i find pleasant

#

not being able to use the official windows headers is a pain in the ass

sweet matrix
#

Or is it

kindred cliff
#

no it is

#

maybe if you don't care it's not, but it always causes me problems

sweet matrix
#

I have found the mingw replacements to work fine for me, what problems have you noticed

kindred cliff
#

phnt, a set of headers that makes working with the native api a lot nicer, completely breaks with mingw

#

i also remember having issues with d3d12, but that might've been unrelated

sweet matrix
#

I see

sweet matrix
kindred cliff
#

it was made to work with the official windows headers, because they're the most reliable

sweet matrix
#

anyway, isn't it possible to use the latest MSVC version with a different UCRT

#

the UCRT is open source to my knowledge

kindred cliff
#

what does that have to do with anything?

sweet matrix
#

You said, "my fault for using a modern linker and not one from 25 years ago"

kindred cliff
#

i wasn't using the crt

sweet matrix
#

oh i see

kindred cliff
#

the executable's headers caused a problem in the loader

#

i'm not sure why even lld didn't work, it should've

stable topaz
#

and so

#

:3

#

step 2

#

this allows reactos WDF to reach feature parity with windows 10 15xx

kindred cliff
#

woah

bright gale
stable topaz
#

technically we can go up to later windows too but its done like this for simplicity

#

although after some more progress ill add a flag to build with windows 22xx compatibility

stable topaz
#

support for modern windows 10 audio codecs

kindred cliff
#

woah wtf

stable topaz
#

nice

kindred cliff
#

if i was gonna write a new subsystem, i should just study csrss, right?

stable topaz
#

yeah

kindred cliff
#

ok

#

is there alpc yet or not quite

stable topaz
#

No.

kindred cliff
#

ok

#

does it actually matter that much which i use, even if i wanted to port it to windows 10?

stable topaz
#

Huh?

#

what are you asking me loll

kindred cliff
#

like csrss uses alpc on newer versions, right? but it doesn't matter if i use lpc instead?

stable topaz
#

oh uh

#

no really

kindred cliff
#

sorry about the phrasing the first time my brain is fried

sweet matrix
# stable topaz

so you're using those .sys files from rectos and they work in w10?

stable topaz
#

and windows 8.1

#

and windows 8

sweet matrix
#

that is crazy

stable topaz
#

and windows 7

#

and windows vista

sweet matrix
#

wow

stable topaz
#

:P

#

and its win10 15xx feature parity

#

to it's a massive compatibility boost

stable topaz
#

wich adds modern audio support

sweet matrix
#

well that's one way to make sure your implementation is like windows

stable topaz
#

that's what we usually do

#

audio, kmdf, is all reactos here

#

i even did a discord call using these drivers!

stable topaz
sweet matrix
#

holy crap thats awesome

#

but wait

#

build 10586

#

apparently thats a pre-RTM build

#

...of the november update

#

so maybe its okay

stable topaz
#

its not pre-RTM

sweet matrix
#

i guess betawiki is wrong then

stable topaz
#

no there's just also a pre-RTM build

#

that the same ID

sweet matrix
#

oh okay

stable topaz
#

Windows 10 build 10586 (th2_release) is the official RTM build for the Windows 10 November Update.

sweet matrix
#

i see i see

stable topaz
#

This matters because what was introduced in win10 even in RTM for hardware support

#

is MASSIVE

#

and nothing quite did that big of an overhault

#

so us having this kmdf support means most drivers (stuff that's not wifi,ethernet/gpu) will load now

#

since most stuff has been kmdf for 15+ years

sweet matrix
#

and that includes modern audio drivers right

#

and storage?

rotund ibex
sweet matrix
stable topaz
#

yup

stable topaz
#

here's vista with our KMDF and hdaudiobus

#

(technically bringing win10 functionality to vista LMAO)

#

It's hard to convince people how important and huge this is

#

but yeah

#

its key

sweet matrix
#

that is actually insane ngl

stable topaz
#

in fact, my system right now is using reactos directx, kmdf, hdaudio, a part of WDDM, and the NetAdapterCx (kmdf module for networking)

#

and as you can see by the fact im still typing

#

zero stability issues

#

i just had to compile with win11 compatibility

#

all of these are kmdf

#

So yes while all this work has been taking years

#

it's paying off

#

very quickly now

#

and while ros itself as an OS may be lame for awhile in usermode. Im confident hardware support is going to be pretty decent in 2026

sweet matrix
#

you could finally somewhat daily drive ROS on modern hardware

#

even if userspace leaves to be desired

#

i also wanna work on my OS but i need to figure out what next

stable topaz
#

whatever is cool

rotund ibex
#

pog

stable topaz
#

It’s kinda rough but I’ll throw it here too

#

Here vaguely the map / plan of how I’m splitting up all the work I’m doing

#

Everything on the chart should be in mainline before February of next year ish~

bright gale
#

nice

stable topaz
#

Software renderedVR anyone

queen perch
#

amazing now I can be a furry in reactos

#

I know the answer is 9000% no but does any vr headset work on ros

stable topaz
#

no but the trackers seem to do something

#

So.. eventually?

#

Biggest issue with headset is GPU

vapid elk
#

Definitely causes 0 problems and fixes everything trl

stable topaz
#

i just went down a rabbit hole seeing some stuff for my blog post when someone in the discord was talking about VRHeadsets.
Maybe ill add this little note to the post but its already kinda technical
but there's a KMDOD called IndirectKMD

it turns out all RDP Sessions, Virtual Desktop software, OBS, and the occlus rift / HTC all use this to render

The WDDM driver is a KMDOD so easy to use for us,
But all the sensors and usb components are just usbvideo, usbaudio, and KMDF?!

Anyway here's an occlus rift accepting the signal from reactos

#

and yeds

#

there's a hook to dispatch the bug check screen over the driver

#

So you can see your favorite reactos bug checks in VR šŸŽ‰ šŸŽ‰ šŸŽ‰

#

LFG BUGCHECK OS

queen perch
rotund ibex
tender ferry
#

let's fricking go

stable topaz
#

X64 + SMP + working hd audio

sweet matrix
stable topaz
#

a few reasons

#

But tldr x64 uses a fallback mechanism to reach into VGA,
This mechanism is required to behave a certain way for gpu drivers to work

#

We can’t fix VBE etc until we extend this mechanism which is very complex

#

And we can’t just hack it without breaking GPUs

#

Hence

stable topaz
#

and it went all the way down to pushlock.c

#

finally a reason to burn that file to the ground asap

queen perch
#

what was the bug

stable topaz
#

It causes the OS to infinitely stall

stable topaz
#

Whenever a lock is held by pushlock it freezes the entire OS and gets exponentially worse for every CPU added

#

Ladies and gentlemen and neutrals:
ReactOS

bright gale
#

But it had very useful comments its impossible for it to be buggy

stable topaz
#

sir please understand this is exactly how windows does it! I am good programmer look at my comments - source: trust me bro

bright gale
#

Lmao

stable topaz
#

I created a implementation Windows 8+'s WaitOnAddress APIs

#

and now that im analyze windows behavior a bit I noticed you can hold a push lock over the address

#

that's an interesting concept

#

oh wait that's super useful actually wtf

queen perch
#

turnstiles in ros when

stable topaz
#

maybe

autumn pond
#

did you find out whats the problem was

stable topaz
#

I’m treating Alex’s code as a resource I can’t use and I’m going to rewrite the entire file from scratch

autumn pond
#

like is it a bug in windows 2k3 as well?

stable topaz
#

idk this is reactos not windows 2003 :)

autumn pond
#

yeah its just i heard that its a precise reimplementation of 2k3 pushlocks

#

with some absurd comments

stable topaz
#

Apperently it's not

#

since it doesn't work

#

But honestly who cares its clear the person that wrote it didnt understand what they were writing

#

No one should be shocked it doesn't work

#

It's likely some one line breaking it tbh

#

not going to find out

autumn pond
#

i remember you posted screenshots with working firefox which was super cool, that work hasn't been merged yet ?

stable topaz
#

It's making it's way in

#

that's over 200+ commits over master at the time

#

now it's about 120~

bright gale
#

nice

rotund ibex
#

Common ROS W

stable topaz
#

@bright gale

#

New Edition

bright gale
#

Not bad

rotund ibex
stable topaz
rotund ibex
#

I'll take that as a yes :D

stable topaz
#

A lot of stuff needs to be done before we do any real windows servers features but the Se subsystem of our kernel is ready for it

#

So eventually ā„¢

bright gale
#

numa support in react os

stable topaz
#

That’s easier than anything else windows server specifically does

#

šŸ’€

bright gale
#

lol

stable topaz
#

Someone was like looking at Active Directory

#

And i am pretty sure if we ever actually tried MS would actually annihilate us

green wraith
#

i think AD is supported by other oses too, no?

bright gale
#

that sounds so boring to implement ngl

stable topaz
stable topaz
#

we have a Security subsystem

#

So the kernel itself can do it

#

But even our winlogon has hacks in there because none of the rest of the OS is ready for taking Se seriously

bright gale
#

makes sense

#

its probably not a priority to get security stuff in order

green wraith
#

i think you can integrate AD in ROS

#

don't think MS would care that much

#

especially bc other oses have support for it already

stable topaz
#

Like part of what has been taking us so long for ntfs

#

Is mostly because ntfs actually behaves properly on ROS

stable topaz
#

funny progress bits

bright gale
#

Not bad

#

This is like 1% of your computers?

stable topaz
#

yeah

#

maybe less at this point man idk

rotund ibex
#

thread not dead ok

stable topaz
#

Well my new PCI.sys supports resizable bar and now i actually was able to test it

#

and the WDF PR is now merged into the nightlies

stable topaz
#

the vga fallback for x64 has been resolved so VBE runs properly

stable topaz
#

ugh the new PCI driver is 85 source files

green wraith
#

oof

#

so many

stable topaz
#

Okay so

#

Resource management is improving rapidly
With videoprt

rotund ibex
#

Progrss letsgo

delicate pewter
#

Chill

#

Stop cooking

#

-# keep cooking btw

sleek cipher
livid marsh
stable topaz
#

something you haven't seen part 7

sweet matrix
#

Multi-monitor support?

stable topaz
#

yeah

#

can actually see it usable somewhere thanks to the stuff being fixed for resource managment

bright gale
#

That's cool to see

stable topaz
#

Massive work has been done

#

GTX 960 running with 3D accel (XP driver 368.xx)

#

8800 GTS (driver 181.22)

#

vista-win11 Vbox WDDM driver on reactos

#

Vbox 7.1

stable topaz
gloomy burrow
#

V cool

bright gale
#

Damn

livid marsh
stable topaz
#

Starting from left
INTEL GMA 945
NVIDIA 8800 GTS
AMD Radeon HD 7530G

stable topaz
dusty cobalt
#

FUCK I need to start cooking

stable topaz
#

yeah when reactos starts looking good you know its time to lock in

dusty cobalt
#

have you tested any nvidia GPU that uses GSP?

#

(Turing+)

tender ferry
#

i'm pretty sure it's running actual nvidia drivers so it probably doesn't matter which gpu you use, it'll work anyway meme

#

but the drivers are 12 years old so who knows, maybe some stuff changed

rotund ibex
#

Holy shit alive

stable topaz
#

I’m still perfecting my WDDM stacks basics

stable topaz
#

Will be another 6 months until I get WDDM 3D accel on hardware at least

#

Too many other things to do first

#

But hey

#

The next release will have xpdm ( XP AND before) gpu drivers

#

Which is enough for some pretty cool stuff

stable topaz
#

VFIO passthrough

#

GTX titan X on reactos

stable topaz
#

GPU acceleration, sound, Ethernet all at once

stable topaz
#

Of course let's be clear

#

ReactOS IS reactos

#

so in the sam vein :) people are starting ot use the latest work on super old hardware

sweet matrix
gloomy burrow
#

Very cool

#

Can ReactOS run something like Windows' Device manager?

#

Or any other system programs

bright gale
#

Cant see why it wouldn't

vocal needle
#

Do you got HL2 working?

rotund ibex
# stable topaz

time to garger all my friends to find the oldest possible pc where reactos boots

stable topaz
#

very old

#

Pentium 1 64mb of ram

sweet matrix
#

pentium 1 and 16 mb of ram

#

the only reason i "almost" have it is because i don't have its hard drive caddy so i can't use hard drives with it

#

(i'll have to hackily solder behind the port or something)

stable topaz
#

thats funny lmao

sweet matrix
#

(or find a caddy or adapter, but those are rare as fuck)

#

i "didn't spend that much" on it (only about 20 euros or so)

#

but the fact it has no hard drive whatsoever is kinda bollocks

#

it has a floppy drive

#

of who knows what quality because i have neither floppy disks nor a USB floppy drive to write them with

stable topaz
autumn pond
#

why jira issues mentioned in the pr cant be opened

stable topaz
#

I think he just made the link wrong

stable topaz
#

So much work talked about here

#

but why does it matter? whats this all leading to

#

This is a ryzen embedded platform booting ReactOS with UEFI + GPT

#

ReactOS for years has had bugs and assumptions across it's code base on how hardware resource managment work, and inorder to actually make a new acpi driver, ive had tounderstand how this works in Windows Vista (our target) and Win10 (to make sure we dont need to redo work)
And of course reactos now.

#

For example videoprt (the driver that controls video drivers) had some assumption about how GPU IRQs are handled.
this lead to any attempt at trying ot fix the root cause blowing up the entire Operating system

#

our uefi bootloader in the nightlies now behaves good,
and many MANY other fixes have happened including the audio bus, new KMDF stack to where the foundation of ros isnt going to fallapart with all my work merged

#

It's been an uphill battle for sure, but things are looking good for the next step

stable topaz
#

minimal integration with our shoddy PCI driver for _PRT handling

#

This actually works great!

#

And means i might be able to get uACPI's logic merged faster

bright gale
#

nice to see

stable topaz
#

i do have a question for you @bright gale

#

vmware has some nasty logs from uACPI itself

#

have you tested vmware much?

bright gale
#

yeah it worked fine, i think this is you returning NOT_FOUND from io_map or something?

stable topaz
#

hm

#

oh i see

#

thank you

bright gale
#

npnp

stable topaz
#

nice

#

much better

bright gale
#

nice

#

was it vmwares aml just probing for present pci devices?

#

aml usually does that by checking pci reads against 0xFFFF

#

ur not the first to run into it, i might add support for NOT_FOUND in uacpi in this case i suppose

stable topaz
#

yeah pretty much

stable topaz
#

nice

#

64bit on realhw

#

both SATA Drives are detected and working now

#

but USB is still failing

#

massive progress though, 64bit finally escaping the VM

bright gale
#

nice!

stable topaz
#

yeah and with the GTX titan working now

#

that's going to be amusing

bright gale
#

can finally play crisis properly KEKW

stable topaz
#

12gb of vram

bright gale
#

big

stable topaz
#

more than 32gb of ram usable now in 64bit as of recent too

#

and SMPs only remaining issue was this so

#

crysis "how it was meant to be played"

bright gale
#

exactly

stable topaz
#

oh

#

I didn’t post my new toy

bright gale
#

it has certainly been through a lot

stable topaz
#

yup but it was free

#

ASUS G75VW

#

My new reactos daily driver

bright gale
#

not bad

stable topaz
#

32gb of ram

#

It has full 3-D acceleration of course

#

So I’ve been playing through dragon age: origins

#

The progression this year and the last from the start of this channel is hilarious

bright gale
#

indeed

stable topaz
#

and for the first time

#

ever

#

64bit reactos on real hardware (without ramboot)

stable topaz
#

Thank you uACPI

bright gale
#

Damn a whole 800 mhz

stable topaz
#

a wholeeee 800mhz

#

uefi just boots to usermode without any hacks or weirdness now

#

which... duh

#

lol

#

its uacpi

bright gale
#

nice nice

#

workqueue deadlock looks scary tho

stable topaz
#

no uefi win32k framebuffer driver

#

so it just infinitely waits

bright gale
#

Ah

stable topaz
stable topaz
#

optiplex 9020

stable topaz
#

past 8 cpu limit (so just fixing xapic lol....)_

stable topaz
#

storage

#

more fixes on this now that uACPI lets me test on UEFI class 3 machines

#

another new test system

balmy wind
#

ooo hawt

#

I wonder if I should try to install it on my system. it's similar to your new test machine

stable topaz
#

eventually itll work, lots of stuff to do still though

bright gale
#

cool stuff

stable topaz
#

NVMe and xHCI in the same iso (using uACPI ofc)

naive hearth
#

ReactOS is coming quite far since the last time I’ve seen it a few years ago :o

#

Btw is there any plans to implement support for a FRED driver tro /hj

#

(Basically better IDT on very new hardware and isn’t too bad to implement)

stable topaz
#

I dunno, we're inching to modern hardware little by little though so maybe

naive hearth
#

Mind if I share my driver of it? It does some strange conversion to hook into the make IRQ systems but it’s relatively simple

stable topaz
#

go for it lol

naive hearth
#

Just needs a 64 bit aligned stack and it pushes everything you need there and you have to change a few entries to and from userspace because it forbids swapgs and iretq and sysexit

#

System calls and everything Goto one entry and interupts Goto the same handles but with seperate ones for ring0/ring3

#

It’s a very neat little thing they have

#

My driver ended up braking after some changes so I’m gonna fix it soonā„¢ and cleanup the conversion logic layer yaaar

#

That’s the commit where it fully works in SIMICS though

bright gale
#

implement it for ROS

naive hearth
#

I very well would but I’m not sure if I’d qualify

stable topaz
#

pretty interesting though

naive hearth
#

I don’t remember any windows code but I know my eyeballs have glanced at it at times

#

The most I remember are like one or two comments that are curse words PSP1G_pspTrollar

#

I’d very well help with it though

stable topaz
#

really the rule is you can’t work on anything you’ve seen

naive hearth
#

Well I mean I certainly havent seen any windows FRED implementations

#

I don’t think they even support it yet

stable topaz
#

or probably most of windows in general

naive hearth
stable topaz
#

So most people are fine

#

They just don’t realize it

naive hearth
#

Hey how hard could it be to try and get this working

stable topaz
#

We barley do APIC right I’m trying to fix it nooo

naive hearth
#

My APIC and x2APIC driver works

#

I could try and help there lmfao

naive hearth
naive hearth
stable topaz
#

Truly end of the world

naive hearth
#

But yeah if I get some free time I’d love to help work on this now that I know I’m actually allowed too and I got some OSdev experience

#

I was under the impression that if you had ever seen anything about windows internals you would be barred

stable topaz
#

just some scrutiny

naive hearth
#

Hm?

stable topaz
#

conversaions like this

#

i mean

#

is what happens

#

if youve seen anything

#

the "ok but are you working on what you've seen?"

#

etc

balmy wind
#

oh cool so just looking at the build scripts doesn't count :)

stable topaz
#

we dont even build remotely like windows

#

so

naive hearth
#

All I’ve seen is the meme shit tbh šŸ’€ and like maybe some code but I legit could not even tell you one line of source code

stable topaz
#

yeah well

naive hearth
#

Well I could guess and say there is one ā€œint i = 0;ā€ and an ā€œi++;ā€ PSP1G_pspTrollar

balmy wind
#

the closest I've gotten to looking at actual source code is probably the officially supplied PDBs from MS's symbol server 🤣

stable topaz
#

officially supplied PDBs from MS's symbol server 🤣

Which we use to reverse sometimes

#

so

balmy wind
#

yea exactly

naive hearth
#

Welp guess I’m gonna send patches at some point now PSP1G_pspTrollar

#

This will be fun especially when taking breaks from other projects

#

I have the special FRED role for a reason and it’s my job to send patches for it to everyone PSP1G_pspTrollar

#

It’s like the only thing I got to my name

#

are yall doing x2apic yet btw?

stable topaz
#

I think someone started redesigning how our APIC code works to support both xAPIC and x2APIC

#

But i havent touched that yet

naive hearth
#

Because Intel is removing the xapic and won’t support it being used as the default device on systems that still have it wahhgone

stable topaz
#

yeah

naive hearth
stable topaz
#

yeah but there was something windows does that made us have to pause

#

idk right now

#

sleepy

naive hearth
#

My kernel does two seperate implementations but I could merge it if I wasn’t partly lazy and trying to make simple to understand code

#

Would this channel be aptly renamed to ReactOS’s Modern Hardware Wins?

#

Since it seems a lot of actual good progress has been being made

stable topaz
#

there's a longgggggg way to go stilll

#

like if you read through the history we recently got up to the GTX 960 and titan x working

#

GPU accel wise

naive hearth
#

I wonder how close the 6600xt is

#

I know AMD is better somtimes?

stable topaz
#

well windows had a transition in their driver model for GPUs

#

there's 2 dramatically different models

#

mainline ros only supprots one

#

I started working on the other

naive hearth
#

Damn

stable topaz
#

But once we support that we basically get all Win10/Win11/Win7 GPU drivers easy

naive hearth
stable topaz
#

Like i got display out on my RTX 4060

naive hearth
#

I know a few people who had the same misconception

stable topaz
#

that's the plan

naive hearth
#

Ahh nice nice

naive hearth
#

ReactOS may be close to being able to run anticheat games and save everyone from windows 11 PSP1G_pspTrollar

stable topaz
#

well

#

there's a lot of stuff there that's happened but it's intentionally left out of this thread

naive hearth
#

:O

stable topaz
#

NT6 apps are lightly toouched on here because we have been pretty quickly adding NT6 APIs but they're still disabled in the nightlies by default

#

so everything LOOKS like win2k3 stilll, but internally its very different

#

I mean if you consider the last year of work
ReactOS now supports

  • Win10 Audio drivers
  • Win10 WDF (ACPI Devices)
  • Full XP/2000 GPUs
    etc
#

so stuff is progressing fast

naive hearth
#

Yall are doing some really insane work here

stable topaz
#

but a lot of things are disabled in nightlies

#

thanks!

naive hearth
#

I could never get this far myself

stable topaz
#

only takes 30 years

naive hearth
#

Would ROSSL (WSL) be a possibility at some point

stable topaz
#

yes

naive hearth
#

I haven’t even got bash yet yaaar

#

(Though that’s due to my own footguns lol)

naive hearth
stable topaz
#

yeah there's a path there

#

also we can run the legacy win2000 posix subsystem too

naive hearth
#

Oooo

stable topaz
#

dunno why you'd want that

#

but you could

naive hearth
#

I was gonna ask about that lmfao

stable topaz
#

we had our own

#

i not long ago tried to revive

#

it was a bit cooler

#

had a funny super power

#

could compile x11 apps and had an x11 server over win32

naive hearth
#

God damn that’s cool

#

Also the one thing about FRED is only Intel SIMICS supports it wahhgone and bochs has a very botched implementation of x86-64 as a whole so it would be a while for QEMU to even support it

#

So I wouldn’t look at it for a bit unless you wana use Intel SIMICS lmfao

#

(I did make a guide for it tho if needed)

#

(I’m just too lazy to use it rn)

#

But yeah I wish yall luck on this

#

This is a very cool project

stable topaz
#

thank you!

balmy wind
stable topaz
#

yup this is from the NT resource kit and win2000’s posix.exe and psx

balmy wind
#

Your fork, iirc it was the most recent UEFI branch, is meant to build with the latest ROSBE right? I had some assembler issues (one was in acpi.S I believe) with it not accepting h-suffixed immediates

#

I can get back to you on the exact line and error in a few hours

stable topaz
#

I wouldn’t try to build anything from my fork šŸ’€

#

It’s such a mess

balmy wind
#

Well, it's the easiest path to trying to run ROS on my hardware :)

naive hearth
#

I wonder if ROS would boot on my desktop with a 5700x and 6600xt and 32gb ram?

#

I do have other devices though

#

Like this thing

balmy wind
stable topaz
#

it’s getting pretty close but needs a few more things

naive hearth
#

I may just end up wiping my windows NVMe just for ROS

stable topaz
#

oh no don’t I only got NVMe working ago 15 minutes ago

naive hearth
#

Well I’d partition it into a 128g one for ROS and reuse what’s left for extra game storage ;p

stable topaz
#

ROS will eat your entire drive sometimes

#

randomly

#

Well it used to

#

I have no idea if it still does

naive hearth
stable topaz
#

It can get close

naive hearth
#

Atleast it’s made by a human XD

balmy wind
# stable topaz it’s getting pretty close but needs a few more things

Iirc you have hardware pretty similar to mine, but I can guinea pig if you ever want. I do wonder if I need that COM header to serial adapter though lol.
Ryzen 9 5950x, Gigabyte Aorus B550M Pro-P (the one with realtek 2.5g eth), Radeon Rx 6600xt, Nvidia GTX 760, 2x nvme, 1x sata 3. Intel ax210 wifi

naive hearth
#

Hey we all have almost the exact same desktops lmfao

balmy wind
#

It's great hardware ā¤ļø

#

Intel my beloved (for anything but cpus)

#

I wanna get a 7900xtx or smth though, when whatever the next gen is drops

naive hearth
#

It’s good for immich & jellyfin

rotund ibex
#

All ROS progress is pog

stable topaz
#

basic webcam support has been implemented

bright gale
#

face reveal

rotund ibex