Jump to content

XP/W2k3 x64 on Modern Hardware


George King
 Share

Recommended Posts

  • 3 months later...

XP64 SP2 + post SP2 update pack
Gigabyte B450 Aorus M
F52 BIOS AGESA 1.0.0.6 (original F41 AGESA 1.0.0.3 also worked), (booted to XP64 on a different PC with F62d, so maybe Zen3 as well?)
Ryzen Zen2 Matisse CPU

devices-GA-B450-Aorus-M.png

Issues
Restart does not work with XP/XP64 with any of the acpis when using a PS2 keyboard.  Have to manually push the restart button. Shutdown works fine.  Workaround, use USB keyboard after it is installed (or integrate backported USB3 driver)

BIOS
Gigabyte B450 Aorus M BIOS settings
So I noticed that by default virtualization (AMD-V) aka "SVM" was disabled by default.
BIOS > MIT > Advanced Freq Settings > Advanced CPU Settings > SVM Mode Enabled & CoolNQuiet Enabled
BIOS > MIT > XMP Profile 1
BIOS > BIOS > CSM Support Enabled & Fastboot Disabled & Full Logo Disabled

You can also enable a PPT limit on the CPU lower than default.  Lose a little bit of performance for a nice drop in heat.  
BIOS > Peripherals > AMD Overclocking > PBO to Enabled
BIOS > Peripherals > AMD CBS > Package Power Limit > Manual & ##

Picture shows a nice spot for power/performace around 50W
hub5d3548568d248f412caaad99252b98c-48682

ACPI
ACPI needed for new motherboards.  First versions were based on longhorn 5048 with some BSODs patched.  There was a x86 version based on the original XP acpi with new instructions patched in assembly as well (6666).  Latest version for XP/XP64 (7777) is here,

https://www.mediafire.com/file/wsqgptapdrxhidf/ACPI2.0_v4_x86+x64_5.1+5.2.7z/file

 

Drivers
GPU Drivers (Tested nvidia GT710, GTX750Ti, and amd HD5450 video cards)
NVIDIA 368.81       7/10/2016
AMD 14.4           09/05/2014


Onboard LAN/Audio drivers
Realtek Audio   5.10.0.7514           8/23/2016
Realtek LAN   5.836.125.2018       1/25/2018


AMD CPU CoolNQuiet Driver 1.3.2.53       8/22/2007
Download AMD Processor Driver 1.3.2.53 and turn on power management if you want CPU to clock down during idle.


Chipset Drivers (works with native storport on XP64, for XP you will need to integrate backported storport from Advanced)


DEV7901/43C8   FCH/400 Series SATA Controller       Option1: AMD 1.2.1.321

Download an old 13.4 XP/XP64 chipset pack from AMD.  

Open up amd_sata.inf and add in these lines underneath existing DEVs (a non B450 may have different DEV_):
%AMDSATA.DeviceDesc% = amd_sata_inst, PCI\VEN_1022&DEV_7901&CC_0106
%AMDSATA.DeviceDesc% = amd_sata_inst, PCI\VEN_1022&DEV_7904&CC_0106
%AMDSATA.DeviceDesc% = amd_sata_inst, PCI\VEN_1022&DEV_43C8&CC_0106[/spoiler][spoiler=DEV7901/43C8   FCH/400 Series SATA Controller       Option2: StorAhci_V1.0_20200928]Download Schtrom's StorAhci SATA AHCI Driver from sourceforge.

Pros: Universal driver.  Not limited to just AMD controllers.
Cons: Sequential speed is slower compared to AMD 1.2.1.321

Needs SMART patch on backported win7 storport to enable SMART.

DEV7901/43C8   FCH/400 Series SATA Controller       Option2: StorAhci_V1.0_20200928

Download Schtrom's StorAhci SATA AHCI Driver from sourceforge.

Pros: Universal driver.  Not limited to just AMD controllers.
Cons: Sequential speed is slower compared to AMD 1.2.1.321

Needs SMART patch on backported win7 storport to enable SMART.

NVMe           OFA NVMe 1.3 Storport Miniport       Option1: 20180719

Download Schtrom's OFA NVMe 1.3 Storport Miniport from sourceforge.

You will need to integrate a new version of storport.sys for it to work. Version 4173 (KB943545) or newer.  You can also use the postSP2 update pack.

Tested with a Samsung PM981 and storport 5.2.3790.4485.
-Version 1.3 works.  Version 1.5 stalled in the TXT setup just before format partition page.
-Use MBR for boot drive.  Native XP/XP64 does not boot from GPT.
-Use NTFS.  FAT32 starts install but hangs in the GUI setup halfway through Installing Devices.
-No SMART data from CrystalDiskInfo, SMART with HWiNFO.

DEV43D5           400 Series USB 3.1 XHCI Controller   1.0.5.3

Download the Windows 7 chipset pack for the B450 from AMD.

1.0.5.3 USB driver from USB31_PT for the controller and the hub works with the motherboard USB ports.  But you get a Code 39 error.  To fix, you will have to copy usbd.sys to your \system32\drivers folder for a live system.  You can also modify the inf file in two spots to also copy over the usbd.sys file when it copies over the driver sys file like the amdxhc31.sys or amdhub31.sys.

Use can decompress the usbd.sy_ file from your ISO or extract latest version from an unofficial service pack.  In CMD, "expand usbd.sy_"

Chipset Drivers (advanced)
NTOSKRNL Emu_Extender   required

-Download NTOSKRNL Emu_Extender from sourceforge.
https://github.com/MovAX0xDEAD/NTOSKRNL_Emu
-Follow the instructions and compile backported drivers.

THe USB driver needs Kernel Mode Driver Framework 1.11 (WDF 1.11).  
-Follow the instructions from above and create updated wdf files.

Useful Tools:
-Hexplorer or equivalent hex editor
-Dependency Walker
-PEChecksum.exe

DEV7901/43C8   FCH/400 Series SATA Controller       Option3: AMD 1.2.1.402

-Download the Windows 7 chipset pack for the B450 from AMD.  

-Open up amd_sata.inf and change the two lines that have NTAMD64.6.1 -> NTAMD64 (NTx86 if doing the 32bit version)

-Add in these lines underneath existing DEVs if not already there (non B450 board may have different DEV_):
%AMDSATA.DeviceDesc% = amd_sata_inst, PCI\VEN_1022&DEV_7901&CC_0106
%AMDSATA.DeviceDesc% = amd_sata_inst, PCI\VEN_1022&DEV_7904&CC_0106
%AMDSATA.DeviceDesc% = amd_sata_inst, PCI\VEN_1022&DEV_43C8&CC_0106

-Open up amd_xata.sys with hexplorer or equivalent, find and change ntoskrnl.exe -> ntoskrn8.sys.
-Apply PEChecksum.exe on amd_xata.sys

DEV149C           Matisse USB 3.0 Host Controller       usbxhci 6.2.9200.xxxxx

Backported generic Win 8 USB3 driver from NTOSKRNL_Emu works. Needs WDF1.11 backport as well.

NVMe           Generic Windows 7 NVMe           Option2: stornvme 6.1.7601.23403

Backporting Windows 7 NVMe drive works.  No SMART info.

NVME           Samsung Option3: 3.3.0.2003

Backport the Samsung NVME driver.  secnvme.sys and secnvme.sys imports need to be changed to NTOSKRN8.SYS like with the other drivers.   No SMART with CrystalDiskInfo but it does work with HWiNFO.

I only have a Samsung NVME so havent tested if the generic works with other brands.

 

Chipset Drivers (null)

DEV790B           FCH SMBus Controller             

Null driver.  Download an old 13.4 XP/XP64 chipset pack from AMD or get Windows 7 for the B450 chipset.  

Open up SMBUSamd.inf and add in these two lines underneath existing DEVs:
%AMD.DeviceDesc0% = AMDSMBus, PCI\VEN_1022&DEV_790B
%AMD.DeviceDesc0% = AMDSMBus64, PCI\VEN_1022&DEV_790B
 

DEV1481           Starship/Matisse IOMMU              

Null driver.  Download an old 13.4 XP/XP64 chipset pack from AMD or get Windows 7 for the B450 chipset.

Open up AmdIOV.inf and add in this line underneath existing DEVs:
%IOMMU.DeviceDesc%=NULL_DRIVER,PCI\VEN_1022&DEV_1481

DEV1486           Starship/Matisse Cryptographic Coprocessor PSPCPP

Install null driver to remove from missing devices.

DEV1485/148A   Starship/Matisse Reserved SPP/PCIe Dummy Function

According to the readme this should also be a null driver. Unlike the SMBus and IOMMU, this one has a sys file that tries to install.

Update inf to add DEV1485 and DEV148A.

ACPI\AMDI0030          

Install null driver to remove from missing devices

Extra Stuff
VMware and USB flash drive passthrough

When using VMware, if you connect a USB flash drive and try to pass it through to the guest OS, you will need to use a USB port that is using the generic backported USB driver in the host OS. It does not work then using the AMD USB31_PT 1.0.5.3 chipset drivers from the motherboard. From the article it looks like other motherboard specific drivers will have the same issue with a few exceptions.  Once you get the Win8 USB3 up and running, you can replace the AMD motherboard USB drivers.
https://kb.vmware.com/s/article/2041591

Tested with: XP64host with VM10.0.7(last XP version) and Win7x64host with VM10.0.7 & 15.5.6(last Win7 version).

Testing passthrough with a Kingston USB2.0 flash drive works fine. But when connecting a Kingston USB3.0 flash drive vmware gets a "unable to connect to ideal host", and the drive does not load properly in the WinXP guest OS.


VMware and USB3.0 flash drive

If you change the USB compatibility in vmware in Settings from 2.0 to 3.0, then install the backported generic drivers to the XP guest OS, it will work properly.

Note that the vm image hardware compatibility mode has to be 8 or higher, if you are using an image set to 6.5-7.x mode or lower then the USB 3.0 drop down menu will not show up.
 

Edited by pappyN4
Link to comment
Share on other sites

Patches

shell32 missing icon notification patch (x86/x64)

 

patch shell32.dll by setting the timeout from 4000ms to 60000 ms and removing the SMTO_ABORTIFHUNG flag

x86    6.0.2900.7551
@63CC9    A0 0F 00 00 6A 03    ->    60 EA 00 00 6A 01

x64    6.0.3790.6501
@29A50    A0 0F 00 00 C7 44 24 20 03     ->    60 EA 00 00 C7 44 24 20 01
 

where 0x0FA0 = 4000ms and 0xEA60 = 60000ms

shell32-fixmissingiconnotification.png

 

tcpip & tcpip6 max connection limit patch (x86/x64)

 

x86 tcpip.sys 5.1.2600.7510
@4fbc6    0A 00 00 -> FF FF FF

x86 tcpip6.sys 5.1.2600.7510
@33EB3    0A 00 00 -> FF FF FF

x64 tcpip.sys 5.2.3790.6527
@c00cc    0A 00 00 -> FF FF FF

x64 tcpip6.sys 5.2.3790.6527
@5e9a0    0A 00 00 -> FF FF FF

where 0x0A = 10 and 0xFFFFFF = 16777215

maybe 0xFFFF = 65535 would have been enough?😀

tcpip-patch.png

 

 

WinXPPAE v3.5 patch not needed, XP64 is good up to 128GB of ram.

 

AVX/AVX2 patch (only x86 version exists)

 

MovAX0xDEAD said:
Let's make another dirty hack :)

This time is AVX/AVX2 Enabler for Windows XP (x32 only)
Again as Proof-of-Concept, only ntkrpamp.exe (MultiCPU+PAE) is done (still BETA v1), v5.1.2600.7581 (KB4463103 update, 2029056 bytes)

Do it yourself (you need change kernel file on disk, remember about Microsoft's EULA):
1) xdelta3.exe -v -f -d -s ntkrpamp.exe ntkrpamp.delta ntkrpamp_avx.exe
2) put ntkrpamp_avx.exe as new ntkrnlpa.exe in /system32 folder, ntkrnlpa.exe will be selected by bootloader only if windows was installed as MultiCPU+PAE. Also you can force exact filename in boot.ini: add /kernel=ntkrnlpa.exe

Links:
ntkrpamp.delta v1 - ⇗ http://www.unibytes.com/facSy3u_83gLqw-Us4P3UgBB / ⇗ https://www.mediafire.com/file/a692j6ymc..._delta.zip/file
ASM sources (FASM format) v1 - ⇗ https://pastebin.com/CbBFd5tM
xdelta3.exe - ⇗ https://github.com/MovAX0xDEAD/KDNET/raw/master/xdelta3.exe


P.S. Some test/diag utils fail with AVX detection due wrong coding, but proper projects like Prime95 do it right

P.S. WinXP x64 kernel has different FPU context format, but i think it is possible to do same trick, but i'm not interested

P.S.S Don't ask for AVX512, there is no free space in FPU context to store additional 16*AVX512_H(256bit) regs. WinXP x32 kernel allocates only 520 bytes(see _FXSAVE_FORMAT struct) for store all (2*ControlWords(128bit) + 8*FPU/MMX(128bit) + 8*SSE(128bit) + 8*AVX_H(128bit)) regs, this "520" harcoded to structs and code :(

 

GPT native support on data volume.  With XP32 you have to copy disk.sys and partmgr.sys  from server2003x86, but with XP64 its based on 5.2 (like 2003x64).

 

sndrec32 2GB patch (only needed for x86, x64 does not need patch)

 

5.1.2600.5671


@6C4B  change  7E 2E -> 76 2E
sndrec322gbfix.png

 

Patch for applications
4GB patcher to add /LARGEADDRESSAWARE flag for EXEs. Otherwise 32bit process is limited to 2GB. This would allow it to use all 4GB. Useful for some games or apps that can use a lot of RAM.
https://ntcore.com/?page_id=371

 

Edited by pappyN4
adding
Link to comment
Share on other sites

Build ISO with nLite

WinXP64 ISO and updates
en_win_xp_pro_x64_with_sp2_vl_x13-41611.iso
5eraph_Windows_XP_x64_Post-SP2_UpdatePack_ENU_v2019-08.7z; https://www.mediafire.com/folder/x6qqeye5y0a0x/x64

WinXP ISO and updates
en_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73974.iso
XPSP3_QFE_UpdatePack_20210829_Pro.7z; https://www.4shared.com/web/directDownload/0t47E_Vhea/B8-gUmU2.8a5c8b6a84dcde59d76300e08ab95fac
XPSP3_QFE_POSReady_Addon_20200528_5er.7z;  https://www.4shared.com/web/directDownload/pCl2jGEqea/B8-gUmU2.7befe8c26d0ff79f226742fccad3d4c3
Note: order matters, in nlite have the UpdatePack run first, then the POSReady updates
Note2: in POSReady updates, entries_POSUpdates.ini has a bug with nlite, you will need to comment out these lines

;Prevents Windows Setup copying drivers from driver.cab that the integrator failed to update
;drvindex.inf|ks.sys||2
;drvindex.inf|termdd.sys||1
;drvindex.inf|hsf_fs|hsf_fsks.sys|1


Compile NTOSKRNL_Emu; https://github.com/MovAX0xDEAD/NTOSKRNL_Emu
Backport drivers/ create whatever patch files from above.

Install nLite 1.4.9.3
extract Windows ISO to folder
run nlite, customize as you want, make sure to import the postSP2 update pack
once you get to the create ISO stage stop


==============ACPI/NTOSKRNL/STORPORT============================

open nlited ISO folder and extract SP3.cab (XP), SP2.cab (XP64) to a folder
replace acpi.sys, add storport.sys, storpor8.sys, ntoskrn8.sys to folder
use CabPack1.4 to recreate SP#.cab and replace cab file from ISO folder
replace ACPI.SY_, add STORPORT.SY_, STORPOR8.SY_, NTOSKRN8.SY_ to I386 (XP), AMD64 (XP64) folder

use cabsdk  to compress eg: "CABARC -m LZX:21 N ACPI.SY_ ACPI.SYS"
------------------------------------------------
(I386 folder for XP) (AMD64 folder for XP64)


in DOSNET.INF add   (x64 already has a storport.sys line)

[FloppyFiles.1]
d1,ntoskrn8.sys
d1,storpor8.sys
d1,storport.sys

[Files]
d1,ntoskrn8.sys
d1,storpor8.sys
d1,storport.sys
------------------------------------------------
in TXTSETUP.SIF   add   (x64 already has a storport.sys line)

[SourceDisksFiles]
storport.sys = 1,,,,,,3_,4,0,0,,1,4
usbd.sys = 1,,,,,,4_,4,0,0,,1,4        ;force load for mb with xhci only

[SourceDisksFiles.amd64]   OR    [SourceDisksFiles.x86]
ntoskrn8.sys = 1,,,,,,3,4,0,0,,1,4
storpor8.sys = 1,,,,,,3,4,0,0,,1,4

[FileFlags]
ntoskrn8.sys = 16
storpor8.sys = 16
storport.sys = 16
=================================================================

=================Other Patches=====================================
replace SHELL32.DL_ patched version to AMD64 or I386 folder
replace TCPIP.DL_ and TCPIP6.DL_ patched version to AMD64 or I386 folder

for x86 replace sndrec32,disk,partmgr, and other files from AVX/PAE patch to the I386 folder or the SP#.cab as needed
=================Make ISO======================================
make ISO in nLite and test. 

Edited by pappyN4
Link to comment
Share on other sites

SATA driver speed tests (XP64 vs Win7x64)
combined-SATA.png

 

NVME driver speed tests (XP64 vs Win7x64)
combined-NVME.png

 

storport tests

 


XPx86 storport 5.2.3790.4485 (from server 2003 x86) (default XP has no storport and drivers will not work)
AMD 1.2.1.321       yes
AMD 1.2.1.402+ntos8   no boothang
StorAHCI schtrom   yes
NVME schtrom w2k3OFA1.3   no code10
NVME schtrom w2k3OFA1.5   no code10
NVME win7+ntos8       no code37

XPx86 storport 6.1.7601.23403 +ntos8
AMD 1.2.1.321       yes
AMD 1.2.1.402+ntos8   yes
StorAHCI schtrom   yes
NVME schtrom w2k3OFA1.3   no code10
NVME schtrom w2k3OFA1.5   no code10
NVME win7+ntos8       yes
NVME Samsung+ntos8   no
================================
XPx64 storport 5.2.3790.4485 (default)
AMD 1.2.1.321       yes
AMD 1.2.1.402+ntos8   yes
StorAHCI schtrom   yes
NVME schtrom w2k3OFA1.3   yes
NVME schtrom w2k3OFA1.5   no boothang
NVME win7+ntos8       no boothang

XPx64 storport 6.1.7601.23403 +ntos8
AMD 1.2.1.321       yes
AMD 1.2.1.402+ntos8   yes
StorAHCI schtrom   yes
NVME schtrom w2k3OFA1.3   yes
NVME schtrom w2k3OFA1.5   no boothang
NVME win7+ntos8       yes
NVME Samsung+ntos8   yes
NVME OFA 1.3       no
NVME OFA 1.3+nt8+sto8   no
NVME OFA 1.5+nt8   no

 

 

SMART tests

 


Seagate HDD, Sandisk SSD, Samsung NVME

                   CrystalDisk8.9.0a/HWiNFO640/GSmartControl0.90   

XPx64 storport 6.1.7601.23403(msi patch/SMART patch) +ntos8
SATA AMD 1.2.1.321           Yes/Yes/Yes
SATA StorAHCI schtrom 1.0_20200928   Yes/Yes**/Yes
SATA storahci 6.2.9200.16384       Yes/Yes/Yes
NVME schtrom w2k3 1.3           No/Yes/No
NVME win7.23403+ntos8           No/No/No
NVME Samsung+ntos           EXEcrash*/Yes/No        

**StorAHCI schtrom 1.0_20200928   (when started HWi BSOD0x51(0x04,0x01,..., changed to other driver for test, no BSOD when changed back)


XPx64 storport 6.1.7601.23403(msi patch) +ntos8
SATA AMD 1.2.1.321           Yes/Yes/Yes
SATA StorAHCI schtrom 1.0_20200928   No/1stSATA/Yes
SATA storahci 6.2.9200.16384       No/1stSATA/Yes   
NVME schtrom w2k3 OFA1.3       No/Yes/No
NVME win7.23403+ntos8           No/No/No
NVME Samsung+ntos           EXEcrash*/Yes/No       

*EXEcrash Crystal8.3.0 last version to work with Samsung NVME driver on XP, newer ones crash)


Win7x64 6.1.7601.23403 (default)
AMD 1.2.1.402   Yes/Yes/Yes
Win7msahci   Yes/Yes/Yes
NVME win7   No/No/No       
NVME Samsung   Yes/Yes/No
NVME OFA1.3   noboot
NVME OFA1.5   noboot

 

 

 

ACPI tests

 


x64
Bad   acpi 5048 - 2019.10.19 (Intel&AMD Final) - daniel_k
Bad   acpi 5048 - 2019.5.15 - skullteria
Good   acpi 5048 - 2019.9.1 (Ryzen) - diderius6

x86
G   acpi 5048 - 2019.10.11 - diderius6
G   acpi 5048 - 2019.10.19 (Intel&AMD Final) - daniel_k
G   acpi 5048 - 2019.11.1 - diderius6
Bad   acpi 5048 - 2019.5.15 - skullteria
G   acpi 5048 - 2019.6.25 - infuscomus
G   acpi 5048 - 2019.6.30 (Ryzen) - diderius6
G   acpi 5048 - 2019.8.25 - daniel_k
G   acpi 5048 - 2019.8.27 (Intel&AMD Final) - daniel_k
G   acpi 5048 - 2020.10.24 - daniel_k, diderius6
Bad   acpi 6666 - 2019.10.18 - OuterSpace, diderius6
Bad   acpi 6666 - 2019.10.20#1 - OuterSpace, diderius6
G   acpi 6666 - 2019.10.20#2 (Intel&Ryzen) - OuterSpace, diderius6
untest   acpi 6666 - 2020.10.22 - daniel_k
G   acpi 6666 - 2020.10.22 - OuterSpace, daniel_k
G   acpi 6666 - 2020.10.23 - diderius6
G   acpi 6666 - 2020.12.28 - diderius6
G   acpi 6666 - 2021.2.1#1 - daniel_k               (2013none, 2015both amdi0030, amdif0030)
G   acpi 6666 - 2021.2.1#2 - daniel_k               (2013none, 2015both amdi0030, amdif0030)
G   acpi 6666 - 2021.8.28 - daniel_k, diderius6

 

Edited by pappyN4
formating
Link to comment
Share on other sites

Ok, now for something new.  Sadly doesnt seem to be much interest for x64 ACPIs.  I started using it back in 2005, so I broke away from 16bit applications long time ago.  I didnt actually use XP, I went from 2000 to XP64.  Anyways...

I'll start by saying I have no idea about patching ACPIs.  I have no idea what each specific patch was made for.  I dont know how to debug errors from ACPI.  In the words of Mov AX, 0xDEAD, blindly turning off checks is not always the best idea.  All I've done was compare the latest x86 5048 acpi (which worked on my ryzen), and tried to match existing patches and missing patches based on any calls or values by patterns and general structure/flow in IDA Free on the x64 5048.  Some I feel confident I found the right one, others are reasonable, and one that is a total guess as it had nothing guess from.  Feel free to open IDA and see for yourself.

 

5048 x86	"2020.10.24 - daniel_k, diderius6", all patches below are based on compare to original unpatched / patched file
=Matched in x64
@27a80	00 00 00 -> A8 97 03
@27c58	28 92 03 -> 00 00 00
=Matched in x64
@d443	75 -> EB
=MaybeMatch in x64
@15f15	8B F7 -> 89 FF



-ex1 to x64
@283d6	7D -> EB
-ex2 to x64
@d2b0	74 -> EB
-exClose1 to x64
@f7e1	74 -> EB
-exClose2 to x64
@4511	0F 84 39 01 00 00 -> E9 3A 01 00 00 90
-experiNotSure1 to x64
@317ac	75 -> EB
@317c5	21 -> 00

 

5048 x64	"2019.6.30 (Ryzen) - diderius6"
=Matched from x86
@4ae40	00 00 00 -> B8 C8 05
@4b1f0	18 BF 05 -> 00 00 00
=Matched from x86
@18ca4	0A -> 00
=MaybeMatch from x86
@26337	08 00 14 C0 -> 00 00 00 00
@26429	74 -> EB
--end of origial 2019.06.30 patch
----------------------EXPERIMENT---------everything below this is untested guess from x86
-experi1
test		@51bf1	79 -> EB
-experi2
test		@198dc	0F 84 7F -> E9 80 00
-experiClose1
test		@1c666	74 -> EB
-experiClose2
test		@9638	0F 84 A8 01 00 00 -> E9 A9 01 00 00 90
-experiNotSure1
test		@5fa63	74 -> EB
test		@5fa94	78 -> 00

 

experi1
in subroutine that has \\_S1,2,3,4,5 in the beginning
shorty before the end, block just after a ZwPowerInformation and 2 ExFreePoolWithTag, x86 stop jump to 2001, 0A5, call: extern KeBugCheckEx:Dword
so we do same, stop jump to __stdcall __noreturn extern KeBugCheckEx:qword

experi1.png
===========
experi2
in function shortly after x64@18ca4,x86@d443 with 58080206h,4449485Fh push/mov, PNP0C0F is jumped so that it doesnt get to a 5349445Fh, which then goes to 10006h,0A5h ds:keBugCheckEx
x64 version has a lot more paths to 0A5h, but same one jump to get away, good idea? I dont know.

Another learning experience.  This one I used the same E9 jump as from expericlose2, but this time I just tried with my own guess for the offset.  I ended up with a bit longer jump then I wanted so I guess my math wasnt exactly correct, but was able to get it there eventually.

experi2.png
===========
experiClose1
similar structure, compares 0FFFFFFFFh has 2 KeBugCheckEx, and ends with ExFreePoolWithTag
first KeBugCheckEx is left alone, goes straight from head to bugcheck, other one near end is the one that is jumped out

experi-Close1.png
===========
experiClose2
similar structure,  4449555Fh,0Dh,0A5h to KeBugCheckEx at end, mentions 800h vs 80000000000h and 0A000h vs 0A00000000000h between x86 and x64
on x86 jumped to "retn" block,

This one was a learning experience.  Using the same E9 3A 01 landed in the wrong spot.  Makes sense after looking up E9 (JMP) is based on offset distance entered.  On the x64 where you want to go wasnt in the same spot.  So used IDA free in text mode to see where the text jump landed with the wrong value from x86, in hex calculated the difference on how much further was needed, then added it to the JMP.  So 31 01 (aka in hex calculator 0131 + 6F = 01A9), so A9 01.

experi-Close2.png
===========
experiNotSure1
not much to guess with, short subroutine, 2 KeBugCheckEx to avoid, total guess on this one

experi-Not-Sure1.png

 

 

Update

https://www.mediafire.com/file/ietiycbz6eueacz/xp64_acpi5048_2022.04.12.rar/file

Edited by pappyN4
Link to comment
Share on other sites

  • 1 month later...

Samsung NVMe and SMART with CrystalDiskInfo

The samsung nvme driver is able to display SMART data in XP/Win7.  To get CrystalDiskInfo to work instead of crashing when you start it in XP/XP64 you will have stop it from using WMI.  Open DiskInfo32 or DiskInfo64 with a hex editor, find where "\ \ . \ r o o t \ c i m v 2" is and change it to something like "\ \ . \ r o o t \ n o w m i".  Tested on version 8.15.2

630069006D00760032 -> 6E006F0077006D0069

 

Samsung NVMe potential issues

When I installed the latest nvidia 368.81 driver it caused the Samsung 3.3.0.2003 to stop working on XP64.  @Andalu tested the same drivers on an Intel B250/GT730 and worked fine. After playing around with it, installing nvidia 355.98 appears to work/coexist with the Samsung NVMe driver on XP64.  I've only tested on a GT710 so far but hopefully same result for my GTX750.  Something to keep in mind if you have a amd/B450/gigabyte combo.  On XP32 the Samsung driver did not work (code10), using the default non patched, or with the PAE patch /4GB.  It did however work when PAE patched using /128GB or /all.  Both with 355.98 and 368.81

 

Trim tests

O&O Defrag 17.5 is the best from all the ones I tested.  Works on SATA and NVMe SSDs.  AMD/Samsung/nativeWin7 drivers were all able to TRIM.  Can be run from CMD line so you can schedule it if you want.

NVMe Trim
ADataSSDToolbox        doesnt see (Win7/samsung/SchtromOFA13 driver)
TxBENCH            see but no trim (Win7/samsung/SchtromOFA13 driver)
SSDTool 0.95        see but trim didnt work (../../samsung)
Naraeon5.4.0        win7 no see, SchtromOFA13 trim didnt work, samsung TRIM WORKS
O&O Defrag 17.5        win7 TRIM WORKS, SchtromOFA13 see but no trim, samsung TRIM WORKS


SSD Trim
Naraeon5.4.0        AMD yes, Win7msahci yes, SchromAHCI no see, Win8ahci no see
O&O Defrag 17.5        AMD yes, Win7msahci yes, SchromAHCI no trim, Win8ahci no trim

used trimcheck0.7 to see if it worked (https://github.com/CyberShadow/trimcheck)

*trimcheck x64 works also if Major/Minor changed from 6,0
*Naraeon has a "not a valid date and time error", doesnt affect functionality
*O&O can be run from CMD line, needed to change Major/Minor from 6,0 down to 5,2 (or 5,1) to install

 

Nvidia GPU driver & custom resolution

Based on a few posts i found, Nvidia 355.98 is that last version where you can add custom resolution if for example you have a ultrawide screen or 4k monitor that you want to use.  It looks like XP is limited to displayport HBR1 (8.64 Gbit/s).  There is a bit of other stuff as well but roughly, horizontal pixels × vertical pixels × (3 × bits per color channel) × refresh rate in Hertz = Bits per second.  Calculator https://tomverbeure.github.io/video_timings_calculator

Ex:
2560 × 1600 × (3 × 😎 × 75 = 5898240000 bits/s / 1024³ = 6.86 Gbit/s
3840 x 2160 x (3 x 😎 x 40 = 7962624000 bits/s / 1024³ = 7.41 Gbit/s


https://www.vogons.org/viewtopic.php?f=63&t=72471
http://wp.xin.at/archives/5616

 

Edited by pappyN4
Link to comment
Share on other sites

USB Attached SCSI (UASP)

When using the AMD USB drivers for the motherboard with a UASP capable device it defaults to using the default USB Mass Storage Device (usbstor), same as a standard USB stick.

With the backported Win8 drivers it's different.  If you do not have a UASP driver installed (USB\Class_08&SubClass_06&Prot_62) then it will not find a driver by default.  You can force install by manually selecting Universal Serial Bus Controllers - USB Mass Storage Device, or install a uasp driver.

Note that some motherboards may have a deadlock issue when using the uasp driver during reboots with the USB adapter still connected.  If you select Safe Remove, reboot works fine, otherwise it doesn't finish the reboot.  You will need to use a deadlock patched version of the driver if thats the case.


The following test is with a JMicron USB to PCIE adapter, VID152D PID0583 and a XG5 256GB NVMe.  The Gen2 port on the B450 chipset and the Gen1 port on the B450 and on the Ryzen2.  Drivers are the default XP usbstor 5.2.3790.5829, VIA uasp 6.1.7600.4002, and win8 uaspstor 6.2.9200.16384.
combined-USB.png

Link to comment
Share on other sites

"Installed INF does not contain digital signature" warning

infdigitalsignature.jpg

I got this warning after integrating the USB3 drivers.  You will need to patch syssetup.dll file to get rid of it.  Original patch is from @ Mattiwatti.  I updated the x64 patch to match the one found in the 2019 updates. 

x86 syssetup.dll 5.1.2600.5512
@33bfe	8B F8 3B FE 75 20 -> 31 C0 31 FF 90 90
@33da6	8B F0 85 F6 75 17 -> 31 C0 31 F6 90 90
@35535	0F 84 9F 00 00 00 -> E9 A0 00 00 00 90
@37f03	3B C6 -> 31 C0
@37f0b	75 3E -> 90 90


x64 syssetup.dll 5.2.3790.4226
@423dc	75 4C 0F B6 0D 8C A2 08 00 -> 90 90 31 C9 90 90 90 90 90
@42431	75 4C 0F B6 0D 36 A2 08 00 -> 90 90 31 C9 90 90 90 90 90
@424cb	0F 85 D5 00 00 00 -> E9 D6 00 00 00 90
@425a6	40 8A 74 24 30 -> 31 F6 90 90 90	
@3fe50	85 DB 0F 84 E3 00 00 00 -> 31 DB E9 E4 00 00 00 90	
@41d2b	85 C0 8B F8 75 25 -> 31 C0 8B F8 90 90
@41fb6	85 C0 8B D8 75 1C -> 31 C0 8B D8 90 90
@4204b	0F 84 84 03 00 00 -> E9 85 03 00 00 90
@46bf9	85 C0 8B D8 75 47 -> 31 C0 8B D8 90 90
@571ab	0F 85 DB 00 00 00 -> E9 DC 00 00 00 90
@5728c	40 8A 74 24 40 -> 31 F6 90 90 90
@7204b	85 C0 75 1F -> 31 C0 90 90
@78a22	75 61 0F B6 0D 46 3C 05 00 -> E9 B9 00 00 00 90 90 90 90

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...