• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.
  • The forums have been upgraded with support for dark mode. By default it will follow the setting on your system/browser. You may override it by scrolling to the end of the page and clicking the gears icon.

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

Little bit of google searching, came acrossed it on XS.org.
 
It's just founded in any X58 BIOS with SLI support, by disassembling DSDT table in ACPI section of BIOS rom :)
 
In case it helps, I'm actually not doing my testing by physically flashing the BIOS. The Microsoft ASL compiler gives you the ability to "override" the DSDT tables that are already in your BIOS. This article should give you a good idea of what I mean:

http://notebookequus.blogspot.com/
 
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?


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, 3, NotSerialized)
                        {
                            CreateDWordField (Arg2, 0x00, FUNC)
                            If (LEqual (FUNC, 0x41494C53))
                            {
                                Return (\_SB.PCI0.SLIC)
                            }

                            Return (0x00)
                        }
                    }
                }
                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
 

Attachments

  • SLIC.jpg
    SLIC.jpg
    117 KB · Views: 1,037
Last edited:
lAin,

I already did this on my P45 board and it did not work. The driver is doing some additional checks (it probably checks the PNP ID of the chipset or PCI Express port).

In other news, I found the location of the instruction (in the Nvidia driver) that makes the WMI call to the WMMX method. I'm just not very good with assembly. I'm trying though..
 
lAin,

I already did this on my P45 board and it did not work. The driver is doing some additional checks (it probably checks the PNP ID of the chipset or PCI Express port).

In other news, I found the location of the instruction (in the Nvidia driver) that makes the WMI call to the WMMX method. I'm just not very good with assembly. I'm trying though..

Get PSTOOL
and open one CMD as ADMIN, go for where u extract it.
1. Run regedit as SYSTEM
psexec -i -d -s c:\windows\regedit.exe

Search for "4d36e97d-e325-11ce-bfc1-08002be10318" without the quote and export the entry hive where the key is in, there must be at least PNP0C14 and it's father PNP0A08. Tag it somewhere and please add too in the DSDT :P
EDIT:
Wait, let alone and forget that identifier "4d36e97d-e325-11ce-bfc1-08002be10318".
Export just uor "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Enum\ACPI" and "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Enum\PCI"
Can u please write down too where u assume that call is? ( address ) Thanks
 
Last edited:
I extracted the key... I'm not sure what you want me to do with it, however. I don't see PNP0C14 or PNP0A08 in there. PNP0C14 (Microsoft Windows Management Interface for ACPI) was detected and "installed" when I added the WMMX method, though.

All of my testing so far has been on Windows XP 32 bit. I'm using Forceware 190.62. The address of the PUSH instruction containing "AILS' (SLIA) is at 000C5EDA.

6.14.11.9062
nv4_mini.sys
 

Attachments

  • SLIA.jpg
    SLIA.jpg
    45.5 KB · Views: 894
Here is my DSDT. I'll post the registry stuff in a minute (rebooting).

It will no work, anyway check where I'v tagged the code in there, see if u can build uor table while taking that in consideration.
Here are the registry keys you requested.
Yep, the PNP bridge isnt installed properly

Working one
Code:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2]
"Capabilities"=dword:00000030
"HardwareID"=hex(7):41,00,43,00,50,00,49,00,5c,00,70,00,6e,00,70,00,30,00,63,\
  00,31,00,34,00,00,00,2a,00,70,00,6e,00,70,00,30,00,63,00,31,00,34,00,00,00,\
  00,00
"Service"="WmiAcpi"
"ClassGUID"="{4d36e97d-e325-11ce-bfc1-08002be10318}"
"ConfigFlags"=dword:00000000
"Driver"="{4d36e97d-e325-11ce-bfc1-08002be10318}\\0014"
"Class"="System"
"Mfg"="@acpi.inf,%msft%;Microsoft"
"DeviceDesc"="@acpi.inf,%*pnp0c14.devicedesc%;Microsoft Windows Management Interface for ACPI"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Device Parameters]
"FirmwareIdentified"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\LogConf]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{83da6326-97a6-4088-9453-a1923f573b29}]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{83da6326-97a6-4088-9453-a1923f573b29}\00000003]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{83da6326-97a6-4088-9453-a1923f573b29}\00000003\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:61,00,63,00,70,00,69,00,2e,00,69,00,6e,00,66,00,3a,00,4d,00,69,00,\
  63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,2e,00,4e,00,54,00,61,00,6d,00,64,\
  00,36,00,34,00,3a,00,57,00,4d,00,49,00,4d,00,41,00,50,00,5f,00,49,00,6e,00,\
  73,00,74,00,3a,00,36,00,2e,00,30,00,2e,00,36,00,30,00,30,00,32,00,2e,00,31,\
  00,38,00,30,00,30,00,35,00,3a,00,2a,00,70,00,6e,00,70,00,30,00,63,00,31,00,\
  34,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000002]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000002\00000000]
"Type"=hex:10,00,00,00
"Data"=hex:00,80,8c,a3,c5,94,c6,01

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000003]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000003\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:36,00,2e,00,30,00,2e,00,36,00,30,00,30,00,32,00,2e,00,31,00,38,00,\
  30,00,30,00,35,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000004]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000004\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:53,00,74,00,72,00,75,00,6d,00,65,00,6e,00,74,00,61,00,7a,00,69,00,\
  6f,00,6e,00,65,00,20,00,67,00,65,00,73,00,74,00,69,00,6f,00,6e,00,65,00,20,\
  00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,57,00,69,00,\
  6e,00,64,00,6f,00,77,00,73,00,20,00,70,00,65,00,72,00,20,00,41,00,43,00,50,\
  00,49,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000005]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000005\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:61,00,63,00,70,00,69,00,2e,00,69,00,6e,00,66,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000006]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000006\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:57,00,4d,00,49,00,4d,00,41,00,50,00,5f,00,49,00,6e,00,73,00,74,00,\
  00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000007]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000007\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:2e,00,4e,00,54,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000008]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000008\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:2a,00,70,00,6e,00,70,00,30,00,63,00,31,00,34,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000009]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\00000009\00000000]
"Type"=hex:12,00,00,00
"Data"=hex:4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\0000000E]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Properties\{a8b865dd-2e3d-4094-ad97-e593a70c75d6}\0000000E\00000000]
"Type"=hex:07,00,00,00
"Data"=hex:01,00,ff,0d

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\pnp0c14\MXM2\Control]
"ActiveService"="WmiAcpi"
non working one
Code:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\PNP0C14]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\PNP0C14\MXM2]
"Capabilities"=dword:00000030
"HardwareID"=hex(7):41,00,43,00,50,00,49,00,5c,00,70,00,6e,00,70,00,30,00,63,\
  00,31,00,34,00,00,00,2a,00,70,00,6e,00,70,00,30,00,63,00,31,00,34,00,00,00,\
  00,00
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"
"Class"="System"
"Driver"="{4D36E97D-E325-11CE-BFC1-08002BE10318}\\0043"
"Mfg"="Microsoft"
"Service"="WmiAcpi"
"DeviceDesc"="Microsoft Windows Management Interface for ACPI"
"ConfigFlags"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\PNP0C14\MXM2\Device Parameters]
"FirmwareIdentified"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\PNP0C14\MXM2\LogConf]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\PNP0C14\MXM2\Control]
"ActiveService"="WmiAcpi"
 
Last edited:
I'm trying what you sent me, but I've already tried it before I think.

Why would my other DSDT not work? The only thing you changed was "ASUS MAXIMUS II FORM3287" to "ASUS MAXIMUS II 3287", right?

When I tested on the X58 board, the Nvidia driver didn't care what the name of the motherboard was. It only looked at the manufacturer name.

What do you mean the PNP bridge isn't installed properly?

I don't completely understand the code you attached. I'm not very good at assembler. It seems like the driver doesn't even run the WMMX method unless it "sees" an X58 chipset first though.
 
Tried your DSDT tables... No change :(

I'm still trying to find where the driver looks for the motherboard's chipset type...
 
Keep trying. If you need help with testing, count me in.
Have Gigabyte 965-DQ6 (i965 chipset) and ASUS P5B DLX (i965) mobos here and 8800gs/6600gt cards.

Also there is old modified Forceware drivers, which can use SLI on non-supported mobos, last was 81.xx version, i guess. They work well with GF 6/7 series on any mobo, and still available on XS forums. Just for information, if anybody don't know that.
 
Nice find TIN, too bad it's dated from 2006 and the developer had to stop the project.
 
Last edited:
Check this out... You may have read that the P55 boards are going to support SLI. Here is an extract from a P55 DSDT:

443817712091Genuine NVIDIA Certified SLI Ready Motherboard for GIGABYTE P55 UD6 3287-Copyright 2009 NVIDIA Corporation All Rights Reserved-876112936219(R)


The numbers changed from

"987134512781 765289891023"

to

"443817712091 876112936219"

These obviously have some sort of relation to what chipset is on the board... All of the X58 boards were the same.
 
dont forget guys, you may be the only one posting but theres a lot of us watching :)
 
Check this out... You may have read that the P55 boards are going to support SLI. Here is an extract from a P55 DSDT:

443817712091Genuine NVIDIA Certified SLI Ready Motherboard for GIGABYTE P55 UD6 3287-Copyright 2009 NVIDIA Corporation All Rights Reserved-876112936219(R)


The numbers changed from

"987134512781 765289891023"

to

"443817712091 876112936219"

These obviously have some sort of relation to what chipset is on the board... All of the X58 boards were the same.


With this info for sure that string seems some sort of chipset descriptor, hope the host machine through 0x41494C53 return that value.

How I suggest to proceed.
1 Installing checked-binary version acpi.sys, hal.dll, ntoskrnl.exe, ntkrnlpa.exe of the current target system.
2 Setup the parameter for load the system in kernel debug mode.
3 Embed some amli breakpoint in the DSDT while using storing method through the debug variable
4 See what that function had to tell
 
Last edited:
Agreed. This is actually what I was already working on last night. Now I just need to find my null modem adapter that I have stashed somewhere around here... :)
 
Back
Top