• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

How To: Enable SLI on pre-i7/i5 hardware

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
Is there any method to get SLIC string from working system , to check if it inserted correctly? :) All that tables confuse me :)
Yes.

Go into device manager and look under "System Devices". If it worked, you should have a "Microsoft Windows Management Interface for ACPI" device in there. If you go into the details tab, you should see "ACPI\PNP0C14\MXM2".

Also, if you go into the registry under HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT\ (and follow the keys all of the way down... they change from machine to machine. Its the same place you dumped the DSDT from in the first place. Mine is "HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT\A1007\A1007001\00000001". There is a key there (mine is "00000000"). If you double click that key and scroll through it, you should see the SLIC entry in there.

Thats about as far as I know how to verify that it's correct...
 
Joined
Jun 21, 2009
Messages
1,433 (0.26/day)
Sveetsnelda did you find out by means the driver obtains chipset ID, i mean directly through io ports or windows functions? i think it would best if patch windows, then you dont have to patch each new driver
 

TiN

Joined
Aug 28, 2009
Messages
214 (0.04/day)
Location
USA
System Name selfmade caseless :D
Processor Intel ES
Motherboard EVGA X299 DARK ES :)
Cooling LN2
Memory G.SKILL DDR4 @ 3600MHz
Video Card(s) GTX Kingpin's
Storage Intel P4500 4TB
Display(s) Philips BDM4350
Case none
Audio Device(s) Creative X-Fi
Power Supply EVGA NEX 1500W's
Mouse None (trackball)
Keyboard Steelseries APEX RAW and Corsair K-something
Software W2k8 R2 64bit SP1, FreeBSD 12
Benchmark Scores http://www.hwbot.org/community/user/tin?oldstyle=true
WOW.

sveetsnelda

:toast::respect::D

 
Last edited:

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
Sveetsnelda did you find out by means the driver obtains chipset ID, i mean directly through io ports or windows functions? i think it would best if patch windows, then you dont have to patch each new driver
Agreed. Having something that hooks and returns a fake HID would be the best way to go... I just don't know how to code this.

The driver obtains the chipset ID by using a few calls to "__imp_HalGetBusDataByOffset".

http://msdn.microsoft.com/en-us/library/aa490182.aspx

I don't know much about the function other than having a good idea of what it accomplishes.

The call is made at 0x000CAB25 (or 0x000DAB25 in IDA) inside nv4_mini.sys to a subroutine that uses "HalGetBusDataByOffset". That subroutine starts at 0x00051070 (0x00061070 in IDA).
 
Joined
Jun 21, 2009
Messages
1,433 (0.26/day)
I don't know much about the function other than having a good idea of what it accomplishes.

it's configuration read from bus. i thought to patch hal.dll. Exactly this function. Configuration address is bus=0, device=0, function=0. Patch hal.dll such way nvidia driver is caller then do check for this configuration address (bus=0, device=0, function=0), and return device id (3400) if it's need of course. to the rest, hal.dll will work as usual
 

TheWolf

New Member
Joined
Aug 11, 2009
Messages
211 (0.04/day)
Location
Pascagoula, Ms
System Name TheWolf
Processor Q9650/Q9550
Motherboard Abit IP35ProXE/IX38QuadGT
Cooling Big Typhoon x4
Memory G-Skill/A-Data/SuperTalent
Video Card(s) 3x MSI 260GTX OC 2x216 1x192 shaders
Storage Hitachi 80gb x2
Display(s) Norcent/Neovo
Case none/benching stations
Audio Device(s) onboard
Power Supply Crosair TX650W
Software XP/W7
Good night! thanks for the help.
To bad I just got XP all setup, oh well there is tomorrow.
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
If that is something you could do, that would be **awesome**. I wonder if the same function exists in Vista/Win7 though... MSDN says it's obsolete.

I'm sure you're already aware since you said "(bus=0, device=0, function=0)", but the driver uses this same function to check the hardware IDs of the video cards. This means the hook should only apply to bus 0 device 0 function 0.
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
Good night! thanks for the help.
To bad I just got XP all setup, oh well there is tomorrow.
If you can hurry and get that file dumped and attached within the next 5-10 minutes, I can take a quick look at it.
 

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
25,887 (3.79/day)
Location
Alabama
System Name Rocinante
Processor I9 14900KS
Motherboard EVGA z690 Dark KINGPIN (modded BIOS)
Cooling EK-AIO Elite 360 D-RGB
Memory 64GB Gskill Trident Z5 DDR5 6000 @6400
Video Card(s) MSI SUPRIM Liquid X 4090
Storage 1x 500GB 980 Pro | 1x 1TB 980 Pro | 1x 8TB Corsair MP400
Display(s) Odyssey OLED G9 G95SC
Case Lian Li o11 Evo Dynamic White
Audio Device(s) Moondrop S8's on Schiit Hel 2e
Power Supply Bequiet! Power Pro 12 1500w
Mouse Lamzu Atlantis mini (White)
Keyboard Monsgeek M3 Lavender, Akko Crystal Blues
VR HMD Quest 3
Software Windows 11
Benchmark Scores I dont have time for that.
excellent work
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
HalGetBusData is obsolete. new one is HalGetBusDataByOffset (for WinVista and 7).
Whoops! I read the article wrong. :) I obviously know nothing about writing drivers, btw. I just happen to understand logistics. I didn't even know ASM when I started this project. The only language I was familiar with was Visual Basic 6 (although I know the language very well). haha.
 

TheWolf

New Member
Joined
Aug 11, 2009
Messages
211 (0.04/day)
Location
Pascagoula, Ms
System Name TheWolf
Processor Q9650/Q9550
Motherboard Abit IP35ProXE/IX38QuadGT
Cooling Big Typhoon x4
Memory G-Skill/A-Data/SuperTalent
Video Card(s) 3x MSI 260GTX OC 2x216 1x192 shaders
Storage Hitachi 80gb x2
Display(s) Norcent/Neovo
Case none/benching stations
Audio Device(s) onboard
Power Supply Crosair TX650W
Software XP/W7
If you can hurry and get that file dumped and attached within the next 5-10 minutes, I can take a quick look at it.

It will be close, I'm still installing a few drivers that are needed.
Plus this was a clean install on another HDD, so I'll have to boot to the
other HDD & get all the files & video drivers to get the dump from this OS.
Don't miss any sleep on account of me, we will get this soon enough.
Tin may can help me out some.
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
Sounds good. I get notification of posts on my Blackberry. If I'm still up and see a post, I'll reply.
 
Joined
Jun 21, 2009
Messages
1,433 (0.26/day)
Whoops! I read the article wrong. :) I obviously know nothing about writing drivers, btw. I just happen to understand code and logistics. I didn't even know ASM when I started this project. The only language I was familiar with was Visual Basic 6. haha.

But I have wrote two operating systems on ASM. :)
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
But the driver hacked YOU my friend but not me. :) Though i also tried to hack.
And it took me weeks to get it done... that means I'm the slowest ASM hacker in the world. :D

Actually, I had to work around my roommate. I was using his EVGA X58 Classified so I could debug against a working machine. I had to work on it while he was at work (so he could use his computer when he was home). Props to him for letting me abuse his machine. :)
 
Joined
Jun 21, 2009
Messages
1,433 (0.26/day)
it doesn't matter. you did it. but i occupy myself automatic "SLIC putter" and hal.dll for x32 and x64 platforms.
 

TheWolf

New Member
Joined
Aug 11, 2009
Messages
211 (0.04/day)
Location
Pascagoula, Ms
System Name TheWolf
Processor Q9650/Q9550
Motherboard Abit IP35ProXE/IX38QuadGT
Cooling Big Typhoon x4
Memory G-Skill/A-Data/SuperTalent
Video Card(s) 3x MSI 260GTX OC 2x216 1x192 shaders
Storage Hitachi 80gb x2
Display(s) Norcent/Neovo
Case none/benching stations
Audio Device(s) onboard
Power Supply Crosair TX650W
Software XP/W7
What am I missing here guys? equus.exe worked fine in W7 but not working in XP...
I'm getting a error when trying to run it.
 
Joined
Jun 21, 2009
Messages
1,433 (0.26/day)
Well, we know that, X58 System "work out of the box" with this license. Now, Im curious, does anyone check already if is possible enable SLI just by insert the code among the DSDT system table of other "non approved" platform?

############ USLESS

U should be able to check that by following that mini "how to" ( KEEP IN MIND THAT MAY HARM UOR SYSTEM )

Grab, these two tools.

1.
Intel ACPI Component Architecture

2.
Microsoft ACPI Source Language Assembler

1. ACPI DSDT table are stored in system registry, so dump it ( uor table name may be different ).

>iasl.exe -d

Code:
Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.

C:\Windows\system32>cd C:\iasl

C:\iasl\iasl.exe -d

Intel ACPI Component Architecture
ASL Optimizing Compiler / AML Disassembler version 20050309 [Mar  9 2005]
Copyright (C) 2000 - 2005 Intel Corporation
Supports ACPI Specification Revision 3.0

DSDT obtained from registry, 26108 bytes
Table [DSDT] written to "DSDT_AWRDACPI.dat"

Could not find SSDT in registry at HARDWARE\ACPI\SSDT
Could not read SSDT from registry

Disassembly of DSDT
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
......
Parsing completed
Disassembly completed, written to "dsdt_AWRDACPI.dsl"

2. Decompile "dsdt_AWRDACPI.dat" with MS assembler

>asl.exe /u DSDT_AWRDACPI.dat

Code:
C:\Program Files (x86)\Microsoft ASL Compiler v3.0>asl.exe /u DSDT_AWRDACPI.dat
Microsoft ACPI Source Language Assembler Version 3.0.1NT [Aug 29 2006, 14:17:49]

Copyright (c) 1996,2006 Microsoft Corporation
Compliant with the ACPI 3.0a Specification

3. inside DSDT_AWRDACPI.ASL serch for the following string
Code:
		Scope(\)
		{
                    Method(SLDM, 2, NotSerialized)
                    {
                    }
		}
		Scope(\)
		{
                    OperationRegion(\SCPP, SystemIO, 0xB2, 0x01)
in the middle paste uor code which must be edited in accordance with uor manufacturer board, eventually fill the remaining space with 0x20 ( see the attached image )

Code:
                Scope(\)
                {
                    Method(SLDM, 0x2, NotSerialized)
                    {
                    }
                }
                Scope(\_SB_.PCI0)
                {
                    Name(SLIC, Buffer(0x9e)
                    {
                     ##CUT##
                    })
                    Device(WMI1)
                    {
                        Name(_HID, "pnp0c14")
                        Name(_UID, "MXM2")
                        Name(_WDG, Buffer(0x14)
                        {
	0x3c, 0x5c, 0xcb, 0xf6, 0xae, 0x9c, 0xbd, 0x4e, 0xb5, 0x77, 0x93, 0x1e,
	0xa3, 0x2a, 0x2c, 0xc0, 0x4d, 0x58, 0x01, 0x02
                        })
                        Method(WMMX, 0x3, NotSerialized)
                        {
                            CreateDWordField(Arg2, 0x0, FUNC)
                            If(LEqual(FUNC, 0x41494c53))
                            {
                                Return(\_SB_.PCI0.SLIC)
                            }
                            Return(0x0)
                        }
                    }
                }
                Scope(\)
                {
                    OperationRegion(\SCPP, SystemIO, 0xb2, 0x1)

ASUS = 0x41, 0x53, 0x55, 0x53,
DFI = 0x44, 0x46, 0x49,
EVGA = 0x45, 0x56, 0x47, 0x41,
FOXCONN = 0x46, 0x4F, 0x58, 0x43, 0x4F, 0x4E, 0x4E,
GIGABYTE = 0x47, 0x49, 0x47, 0x41, 0x42, 0x59, 0x54, 0x45,
MSI = 0x4D, 0x53, 0x49,

4. Compile

>asl.exe DSDT_AWRDACPI.ASL

Code:
C:\Program Files (x86)\Microsoft ASL Compiler v3.0>asl.exe DSDT_AWRDACPI.ASL
Microsoft ACPI Source Language Assembler Version 3.0.1NT [Aug 29 2006, 14:17:49]

Copyright (c) 1996,2006 Microsoft Corporation
Compliant with the ACPI 3.0a Specification

DSDT_AWRDACPI.ASL:

 4978:                         Name(_WDG, Buffer(0x14)
                                    ^***
DSDT_AWRDACPI.ASL(4978): warning: not a valid reserved NameSeg
asl(DSDT_AWRDACPI.dat): Image Size=26108, Image Checksum=0x1f

5. Override DSDT table in registry:

>asl.exe /loadtable DSDT_AWRDACPI.dat

Code:
Microsoft ACPI Source Language Assembler Version 3.0.1NT [Aug 29 2006, 14:17:49]
Copyright (c) 1996,2006 Microsoft Corporation
Compliant with the ACPI 3.0a Specification


Table overloading succeeded
....
6. Reboot. If anything goes wrong ( and u didnt fry uor board and/or any other device ) you can still boot with "Last Known Good configuration" for report if it didnt work :p

it was written at 10 page by IAin
 

TheWolf

New Member
Joined
Aug 11, 2009
Messages
211 (0.04/day)
Location
Pascagoula, Ms
System Name TheWolf
Processor Q9650/Q9550
Motherboard Abit IP35ProXE/IX38QuadGT
Cooling Big Typhoon x4
Memory G-Skill/A-Data/SuperTalent
Video Card(s) 3x MSI 260GTX OC 2x216 1x192 shaders
Storage Hitachi 80gb x2
Display(s) Norcent/Neovo
Case none/benching stations
Audio Device(s) onboard
Power Supply Crosair TX650W
Software XP/W7
Top