• 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

Mussels

Freshwater Moderator
Staff member
Joined
Oct 6, 2004
Messages
58,413 (8.21/day)
Location
Oystralia
System Name Rainbow Sparkles (Power efficient, <350W gaming load)
Processor Ryzen R7 5800x3D (Undervolted, 4.45GHz all core)
Motherboard Asus x570-F (BIOS Modded)
Cooling Alphacool Apex UV - Alphacool Eisblock XPX Aurora + EK Quantum ARGB 3090 w/ active backplate
Memory 2x32GB DDR4 3600 Corsair Vengeance RGB @3866 C18-22-22-22-42 TRFC704 (1.4V Hynix MJR - SoC 1.15V)
Video Card(s) Galax RTX 3090 SG 24GB: Underclocked to 1700Mhz 0.750v (375W down to 250W))
Storage 2TB WD SN850 NVME + 1TB Sasmsung 970 Pro NVME + 1TB Intel 6000P NVME USB 3.2
Display(s) Phillips 32 32M1N5800A (4k144), LG 32" (4K60) | Gigabyte G32QC (2k165) | Phillips 328m6fjrmb (2K144)
Case Fractal Design R6
Audio Device(s) Logitech G560 | Corsair Void pro RGB |Blue Yeti mic
Power Supply Fractal Ion+ 2 860W (Platinum) (This thing is God-tier. Silent and TINY)
Mouse Logitech G Pro wireless + Steelseries Prisma XL
Keyboard Razer Huntsman TE ( Sexy white keycaps)
VR HMD Oculus Rift S + Quest 2
Software Windows 11 pro x64 (Yes, it's genuinely a good OS) OpenRGB - ditch the branded bloatware!
Benchmark Scores Nyooom.
How would that work. Don't 750i boards only have 2 PCIe x16 slots?

some of them add in another lane via the southbridge.

Tri SLI couldnt happen without bridges at least, since there is no communication between the slots.


its like how my motherboard has 2x16 2.0 and 1x4 2.0 - only the first two are for crossfire, the last isnt designed for video cards.
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
Just letting everyone know that I'm still working on this...

Tonight I found the function call that disables SLI, the call that checks the motherboard ID, the call that gets the SLIC string from WMI, and the call that analyzes/decrypts the SLIC string.

I've traced through most of it except for the SLIC check. I'm pretty sure I could just patch the current driver now to enable SLI, but that would be a pain (we'd have to patch the driver each time a new one comes out). Instead, I'd like to make a generator (if possible) for the SLIC string. I'm trying to come up with something a little more permanant.
 

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
25,774 (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.
Just letting everyone know that I'm still working on this...

Tonight I found the function call that disables SLI, the call that checks the motherboard ID, the call that gets the SLIC string from WMI, and the call that analyzes/decrypts the SLIC string.

I've traced through most of it except for the SLIC check. I'm pretty sure I could just patch the current driver now to enable SLI, but that would be a pain (we'd have to patch the driver each time a new one comes out). Instead, I'd like to make a generator (if possible) for the SLIC string. I'm trying to come up with something a little more permanant.

damn good job man..honestly if i can be blunt without being offensive...i dont know were most of you guys came from but you have simply soared above and beyond the speed and progress of work i accomplished in meer weeks
 

JrRacinFan

Served 5k and counting ...
Joined
Mar 17, 2007
Messages
20,073 (3.23/day)
Location
Youngstown, OH
System Name Dual Build Streamer
Processor Ryzen 7900x3d : Ryzen 4600G
Motherboard AsRock B650E Steel Legend : Giga B450i Aorus
Cooling Custom Water 1x420 : Stock
Memory 32GB T-Force Deltas : 16GB Dominator Platinums
Video Card(s) PowerColor 7900 XTX Liquid Devil: iGPU
Storage 20+ TB
Display(s) Sammy 49" 5k Ultrawide
Case Custom White Painted Phanteks Enthoo Pro 2
Audio Device(s) Onboard : Onboard
Power Supply EVGA 1200W P2
Mouse Corsair M65 RGB Elite White
Keyboard Hyperx Origins 65
Software Windows 10
How would that work. Don't 750i boards only have 2 PCIe x16 slots?

some of them add in another lane via the southbridge.

Tri SLI couldnt happen without bridges at least, since there is no communication between the slots.


its like how my motherboard has 2x16 2.0 and 1x4 2.0 - only the first two are for crossfire, the last isnt designed for video cards.

Mine has 1x 16x 2.0 and 2x 8x 1.1
 

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
25,774 (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.
some of them add in another lane via the southbridge.

Tri SLI couldnt happen without bridges at least, since there is no communication between the slots.


its like how my motherboard has 2x16 2.0 and 1x4 2.0 - only the first two are for crossfire, the last isnt designed for video cards.

SLI between the slots is possible. iv proved it you dont need a bridge to run it.
 

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
For info to keep work going: I've got Xeon 3470 and P55 motherboard (ASUS MAXIMUS III), so can get BIOS dumps and ACPI dumps from this platform, if it's needed. Just give me a word for it :)
 
Joined
Jun 21, 2009
Messages
1,433 (0.27/day)
I've traced through most of it except for the SLIC check. I'm pretty sure I could just patch the current driver now to enable SLI, but that would be a pain (we'd have to patch the driver each time a new one comes out). Instead, I'd like to make a generator (if possible) for the SLIC string. I'm trying to come up with something a little more permanant.

Maybe you should patch the driver for the sake of the experiment?
 

e.v.o

New Member
Joined
Apr 18, 2009
Messages
14 (0.00/day)
Maybe we should write an emulator that catches the call and returns the necessary code?

@sveetsnelda
Can you provide us with more information on where exactly the SLIC code and the other stuff is called?
 

Mussels

Freshwater Moderator
Staff member
Joined
Oct 6, 2004
Messages
58,413 (8.21/day)
Location
Oystralia
System Name Rainbow Sparkles (Power efficient, <350W gaming load)
Processor Ryzen R7 5800x3D (Undervolted, 4.45GHz all core)
Motherboard Asus x570-F (BIOS Modded)
Cooling Alphacool Apex UV - Alphacool Eisblock XPX Aurora + EK Quantum ARGB 3090 w/ active backplate
Memory 2x32GB DDR4 3600 Corsair Vengeance RGB @3866 C18-22-22-22-42 TRFC704 (1.4V Hynix MJR - SoC 1.15V)
Video Card(s) Galax RTX 3090 SG 24GB: Underclocked to 1700Mhz 0.750v (375W down to 250W))
Storage 2TB WD SN850 NVME + 1TB Sasmsung 970 Pro NVME + 1TB Intel 6000P NVME USB 3.2
Display(s) Phillips 32 32M1N5800A (4k144), LG 32" (4K60) | Gigabyte G32QC (2k165) | Phillips 328m6fjrmb (2K144)
Case Fractal Design R6
Audio Device(s) Logitech G560 | Corsair Void pro RGB |Blue Yeti mic
Power Supply Fractal Ion+ 2 860W (Platinum) (This thing is God-tier. Silent and TINY)
Mouse Logitech G Pro wireless + Steelseries Prisma XL
Keyboard Razer Huntsman TE ( Sexy white keycaps)
VR HMD Oculus Rift S + Quest 2
Software Windows 11 pro x64 (Yes, it's genuinely a good OS) OpenRGB - ditch the branded bloatware!
Benchmark Scores Nyooom.
it's great but it works until a new driver comes out...

even if you only get it on one driver, who cares? one driver is enough to get you 20,000 downloads and just as many lawyers after you
 

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
BTW found that ASUS Maximus III Formula wasn't supported SLI with two GeForce 6600's :(. Tried in WinXP and Win7, with 81.xx and 190.62 forceware drivers, but "Enable SLI" in driver control panel won't appear. GPU-Z reports SLI disabled.
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
Well, here's some more info on how things work and where I'm at on this "project". Sorry I haven't posted much... I just wanted to make sure I understood the code very well before posting so I didn't mislead anyone. Keep in mind I hardly knew assembly at all when I started this. Now I'm starting to get the hang of it.

Here's how the SLIC verification works... A call is passed to WMI that checks for the existance of the string in the BIOS. If the key is there, the driver looks up the motherboard chipset's manufacturer and device ID. In the X58's case, this is 8086 (intel) and 3400 (X58). Then, the driver looks through a table of device/manufacturer IDs (which are encrypted) until it finds a match. If a match isn't found, obviously SLI isn't enabled. If a match is found, the table contains a couple memory addresses for each device/manufacturer ID combo. One of these memory addresses is a matching SLIC string (also encrypted) which is compared to the one in the board's bios.

What does this mean? This means that we can't just write our own SLIC into a bios on a non-certified board and expect it to work (unless the board's chipset is supported). The board's chipset ID has to be written into the driver for it to function.

I have no idea what encryption algorithm was used on the PNP ID table/SLIC keys/etc, but I *do* know how to decrypt them. In other words, I don't know what the function did in C, but I understand the function in ASM and know I could write a program to mimic it. I'd assume we could just check our board's northbridge device ID and patch it into those tables.

That's the theory, anyways...

I'm going to try and get this going on my Maximus II and post how it goes.
 

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
sveetsnelda

Awesome! I have some expirience with C and embedded hardware, PM me code, i'll see how I can help.

Is there another way, for example return our own vendor ID and device ID of chipset to driver, just from BIOS, rather that returning real ones?
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
I don't think there is a way to do that, but I'm not 100 percent sure. I think the driver is getting the hardware ID by querying the hardware itself, not from ACPI.

It'll be a bit before I can send you anything or post much, I need to trace through a few more subroutines and collect my thoughts. This code is very confusing. :)
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
If something like that could be done, that'd be awesome (and be an easy solution). I have no idea how to code such a thing, though.
 
Joined
Jun 21, 2009
Messages
1,433 (0.27/day)
Maybe we should try mod the driver? I also examine the driver to hack it, but i didn't that you do yet. Can you post you found out? I mean parts of code or something else. A place in the code you showed (push 'AILS'), there is some pushes onto the stack. Last one is push ebp, and called procedure is using it as pointer to either structure or simply array of pointers. Anyway, called procedure is using it to call other procedures. I didn't find out what procedures it calls, but for example:

there is :

push eax
push esi
call dword ptr[ebx+a8h]

when i got know what exactly called function contains, first my thought was they're fooling us.

called function:

xor eax,eax
retn 4

And there are many functions like that. Tell me what address into memory this pointer (push ebp i mean) points to?
 
Joined
Jun 21, 2009
Messages
1,433 (0.27/day)
i think an easy solution will be if we'll patch HalGetBusDataByOffset of hal.dll. Simply put there if statement for bus = 0 , device = 0, function = 0. Can we identify nvidia driver is calling this function?
 

Tynecider

New Member
Joined
Sep 5, 2009
Messages
3 (0.00/day)
@sveetsnelda

I also have MF2 (dual BIOS) board but am still trying to find a deal on a second VGA card.
I could help test for chipset compatibility for now, making sure the Intel drivers will play dice with the patching process.

A few questions:

Would it be possible to patch the BIOS with a DSDT call, similar to OSX86 patching?

If we could clone the X58/P55 SLI string (DSDT call) on our MF2 BIOS before windows loads would'nt that be more efficient?
This could however lead to problems with getting the intel drivers to load, assuming that windows will pass on the patched data to assign drivers for the north/southbridge functions.
Memory addressing could be a problem here too, the differences between X58/P55 and the P45 could be big, Memory controllers etc.

I think if you could find someone who has a a single PCB SLi card, this could help somewhat.
After all, its the only way right now that SLi can be enabled on X48/P45/X38/P35.
some code and functions could prove usefull from one of these setups.


Ill try and do some educational reading when i get some time to try and understand the process a bit better.

DAMMIT Why doesnt nVidia just reach out to people who are on the green team side, but prefer intel boards/CPU.

Fingers crossed
 

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
I have 9800GX2 here, if it's needed for test. :)
 

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
I need some people for testing:

- If you have a ASUS, ECS, Foxconn or MSI Board with the following Chipset: P35, X38, X48, P45
- If you have two Geforce Series 8/9/200
- If you are willing to help me :)

--- EDIT
Also 41 49 4C 53 reads SLIA, cause rw-everything reads it big endian which is false i think.

I'd be glad to help if this is still in the works.

I have Abit IX38 QuadGT I also have 3x 260GTX video cards.
Also have IP35ProXE & 3x 8800 videocards. 1x 8600
I do a lot of fold@home why I have so much hardware.
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
can someone get me the manufacturer/hardware ID's of the chipsets that need implimented? For example:

8086 3400 = X58
8086 2E20 = P45
 

sveetsnelda

New Member
Joined
Aug 26, 2009
Messages
137 (0.03/day)
http://i758.photobucket.com/albums/xx227/sveetsnelda/P45SLIScreenshot.png

This was accomplished by changing a couple things with the kernel debugger while booting, and with having a valid X58 SLIC in the ACPI table. It wont take much to patch the driver though.

This is running in "normal" windows mode, not directory services restore mode (like what Firewings did).
 
Last edited:
Top