Jump to content

17" Dell M6500 + GTX970/GTX460@8Gbps-mPCIe1^4 (PE4H 2.4a) + Win7/Win8.1 [hishamkali]


hishamkali

Recommended Posts

So I am chugging away at finally getting a successful egpu implementation that I am happy with. I currently have four laptops, one Dell E6500, two Dell M4400s, and now one Dell M6500. The E6500 and M4400s will be given to my family back home as they need the computers, but in the meantime they have been useful testbeds.



First the specifications of the M6500

Internal Display: 17" WUXGA

CPU: i7920xm @2.00 GHz (I can take it way past 3.0 GHz, but leaving it stock for now to work on egpu)

RAM: 32.0 GB DDR3 1333 MHz

HDD1: 256GB Crucial M4 SSD

HDD2: 1.0TB WD 7200RPM

dGPU: AMD Firepro M7820 (Workstation equivalent of m5870)





PCI Express Port Layout:

Port 1: WWAN Port (Empty)

Port 2: WLAN Port (Occupied by Wi-Fi card Normally, currently removed)

Port 3: Bluetooth Port

Port 4: Express Card

Port 5: MSATA Slot???? (It's wired for pci express according to the motherboard schematic, but I was unable to detect anything plugged into that port).

Port 6: Broadcom Ethernet

Port 7: USB 3.0

Port 8: Nothing





TOLUD for this system is set at 3.50GB, meaning we will need a DSDT Override.



Operating Systems Under Review (Not my main PC yet, so I am swapping disc images trying to get things to work)

Windows 7 Pro x64

Windows 8.1 x64



eGPUs Under Testing:

eGPU1: Galaxy GTX 460 768mb

eGPU2: EVGA GTX 970 ACX 2.0



eGPU Hardware:

Adapter: PE4H v2.4b with 3PM3Ns and One EC Adapter for up to 8Gbps bandwidth (x4.1 Link)

PSU: Corsair CX430

HDMI Cables: Cable Matters 3 Feet mHDMI to HDMI Cable + Cable Matters mHDMI Male to HDMI Female

Enclosure: Laser cut particle board enclosure. Will fully assemble once eGPU Verified Working

PM3N Enclosure: Old laptop DVD drive case emptied and dremeled. 3D printed bezel to match 3 HDMI female ports coming from PM3N





So, like any good project, there are numerous issues to overcome. I will try my best to summarize my efforts thus far:



Windows 7 Pro x64:



Installed OS, Drivers from Dell Website, Latest Catalyst Driver Suite from AMD.



Due to the high TOLUD = 3.5 GB, I had to do a DSDT override to allow for egpu. I followed some of the guides available, and used syntax similar to Avlan's DSDT Override. I actually modified his code so that I would achive a 56.25GB endpoint like everyone else. The old DSDT Override for Dell Precision / Latitude laptops basically adds 8GB of address space after your RAM, so if you changed the RAM size, it would change your endpoint. Rather simple to fix using the DSDT editor.



Once I had the DSDT fixed, I was ready for an eGPU. I put the laptop in standby, and connected the GTX 970 via express card only. Upon resume, Windows found new hardware. I canceled any driver installs and installed the latest drivers from Nvidia's website. It then prompted me to reboot.



Upon rebooting, my issues began. Number one, I noticed that the Dell M6500 does not like the GTX 970 being connected upon bootup. If it sees the GTX 970 on bootup, it kicks the dGPU out of it's pci allocation in some weird quasi disabled state (still on the pci bus though), and puts the GTX 970 in its place (or so I think, haven't checked with 32bit mem map. The end result is that I boot with no Dell BIOS splash screen and Windows 7 Loads using the Vista style loading screen (no nice colorful Windows logo). Once I boot into Windows, I am greeted with a 16bit 640x480 screen courtesy of the code 12 error against my dGPU. This being Windows 7, I am unable to disable my dGPU and have the eGPU active at the same time (need Windows 8 for that, will try soon).



I can avoid this issue by simply doing the standby resume method. The GTX 970 comes alive and works great! I was able to collect a full suite of benchmarks using the GTX 970 and an x1.1 link on express card in this fashion. I can also achieve the same result by halting Windows startup with F8 and connecting the eGPU then. What does not work, however, is any form of compaction in Setup 1.30 with the GTX 970 attached. Doesn't matter if I boot up with the GTX 970 attached with degraded dgpu or hotplug it after booting into setup 1.30. Without the eGPU, I am able to load either a disc image or usb image of setup 1.30, and move my dGPU wherever I please (32bit or 56.25GB endpoint 36bit). If it's not in the 32bit space, I get the Vista style loading screen, but everything works properly in Windows. So I know I can compact and chain load with no egpu attached.



The problem is that when I try to compact with the eGPU attached, I get weird issues. If I am using a USB disk, the disc image freezes after any compaction unless no solution is found. Sometimes, I get an error message that says 'could not find fdconfig.sys' (using settings that would be compatible if it were just the dGPU). If I am using a disk image installation, I simply sometimes get a corrupted disc image (I assume SATA support is more native than USB). I think I may know what could be causing this though. This dell laptop has three internal HDD slots (including the mSATA one), as well as an eSATA port on the laptop and an eSATA port on the dock for a total of 5 SATA ports. I have read reports online that other people with these laptops have complained of the BIOS essentially shuffling around these disc indexes as it pleases which would wreak havoc on file writes for the OS or chainloading since that's what it relies on. For example, the primary hard disk could have an index of 0 at one point, then after compaction could have an index of 1. Compaction would then go to whatever is occupying the index of 0 and try to continue reading / writing files, resulting in the freeze after the pci write.



Other strange things I have noticed: sometimes, when hotplugging the egpu in setup 1.30 and waiting for detection, a hardware ID is detected, but it isn't the right one. It's not event the HD Audio hardware ID. The right one for this card is 10DE:13c2. I have seen 10DE:13C0 (I think this is a GTX 980?) and 10DE:0008 (a very, very, very old card's hardware id, I believe a GeForce MX420). I almost wonder if there are some quirks in the VGA BIOS.



I got this card working at an x4.1 link with moderate success on my Dell E6500 with C2D x9100 CPU and an Intel 4500MHD igpu. That worked fine with no conflicts, however pci express root port number three was rather flaky and would lead to spontaneous crashing. But I do know this video card does work with at least some Dell systems and can indeed run at an x4.1 link.



Also I have noticed that when I boot into setup 1.30 with the GTX 970 connected, the status bar at the top right doesn't show how much free space there is available. It also doesn't show a pci allocation status yes* or no*. So something is being overrided by the eGPU, don't know about the software to say what.



I have to solve this compaction issue of I want to do an x4.1 link on Windows 7 x64 as hot plugging the PM3Ns while in Windows does not seem to make it want to put the GTX 970 in 36bit space no matter what I do. I have tried uninstalling all GPU drivers, deleting the PCI root port entries in device manager. So I am stuck here with Windows 7 and the GTX 970 so far. Any ideas?



Here are some benchmarks I did for the GTX 970 at x1.1 on an Express Card Link with the M6500











































































































































































































































TEST TYPE

x1.1 PCIe Link Result

PCIe Speed Test Computer to Card Bandwidth, MB/s181
PCIe Speed Test Card to Computer Bandwidth, MB/s199
PCIe Speed Test Bidirectional Bandwidth, MB/s331
3D Mark 06 3D Marks6511
3D Mark 06 SM 2.0 Score2508
3D Mark 06 SM.0 Score2309
3D Mark 06 CPU Score4837
RE5 DX9 1280x800 Variable FPS92.5
RE5 DX9 1280x800 Fixed FPS42.5
3D Mark Vantage Score23880
3D Mark Vantage Graphics28093
3D Mark Vantage CPU16470
RE5 1280x800 DX10 Variable FPS122.2
RE5 1280x800 DX10 Fixed FPS55.4
3d Mark 11 Score8489
3D Mark 11 Graphics9781
3D Mark 11 Physics6212
Uniengine Heaven 4.0 Extreme Preset 720p Score1339
Uniengine Heaven 4.0 Extreme Preset 720p Avg FPS53.2
Uniengine Heaven 4.0 Extreme Preset 720p Max FPS128.8
Uniengine Heaven 4.0 Extreme Preset 720p Min FPS11.5
Guild Wars FPS (Eye of North Outside)168
COD MW2 (Opening, looking towards trainees)13
DMC4 DX9 Scene 1 FPS109.62
DMC4 DX9 Scene 2 FPS80.887
DMC4 DX9 Scene 3 FPS154.01
DMC4 DX9 Scene 4 FPS59.1
Crysis 2 Adrenaline Benchmark Times Square DX 11 FPS58.2




- - - Updated - - -





In this next post I wanted to document my experiences with my trusty old GTX 460. It has been running perfectly now for over three years in various eGPU setups and implementations (worked with all four of my laptops). Maybe this GTX 460 incorporates some kind of pci reset delay switch that makes it advantageous for eGPU detection / avoiding BIOS interference...



Same system as above, still on Windows 7 here. Plugging the GTX 460 in using the same standby / remove method worked with the M6500. Drivers installed properly and Windows moved eGPU to 36bit space. The nice thing about the GTX 460 is that I can boot with the eGPU attached and not affect the dGPU. I'm not sure why this is.



Booting into setup 1.30 with the GTX 460 attached yeilds proper detection as expected. However, compaction works properly now. Essentially what I did was compaction on dGPU, eGPU with endpoint 56.25GB, forcing the dGPU to 32 bit. I also had to use the close unused bridges flag or I would hang on the Windows 7 loading screen. I have had to set this flag for all of my Dell laptops, but I still don't quite understand why I need it / what it does. I should also mention that I am was using a flash drive for this bit of testing. Since the flash drive worked without issues, I didn't try a disk image / secondary HDD install.



Then I was able to boot the GTX 460 on mpcie port 1. If I do so without using setup 1.30, I get code 12 errors against some of my other devices in device manager. If I use setup 1.30, no such errors are present, so I will be sticking with that. Everything works properly, with the exception of the HD audio device, which has code 10 against it. I couldn't manually update the drivers for that specific device, so I will be trying a driver reinstall. I get an external output to the screen and was able to run a pci express link stress test and verify that I was getting full speed.



I tried mpcie ports 2 and 3. They seem like they work at first, with the GTX 460 listed in device manager with no errors against it. However, if I actually try to use the card, the screen flashes and generally goes haywire. Lot's of 'Nvidia Driver has stopped Responding' errors followed by BSOD. I'm not sure why this would happen as I'm using the same cables I was using for mpcie port 1 which worked flawlessly. I should note that mpcie port 1 is a full height port while mpcie ports 2 and 3 are half height, so maybe they are power starved?



To test the power starvation issue, I tried an x2 link. In the x2 link, all of the 3.3v power should come from mpcie port 1, with only 4 tx/rx pins being used for low voltage pci express data signals from port 2. However, that configuration was extremely unstable, leading to BSODs as before. I purchased this M6500 refurbished, and I think it's mainboard is bad. I took it apart, and there has to be some sort of short, as my keyboard backlight doesn't work, ethernet is hit or miss, and there is a popping noise that sometimes comes from the speakers just before windows loads. I really want all those auxiliary devices to work as I still use it as a laptop for engineering work, so I purchased a new mainboard for pretty cheap on ebay. Should arrive early next week for me to test.



Hopefully I can get this thing working with the new mainboard (unless people can think of other reasons why ports 2 and 3 wouldn't work). The GTX 460 is detected properly and has no errors against it in device manager on ports 2 and 3, it just BSODs when I try to use it. I think the error is actually in the pci express signaling with possible garbled signal / noise (maybe from other faulty components such as the ethernet). It really makes me want to search the computer engineering department at our university for folks who might have a PCIexpress protocol scanner. Would be useful in figuring out what exactly is failing...



I'm currently preparing a Windows 8.1 image so that I can try using the GTX 970 with the dGPU disabled. It's pretty easy to swap OSs with Macrium Reflect, so I'll be doing that until I have some permanent, tested working solution (staying far far away from my actual critical work OS install until then).



Oh yeah, benchmarks for the GTX 460 on the Dell M6500











































































































































































































































TEST TYPEx1.1 PCIe Link Result
PCIe Speed Test Computer to Card Bandwidth, MB/s164
PCIe Speed Test Card to Computer Bandwidth, MB/s198
PCIe Speed Test Bidirectional Bandwidth, MB/s180
3D Mark 06 3D Marks5321
3D Mark 06 SM 2.0 Score2078
3D Mark 06 SM.0 Score1976
3D Mark 06 CPU Score2971
RE5 DX9 1280x800 Variable FPS76.7
RE5 DX9 1280x800 Fixed FPS38.8
3D Mark Vantage Score7531
3D Mark Vantage Graphics7003
3D Mark Vantage CPU9729
RE5 1280x800 DX10 Variable FPS69.4
RE5 1280x800 DX10 Fixed FPS40.4
3d Mark 11 Score2437
3D Mark 11 Graphics2187
3D Mark 11 Physics6201
Uniengine Heaven 4.0 Extreme Preset 720p Score277
Uniengine Heaven 4.0 Extreme Preset 720p Avg FPS11
Uniengine Heaven 4.0 Extreme Preset 720p Max FPS7.5
Uniengine Heaven 4.0 Extreme Preset 720p Min FPS32.8
Guild Wars FPS (Eye of North Outside)148
COD MW2 (Opening, looking towards trainees)10
DMC4 DX9 Scene 1 FPS103.07
DMC4 DX9 Scene 2 FPS76.52
DMC4 DX9 Scene 3 FPS141.37
DMC4 DX9 Scene 4 FPS50.86
Crysis 2 Adrenaline Benchmark Times Square DX 11 FPS17.1




- - - Updated - - -





Still trying to compact with my GTX 970 attached, but I believe I am gaining some insight into the problem. I really need help here though, and I haven't found solutions by searching.



First, even when compaction freezes and doesn't bring me back to the status window, setup 1.30 saves pci.bat. I can boot into setup 1.30, this time selecting the dos prompt, and call pci.bat. What's interesting is that it...actually runs without issue. The issue seems to be that the C: drive (usb stick) has fallen off of it's mount. I can still access E: (my windows drive), but there seems to be no C: access.



I thought no problem, let me chainload using mbr since maybe the BIOS renumbered the HDDs. So I type 'call chainload mbr noremap'. That didn't work, so I then tried 'call chainload bootmgr noremap'. Also didn't work. Tried 'call chainload bootmgr'. Also didn't work.



This problem seems entirely specific to having the 970 attached. If I leave the 970 attached and powered on before boot, I don't see the dell post screen, but setup 1.30 works fine. Can't do a compact without freezing (once again, due to USB drive being knocked off). I have also tried booting the system without the egpu attached into setup 1.30. Then I connect the egpu and make sure it's detected. Still the same problem with freezing after compaction. I tried a disk image install as well, and all it seems to do is corrupt the setup 1.30 install environment (I assume it can't do so on the USB drive since it's unaddressable / dismounted).



I'm really not sure why this is happening. Booting up with the Galaxy GTX 460 causes no problems whatsoever. The machine posts with the Dell logo properly, and then continues to setup 1.30. There, I can do a compaction on 'dGPU eGPU', putting the egpu into 36bit space and forcing the dGPU to 32bit. Booting into Windows 7 works. All of this from the same USB stick.



I did some initial digging, and found that the video card status display using nvflash works for the GTX 460, but not for the GTX 970. It simply says 'no Nvidia gpus detected'. This error message is in spite of the fact that the egpu is in fact detected and sitting on port 4 with the correct hardware id. I followed the isntructions for creating a loading a pcidump bin file to put the device on the pcibus using r-w everything, but it still doesn't show up in nvflash. I assume that this is because the version of nvflash included doesn't know about the GTX 970 series since it's so new.



To that end, I have run the compact fail diagnostic. I am attaching the diag.zip file to this post if anyone cares to take a look at it. If you have a Dell Core 2 Duo or First Gen i7 business laptop, how did you overcome these issues if you had them?



- - - Updated - - -





Ever on the quest to solve my PCI compaction freezing and disk access issues, I believe I am hitting on the source of the problem. The Dell M6500 does not include native USB 3.0, so it instead attaches a USB 3.0 controller to the southbridge on PCI express root port number 7.



I tried looking at the 32bit memory map in three different scenarios:

No eGPU Plugged in at Boot or Hotplugged Later

No eGPU Plugged in at Boot, but Hotplugged after booting into setup 1.30

eGPU Plugged in at Boot, Taking Over as Primary Video Device (Get code 12 against dgpu if I boot into windows this way).



I have included screenshots from my setup 1.30 32bit memory map dumps for all of these scenarios at the following dropbox link:

Pictures Here



What's interesting is that the USB 3.0 controller from NEC sits at the end of the 32bit space, which is where I belive setup 1.30 likes to put GPUs. I have noticed that the primary GPU instead sits at the beginning of the pci configuration space on this laptop.



I have tried disabling USB 3.0 in the BIOS, but the controller still shows up in setup 1.30. If I disable root port number 7, the 'serial bus' description of the USB 3.0 controller transmutes into a 'mass storage controller' or basic USB. I can then set a 56.25GB endpoint, and try compaction on all PCI devices with the execption of SATA, USB, PATA, etc.



What's interesting is that when I do so, despite not forcing any GPU to 32bit space, I get an error saying that no solution could be found. How exactly could no solution be found if I have all of that 36bit space available (I technically have 48.5GB to 56.25GB free in my DSDT override). Maybe setup 1.30 doesn't like to put both GPUs in the 36bit space?



If I disconnect the egpu after booting, I am able to reallocate the dGPU back to the 32 bit space or 36bit space successfully by performing compact on scope dGPU. I have to select 'close unused bridges', otherwise I get a BSOD. I can then load to windows fine. If I have allocated the dGPU to 36bit space, I get the vista style loading screen, but my dGPU functions perfectly in Windows, with no conflicts. Allocating the dGPU to 32 bit space with the eGPU disconnected after booting into setup 1.30 gives the same working result, but this time with the fancy windows 7 loading screen.



I also took the time to document the EVGA GTX970's PCI space requirements. After some math, it appears to require 256MB + 32MB. Perhaps this is the distinction that is causing problems vs. the GTX 460, which I believe requires a total of 256MB like most other GPUs. Can anyone confirm this is the case for all GTX 970s?



In addition, sometimes my GTX 970 is detected with strange PCI Hardware IDs. The normal hardware ID is 0x13C2. So far, I have seen 0x0008, 0x0408, 0x13C0, 0xC042, and 0xE554. Sending a hot reset to the pci express port always fixes the problem.



I have a feeling this problem is solvable via software, as hotpluggiing via standby resume method works in windows 7 for express card, allocating the eGPU to the 36bit space. I can't do the same method for the PM3Ns though, I get code 12 on any of ports 1 - 4.



I looked at the IRQs of all of the pci express ports, and it appears that ports 1 and 5, 2 and 6, 3 and 7, as well as 4 and 8 have IRQs of 16, 17, 18, and 19 respectively. However, disabling port 7 for example while hot plugging to port 3 still gives me error 12 in Windows 7.



I will note that occasionally, after pci compaction in setup 1.30 (that includes saving PCI.bat), I still get the system freeze, but my system spontaneously shuts down. I'm not sure why it's doing that. I have a new motherboard on the way to fix my bad ethernet card, so I will try with that later in the week.



I hope this information helps anyone who can provide some insight into the problem at hand. If more information is needed, let me know and I will gladly provide it.
  • Thumbs Up 1
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.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.