Jump to content

Updated drivers for Windows XP SP3 and Windows 2003 SP2 (x32/x64) for modern hardware


Recommended Posts


Posted

@reboot12

https://www.upload.ee/files/19121353/i219v100.zip.html
 

Run this KD until desktop with "g"

Dietmar

 

!sym quiet
.reload /f i219.sys
sxd ud
bc *
bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(@esp+0x0c); gc"
bu i219!I219TxPrime ".if (poi(@esp+4)==0) { gc } .else { r $t0=poi(@esp+4); .if (@$t0 < 0x80000000) { gc } .else { r $t1=poi(@$t0+0xDC); .if ((@$t1==0) || (@$t1 < 0x80000000)) { gc } .else { .echo TXPRIME; dd @$t1+0x0008 L1; dd @$t1+0x0400 L1; dd @$t1+0x2808 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3820 L4; dd @$t1+0x3840 L1; gc } } }"
bu i219!I219TxKick ".if (poi(@esp+4)==0) { gc } .else { r $t0=poi(@esp+4); .if (@$t0 < 0x80000000) { gc } .else { r $t1=poi(@$t0+0xDC); .if ((@$t1==0) || (@$t1 < 0x80000000)) { gc } .else { .echo TXKICK; dd @$t1+0x0008 L1; dd @$t1+0x0400 L1; dd @$t1+0x2808 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3820 L4; dd @$t1+0x3840 L1; gc } } }"
bu i219!I219TxSendOne ".if (poi(@esp+4)==0) { gc } .else { r $t0=poi(@esp+4); .if (@$t0 < 0x80000000) { gc } .else { r $t1=poi(@$t0+0xDC); .if ((@$t1==0) || (@$t1 < 0x80000000)) { gc } .else { .echo TXONE; dd @$t1+0x0008 L1; dd @$t1+0x0400 L1; dd @$t1+0x2808 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3820 L4; dd @$t1+0x3840 L1; gc } } }"
bu i219!I219TxReclaim ".if (poi(@esp+4)==0) { gc } .else { r $t0=poi(@esp+4); .if (@$t0 < 0x80000000) { gc } .else { r $t1=poi(@$t0+0xDC); .if ((@$t1==0) || (@$t1 < 0x80000000)) { gc } .else { .echo TXRECLAIM; dd @$t1+0x0008 L1; dd @$t1+0x0400 L1; dd @$t1+0x2808 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3820 L4; dd @$t1+0x3840 L1; gc } } }"
bu i219!I219HandleInterrupt ".if (poi(@esp+4)==0) { gc } .else { r $t0=poi(@esp+4); .if (@$t0 < 0x80000000) { gc } .else { r $t1=poi(@$t0+0xDC); .if ((@$t1==0) || (@$t1 < 0x80000000)) { gc } .else { .echo INTX; dd @$t1+0x0008 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; gc } } }"
g

 

Posted

@reboot12

here is repaired KD block for the new driver version 100

Dietmar

!sym quiet
.reload /f i219.sys
sxd ud
bc *

bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(esp+0x0c); gc"

bu i219!I219TxPrime ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXPRIME; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"

bu i219!I219TxKick ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXKICK; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"

bu i219!I219TxSendOne ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXONE; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"

bu i219!I219TxReclaim ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXRECLAIM; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"

bu i219!I219TxWatchdog ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXWD; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"

g

 

Posted

@reboot12

Why the driver not starts is clear: RX works, TX not.

I had the exact same symptoms on my compi, but after one week of hard work I solved it

Dietmar

PS: So please use this driver and this KD for one time more. After this, I also need Pause, may be 2 hours

Dietmar

!sym quiet
.reload /f i219.sys
sxd ud
bc *
x i219!*TxW*
x i219!*Watch*
bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(esp+0x0c); gc"
bu i219!I219TxPrime ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXPRIME; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"
bu i219!I219TxKick ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXKICK; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"
bu i219!I219TxSendOne ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXONE; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"
bu i219!I219TxReclaim ".if (poi(esp+4)==0) { gc } .else { r $t0=poi(esp+4); .if ($t0==0) { gc } .else { .if ($t0<0x80000000) { gc } .else { r $t1=poi($t0+0xDC); .if ($t1==0) { gc } .else { .if ($t1<0x80000000) { gc } .else { .echo TXRECLAIM; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc } } } } }"
g

 

Posted

@Dietmar

i219v100 next - https://pastebin.com/mkKKvicF

It's a pity that you've been sitting for so long and the driver only works for you. Now if we can get it working for me, it will work for you and me. I wonder if the driver will work for other users with the i219 card ???

10 minutes ago, Dietmar said:

After this, I also need Pause, may be 2 hours

Yeaa, I also think that's enough for today :wacko:

Posted

@reboot12

It is all about this crazy ME. It stops a not autorisized driver.

But the most crazy thing is, that after this hard week for looking how to overcome ME,

this my build driver works on all my compis with different i219

Dietmar

Posted

@reboot12

Try this KD, compi needs to be restarted

Dietmar

!sym quiet
.reload /f i219.sys
sxd ud
bc *
bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(esp+0x0c); gc"
bu i219!I219TxPrime "r $t0=poi(esp+4); r $t1=poi($t0+0xDC); .echo TXPRIME; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L3; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc"
bu i219!I219TxSendOne "r $t0=poi(esp+4); r $t1=poi($t0+0xDC); .echo TXONE; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L3; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc"
bu i219!I219TxKick "r $t0=poi(esp+4); r $t1=poi($t0+0xDC); .echo TXKICK; dd $t1+0x0008 L1; dd $t1+0x0400 L1; dd $t1+0x2808 L3; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3820 L4; dd $t1+0x3840 L1; gc"
g

 

Posted
45 minutes ago, Dietmar said:

this my build driver works on all my compis with different i219

Strange that it doesn't work for me :huh:

Are there such problems with other network cards, e.g. i217, or only with i219?

I have another i211 network card on my same Industrial board and I have a working driver for XP. Maybe I need to preview its operation in WinDbg and that will help for i219 ???

P.S. Tomorrow I will check your next commands in KD.

Posted

@reboot12

It is all ONLY about this bit

vMMIO mapped status=00080640 ==> vMMIO mapped status=40080640

(PCIm/DMoff/Low-Power, means GIO master disable) ==> MAC i „GIO master enabled

 

I make a new driver for to force this before TX starts

Dietmar

Posted (edited)

@reboot12

I make a new driver, that waits with TX until this bit in MMIO status 0x40000000 is set. And the KD block for this, hit "g" until you reach desktop

Dietmar

https://www.upload.ee/files/19121949/i219fixGiomaster.zip.html

 

!sym quiet
.reload /f i219.sys
sxd ud
bc *
bu i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); r $t2=poi(@esp); .echo CTRLKICK_IN; .printf \"ADP=%p REGS=%p SLOT=%x\n\", $t0, $t1, poi($t0+0xF4); dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x5B50 L3; bp /1 @$t2 \".echo CTRLKICK_OUT; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x5B50 L3; gc\"; gc"
bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); r $t2=poi(@esp); .echo TXRXSTART_IN; .printf \"ADP=%p REGS=%p SLOT=%x\n\", $t0, $t1, poi($t0+0xF4); dd @$t1+0x0008 L1; dd @$t1+0x0100 L1; dd @$t1+0x02828 L1; dd @$t1+0x02810 L1; dd @$t1+0x02818 L1; dd @$t1+0x03828 L1; dd @$t1+0x03810 L1; dd @$t1+0x03818 L1; dd @$t1+0x00D0 L1; bp /1 @$t2 \".echo TXRXSTART_OUT; dd @$t1+0x0008 L1; dd @$t1+0x0100 L1; dd @$t1+0x02828 L1; dd @$t1+0x02810 L1; dd @$t1+0x02818 L1; dd @$t1+0x03828 L1; dd @$t1+0x03810 L1; dd @$t1+0x03818 L1; dd @$t1+0x00D0 L1; gc\"; gc"
bp /1 i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(@esp+0x0c); gc"
bp /1 i219!I219TxSendOne "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXONE; dd @$t1+0x03810 L1; dd @$t1+0x03818 L1; gc"
bp /1 i219!I219MiniportISR "r $t0=poi(@esp+0x0c); r $t1=poi($t0+0xDC); .echo ISR; dd @$t1+0x0008 L1; dd @$t1+0x00C0 L1; dd @$t1+0x00D0 L1; gc"
bp /1 i219!I219MiniportHandleInterrupt "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo HANDLEINT; dd @$t1+0x0008 L1; dd @$t1+0x00C0 L1; dd @$t1+0x02810 L1; dd @$t1+0x02818 L1; dd @$t1+0x03810 L1; dd @$t1+0x03818 L1; gc"
bp /1 i219!I219TxReclaim "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXRECLAIM; dd @$t1+0x03810 L1; dd @$t1+0x03818 L1; gc"
bp /1 i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo RXPOLL; dd @$t1+0x0008 L1; dd @$t1+0x02810 L1; dd @$t1+0x02818 L1; dd @$t1+0x02828 L1; gc"
g

and this for to check, which registers are the same from the beginning of my Asus WS pro with same I219-LM chip

 

!sym quiet
.reload /f i219.sys
sxd ud
bc *
bu i219!I219MiniportInitialize ".echo INIT; gc"
bu i219!I219PciForceBusMaster ".echo BME; r $t0=poi(@esp+4); r $t1=poi(@esp+8); .printf \"h=%p slot=%x\n\", $t0, $t1; gc"
bu i219!I219WaitForGioMaster "r $t0=poi(@esp+4); r $t1=poi(@esp+8); r $t2=poi(@esp+0xc); .echo WAITGIO; .printf \"a=%p tries=%u stall=%u\n\", $t0, $t1, $t2; r $t3=poi(@$t0+0xE0); dd @$t3+0x0008 L1; gc"
bu i219!I219EnsureGioMasterReady "r $t0=poi(@esp+4); .echo ENSUREGIO; .printf \"a=%p\n\", $t0; r $t1=poi(@$t0+0xE0); dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x5b50 L1; dd @$t1+0x5b54 L1; dd @$t1+0x5b58 L1; gc"
bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xE0); .echo TXRX; .printf \"a=%p regs=%p\n\", $t0, $t1; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0100 L1; dd @$t1+0x0400 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x5b50 L1; dd @$t1+0x5b54 L1; dd @$t1+0x5b58 L1; gc"
bu i219!I219TxReclaim "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xE0); .echo TXRECLAIM; .printf \"a=%p regs=%p\n\", $t0, $t1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; gc"
bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xE0); .echo RXPOLL; .printf \"a=%p regs=%p\n\", $t0, $t1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; gc"
g

 

Edited by Dietmar
Posted (edited)

@Dietmar

i219fixGiomaster & i219besttt drivers hangs the WinXP. After reboot (force) yellow exclamation mark and error Code 31 in Device Manager:
code31.png

What's going on here, it's starting to really annoy me :crazy::realmad:

I'm going to the garden to cut the branches of fruit trees (Obstbäume beschneiden) :)

Edited by reboot12

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...