Jump to content

Windows XP/2003 x32 on Modern Hardware FAQ


Mov AX, 0xDEAD

Recommended Posts

8 hours ago, Dibya said:

Anyway to add FPU space?

1) struct _CONTEXT has  unused 1a0 bytes, it is enough to store high part of ymm0-ymm15 (low part of ymm* is xmm* and stored by kernel itself)

struct _M128A VectorRegister[26];// Offset=0x300 Size=0x1a0

2) struct _KERNEL_STACK_CONTROL has embeded _XMM_SAVE_AREA32 union, no enough space to store high part of ymm0-ymm15 regs

I dont sure what struct used on x64  to store FPU context, if _XMM_SAVE_AREA32  - need to expand struct (200h->300h) and change all related size/offsets in kernel, finding these places may be very hard, see KxContextToKframes(), KiInitializeKernel(), KiInitializeContextThread(), PspGetSetContextInternal(), RtlInitializeContext(), KeSaveLegacyFloatingPointState(), ...
 

Link to comment
Share on other sites


On 7/1/2022 at 2:56 AM, Mov AX, 0xDEAD said:

1) struct _CONTEXT has  unused 1a0 bytes, it is enough to store high part of ymm0-ymm15 (low part of ymm* is xmm* and stored by kernel itself)

struct _M128A VectorRegister[26];// Offset=0x300 Size=0x1a0

2) struct _KERNEL_STACK_CONTROL has embeded _XMM_SAVE_AREA32 union, no enough space to store high part of ymm0-ymm15 regs

I dont sure what struct used on x64  to store FPU context, if _XMM_SAVE_AREA32  - need to expand struct (200h->300h) and change all related size/offsets in kernel, finding these places may be very hard, see KxContextToKframes(), KiInitializeKernel(), KiInitializeContextThread(), PspGetSetContextInternal(), RtlInitializeContext(), KeSaveLegacyFloatingPointState(), ...
 

Do you think a writing a driver possible like how Intel provided SSE driver for NT 4.0?

https://www.betaarchive.com/forum/viewtopic.php?t=28694

Link to comment
Share on other sites

40 minutes ago, Dibya said:

Do you think a writing a driver possible like how Intel provided SSE driver for NT 4.0?

https://www.betaarchive.com/forum/viewtopic.php?t=28694

driver is too complex, need reverse how it works, i dont know how it inject own code to kernel context switching, probably PsSetCreateThreadNotifyRoutine(), PsSetLegoNotifyRoutine(), KeSetSwapContextNotifyRoutine() do this job

for x64 need rewrite it fully, so much easy to hack existing x 64 kernel code instead write new

"x32 avx enabler" has small asm source (FASM syntax), anyone can improve my inject code or rewrite for x64 (after finding where to store/load 256 additional bytes)

inject.asm

Edited by Mov AX, 0xDEAD
Link to comment
Share on other sites

  • 1 month later...

CPU/thread scheduling with XP

 

Writing this here to avoid cluttering the ACPI thread since this is not (as far as I can see) an issue with acpi.sys

Been using XPpos2019 for some light usage, old XP era games, no issues.  But I recently tried to run a modeling application that seems cause an issue with CPU/thread scheduling with XP.  Program runs fine on old computer with XP,XP64.  Runs fine on ryzen with Win7x64, but it causes instant issue with XP and eventual with XP64 on ryzen.

XP should be able to handle 32 threads from what I read, but the only thing that seems to have an affect is limiting it, even with that there are still issues.

 

This is the "small" amount of steps to show issue.  There was a lot of other thing I tried while troubleshooting that I will skip:

old computer, A-7600, 4core,4 thread

-XP64original, used it many times.  Application runs for days, no problem.

-XPpos2019,v4,AVX,PAE,NTOSKRN8,etc... Installed "modern" XP on old computer, ran for 12 hours overnight, no issues found.

 

new computer, Ryzen 3700X, 8core,16thread

-Win7x64, application runs fine, 3 days runtime test.  Proves application can use extra cores/resources and is stable.

-XPpos2019 "modern".  As soon as application is started, windows instantly has "hard lag".  Everything from browsing files in explorer, to dragging a windows is very slow.  Application runs for a few hours then "stalls", thread no longer launches its child process and it is impossible to kill the parent thread from the processors tab.  You can press the restart button in windows, but it does not actually restart.  Windows does register the click, because for example if you kill explorer.exe and try to start it again, you get "failed to initialize because window station is shutting down"

-XP64pos2019 "modern".  No lag when you start.  But after a day of running you get "medium lag".  You can stop the application as normal, but even if you do, the lag still remains.  Restart works, but is slower, takes a minute or two.  If you start software, like VLC or MyPal, then it shows up in the processes tab, but does not load on desktop.  I assume it would eventually but windows is lagging.

-Server2003x86 base ISO but "modernized", quick test with this, no lag when you start it, same as XP64, but didnt run for long. Difference seems to be NT5.1 bad, NT5.2 not as bad but still not ok, NT 6.1 ok.

 

Only BIOS change that had effect.  "SMT Disabled"

-XPpos2019modern, no lag when application started, but after a few hours get "stalls" problem

-XP64pos2019modern, ran for 36 hours did not see problem, but ps2/usb adapter got disconnected in device manager, had to unplug/replug to get working.  Related?  Dont know...  I would want to run for 3 days at least before saying it works correct.

-XPpos2019modern, second test, this time got BSOD 50 (FFFFFFFB, 00,  , 00) after a couple of hours.

 

Searching online, found some tools related to cpu scheduling, ryzen, and windows 10... ProcessLasso and ProjectMercury.

On XPpos2019modern, with ProjectMercury,

-NoCCX setting, (4 real cores/4 SMT cores available to be used by OS), no lag at start, but same BSOD 50 after a few hours.

-no SMT setting (8 real cores available to be used by OS), should be same as Disabled SMT in BIOS: no lag at start, got a weird phantom "you plugged device into audio jack" popup, after 7 hours got "stall" problem

-NoCCX, noSMT (4 real cores only available), set this up just now to run overnight and got "stall" after 15 mins...

 

Time for sleep

Link to comment
Share on other sites

@pappyN4

Overheating maybe? Check with HWMonitor for both temps and power usage.

I noticed this on my new B550 Steel Legend that power usage (140W) and Temps (70C) were abnormally high just sitting idle and I needed a DSDT mod to fix it.

What motherboard do you have?

Link to comment
Share on other sites

@DamnationI have CoreTemp running.  Same temp with win7 as with xp/xp64.  Maxes at 69* under full load, which is higher than what i get with prime95 stress test.  I limit my PPT to 50W cause I like it quiet :)  Idle works fine under all three for me with the XP amd processor drivers.

Original mobo is Gigabyte B450 Aorus M.  I bought a MSI B450M ProVHD-max on sale over the weekend just to test.  Same problem.  A lot less features compared to the gigabyte so dont want to use it permanently, but the one thing i did notice is that the ps2/noreboot issue I have with the gigabyte works fine with the msi.  So that's something on my todo list, did not see anything different PS2 DSDT wise when comparing both.

If i have time today  i think I'll run it under a win7 VM with XP host and see what happens. 

Dont really have any more ideas.  Other than maybe trying a Ryzen 5700x which has 1x8 CCX, compared to my 3700X which is 2x4.  Maybe XP/64 doesnt like having a split core?  Only thing that made a difference was playing with core count...  Maybe @Dietmar is willing to do a quick test with an Intel system if he has time?  On XP the lag should be instantly noticeable.

 

 

1. Install python to C:\Program Files\Python 3.4, check the add to path when installing.

https://www.python.org/downloads/release/python-343/

2. extract folder nec to Python34\Lib\site-packages

https://ufile.io/za58phav

3. copy test NEC file to a folder somewhere and open/run with opt.bat found in nec folder.  I always set the python.exe to lowest priority to run in the background. 

 

Link to comment
Share on other sites

@pappyN4

What exact should I test on Intel board?

The power consumption goes down to a few Watt with the nice DSDT patch from @Damnation.

If you have a problem with CPU under heavy load, make a test with running prime95 stress test with AVX (from Ramsey XP) enabled

and in the same time CINEBENCH_11.529 few times.

If the compi survives 20 min, you have no problem with temperature. I think, about 80% of compis fail this.

Also after this you can run memtest for 4 hours.

If this is also ok, the problem is not in memory and not in cpu and not in temperature

Dietmar

PS: XP has some problems with different kind of cpu cores.

When you can disable the efficients cores, you can see if the crash is connected to them.

For me interesting is, that a 9900k is much faster than a 12900k with disabled effiziency cores.

 

EDIT: I just remember, that I have problems like you describe 3 years ago.

This happens because of a bad Power supplier, even this was brandnew.

Make test with another Power Source, just make sure that it can deliver the needed Watt.

 

Edited by Dietmar
Link to comment
Share on other sites

On 8/31/2022 at 3:39 PM, Dietmar said:

@pappyN4

What exact should I test on Intel board?

@DietmarAssuming a 16 thread CPU or more.  As soon as you run it, WinXP should become laggy.  Example, browsing through MyExplorer, or even just dragging a windows across the screen.  Assuming you have a "feel" for how responsive your computer is.  Normally I let it run for a few hours before I get the "stall" symptom, but no need for you.  If you have the lag, then eventually its will stall.  Same test but with disabled cores (real or SMT does not matter), max 8 or even limit to 4, there should be no lag. 

Not a RAM/CPU/heat/power supply issue because with Win7 it runs no problem, max cores.

On 8/31/2022 at 11:21 PM, Damnation said:

@pappyN4 @Dietmar

Could it possibly be a timer issue? I thought the timer issue was an intel only thing though, but perhaps some AMD boards are affected?

@DamnationI thought of that.  According to the WinTimer test I did it is not needed for AMD.  Tried here anyways just to see.

 

-fTPM off
-different ACPIs
-with nvidia GPU driver or with default windows driver
-AVX patched or unpatched krnl
-RTC timer patch
- CoolNQuiet / minimal power managment off / on
-Precision Boost Overdrie OFF /on
-on msi and gigabyte mobo, different power supplies
-memtest was run when I first built it, RAM is fine
-tried a XPpatched python 3.7
-runs fine with Win7 so not system issue with RAM or CPU or heat


Best part.  I tried it on a XP32 host with a XP32 virtual machine.  As soon as the VM run the software the XP in the VM had the same laggy symptoms.  Only difference is that it ran longer before the other issues happens.  Funny thing, is that the XP host had absolutely no lag and ran fine under full load.  Problem was contained to the virtual machine.

Seems to me that for whatever reason, either python or the 4nec EXE does not like a high core count under NT5.1 or 5.2.   No issues with NT6.

 

Link to comment
Share on other sites

Possible RAM limit for XP

I had some extra RAM from a friends new computer so I had a chance to test.  XP32 did not like having 128GB of RAM.  As soon as I boot with existing WinXP  it restarts into SafeMode/LastKnownGood screen.  Tried a fresh install, same issue.  This was using the 128GB/ALL PAE patched ntkrnl.  On both a MSI and Gigabte B450 mobo.  When I changed it to a PAE 64GB limit patch, it works no problem. Why would you need 128GB for XP32 :lol:.    Tested XP64, ran fine with 128GB, no problems to boot. 

Link to comment
Share on other sites

Anyone have occasional issues during TXT mode install of WinXP onto NVME?

Until now all my XP tests have been with SSD so did not notice.  Problem happens when going from the screen where you pick which partition to install and the Format/Quick/FAT/NTFS screen.

partition.jpgformat.jpg

If you are lucky and can get to the format screen then windows install fine.  But if you are unlucky, after you select a partition it hangs before you get to the format screen.  If it worked the first time, you can get it to hang by ESC back to the partition screen and going to the format screen again.  If you do that a couple of time you can recreate the situation and get it to hang. Stuck on "Updating XXX MB Disk0 at ID0 on bus0 on stornvme(MBR).  Using the TXT installer to create partition can also hang.

hangs.jpg

Same thing happens on Ramsey's ISO also so not a problem with my ISO.  Server2003x86 (or XP64) does not have this problem.

Based on research:

https://en.wikipedia.org/wiki/Windows_NT_booting_process
https://www.betaarchive.com/forum/viewtopic.php?p=409982#p409982
https://stackoverflow.com/questions/5770134/windows-xp-text-mode-installer-is-it-really-a-dos-application

I tried copying files from 2003 that sounded like it had anything to do with disk checking or formating, also opened setupdd.sys and copied files that were mentioned inside.  Did not break TXT installer, but still get hang:
NTFS.sys, mountmgr.sys, ntdll.dll, crcdisk.sys, autochk.exe, autofmt.exe, SMSS.exe, NTDETECT.COM, diskpart.exe, format.com, CHKDSK.exe, CHKNTFS.exe, FREEDISK.EXE (does not exist in XP), USETUP.EXE

Replacing setupldr.bin setupldr.exe got "error code 14 setupdd.sys cound not be loaded", also replacing setupdd.sys got "error code 7 setupdd.sys cound not be loaded"

Playing around I noticed that setupdd.sys call RtlInitAnsiStringEx, RtlInitUnicodeStringEx, which is in 2003 but not in XP, added it to ntoskrn8 and changed setupdd to use.  Gets BSOD 71 (00,00,00,00)  SESSION5_INITIALIZATION_FAILED.  Removed all other files and kept just new setupdd, same.

Out of ideas.  Maybe something else needs to be copied?

https://ufile.io/sy7pyv9m

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...