Jump to content

Recommended Posts

Posted (edited)
On 4/22/2024 at 11:11 AM, George King said:

When I decide to publish, then Yes. Now they are private only.

I do not know how in the v45 version but in DP_Ported_DriversCollection_v44.7z many x64 drivers do not install because .inf files are incorrect - I tested only NVMe:

  • Generic_NVMe_1.3.1014.00, Generic_NVMe_1.5.1200.00, Generic_NVMe_10.4.49.0 - have universal HW ID: PCI\CC_010802 but errors in .inf files
    13101400.png
  • Samsung_NVMe_3.3.0.2003, IaNVMe_4.4.0.1003 - no compatible HW ID: PCI\CC_010802
    samsung.png

The only one that can be installed and works on real hardware (but not in VMware) is Generic_NVMe_6.1.7601.23403 because it has a universal HW ID in the .inf file:

%PCI\CC_010802.DeviceDesc%=Stornvme_Inst, PCI\CC_010802
Edited by reboot12

  • 3 months later...
Posted

Bought an Intel for the first time in over a decade.  Patched in the TSC frequency fix that should be used after the PmTimer is patched

With CPUz started and WinTimerTester running a test I see the known clock drift problem.  Ryzen does not have the issue so I wasnt able to test it until now. 

I'm assuming still no fix with windows patch or BIOS?

For now, I use classic XP era Dimension4 time to keep sync.

Intel-Drift1-10.png

 

Like with XP, add shr to shift right, value is 0A hex or 10 decimal, so 2^10=1024
https://msfn.org/board/topic/183489-windows-xp2003-x32-on-modern-hardware-faq/page/4/#findComment-1235566

 

x64 hal.dll 5.2.3790.6912
https://ufile.io/j28adslm

PmTimer
@38881    73 -> EB
@40186    73 -> EB

TSC frequency
@F890    74 0C 65 48 8B 04 25 C0 00 00 00 48 89 01 0F 31    48 C1 E2 20 48 0B C2 C3 CC CC CC CC CC CC CC CC
     -> 74 10 65 48 8B 04 25 C0 00 00 00 48 C1 E8 0A 48 89 01 0F 31 48 C1 E2 20 48 0B C2 48 C1 E8 0A C3

in KeQueryPerformanceCounter
=========================================
74 0C				jz      short loc_XXX
65 48 8B 04 25 C0 00 00 00	mov     rax, gs:0C0h
48 89 01			mov     [rcx], rax
0F 31				rdtsc				;loc_XXX
48 C1 E2 20			shl     rdx, 20h
48 0B C2			or      rax, rdx
C3				retn

change to
=========================================
74 10				jz      short loc_XXX
65 48 8B 04 25 C0 00 00 00	mov     rax, gs:0C0h
48 C1 E8 0A			shr rax, 0Ah       		<---------
48 89 01			mov     [rcx], rax
0F 31				rdtsc				;loc_XXX
48 C1 E2 20			shl     rdx, 20h
48 0B C2			or      rax, rdx
48 C1 E8 0A			shr rax, 0Ah			<---------
C3				retn

 

x64rtc-HAL-TSC-frequency-divider.png

 

 

  • 11 months later...
Posted

Earlier I mentioned that modern Intel was a lot faster in a specific software compared to modern AMD.  After investigating, turns out that the issue is not with XP/XP64 on modern hardware, but with the company compiler the program was created with.  Back in the XP era, a compiler from a certain lawsuit happy company compiled in such a way so that CPUID was checked, and if the cpu was not from that company, lets say AMD, then it used basic instruction set only instead of SIMD (MMX/SSE/SSE2/etc...)

https://www.felixcloutier.com/x86/cpuid

snippet here is just after cpuid was run and loaded ebx,edx,ecx into memory,

patch-AMD.png

you can see the vendor identification string being compared to the memory locations

cmp [ebp+...], 75 6E .. .. h

if it matches then flag is set to "1"

mov eax, 1

 if cpu was does not pass vendor identification string, then it sets flag to zero

xor eax,eax

code continues on to test if flag was set to 1, and if it was continues on to the rest of the code where the SIMD occurs

test eax,eax

if not then goes to the end of the subroutine to the same place as if it was a "good" vendor identification string but one that reported no SIMD capabilities.

cmp [ebp+..], 0
jz loc_5431EC

 

To fix problem, you can search in IDA for the 3x 4 character grouping starting with 756E.... and replacing the first conditional jump JNZ "75 xx" with an JMP "EB yy." so that it skips the checks and goes straight to setting the flag  "mov eax,1".

 

Fortunately the certain company compiler was not really popular for games, but more for computational/scientific software.  By making the change the AMD processor got a 3x speed boost thanks to now being allowed to use SIMD instructions.

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...