none
data corruption by plx9656 with winDriver on 64bit Windows 7 RRS feed

  • Question

  • The problem is data corruption of downloading data from an external data source to a PC running 64bit Windows 7 through PCI bus.

    The PC mainly consists of Intel Xeon E5620, 32bit system PCI bus, PLX9656 I/O accelerator which is configured to 32bit mode to be coherent with 32bit system bus, 4GB physical memory and 2 ethernet ports.

    The software on PC are: 64bit Windows 7, a 32bit VC++ application using 64bit WinDriver (product of Jungo).

    The external data source is a SingleBoardComputer running Linux, a disk drive, IO board and ethernet ports. The IO board is on PCI bus of PC.

    The data transfer happens when the application on PC requests data from Linux through ethernet (connection for command) and Linux pumps data from disk drive to destination through PCI (connection for data).

    We don't have problem on XP or 32bit Windows 7 with 32bit WinDriver on PC.

    We saw data corruption on 64bit Windows 7 with 64bit WinDriver.

    Our application used to allocate 7M memory for DMA transfer on XP with 32bit winDriver. But we have to reduce it to 1M on 64bit Win 7 because 64bit WinDriver complained that 7M exceeded maximum map registers while doing a DMA mapping from virtual to physical.

    But with 1M, we saw data corruption. Data corruption seems disappeared when we reduce the memory usage from 4GB to smaller amount with command "bcdedit /set removememory <some mega bytes of memory>". But the amount to reduce is not consistent on different systems. Some system requires 500M to be removed and others require more or less. This makes us un-confident on using this work-around.

    WinDriver tech support claimed this is not their problem because what they do is buffer allocation and mapping. They said this can be a problem of DMA controller.

    We deeply appreciate if someone who knows the reason of the problem would give us a pointer of the root cause.

    Saturday, May 31, 2014 5:39 AM

Answers

  • Get rid of Jungo's WinDriver.  In general it is buggy, and DMA is one of its buggiest features.  Convert the driver to KMDF, it is well worth the pain of the conversion.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Saturday, May 31, 2014 11:09 AM
  • Agreed. I've written many KMDF drivers for customers wanting to get away from Jungo

     -Brian


    Azius Developer Training www.azius.com Windows device driver, internals, security, & forensics training and consulting. Blog at www.azius.com/blog

    Saturday, May 31, 2014 7:48 PM
    Moderator

All replies

  • Try enabling DMA verification in Driver Verifier. http://msdn.microsoft.com/en-us/library/windows/hardware/ff544915(v=vs.85).aspx

     -Brian


    Azius Developer Training www.azius.com Windows device driver, internals, security, & forensics training and consulting. Blog at www.azius.com/blog

    Saturday, May 31, 2014 7:00 AM
    Moderator
  • Get rid of Jungo's WinDriver.  In general it is buggy, and DMA is one of its buggiest features.  Convert the driver to KMDF, it is well worth the pain of the conversion.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Saturday, May 31, 2014 11:09 AM
  • Agreed. I've written many KMDF drivers for customers wanting to get away from Jungo

     -Brian


    Azius Developer Training www.azius.com Windows device driver, internals, security, & forensics training and consulting. Blog at www.azius.com/blog

    Saturday, May 31, 2014 7:48 PM
    Moderator