Jump to content

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


Recommended Posts

Posted
5 minutes ago, Dietmar said:

I just get an AIMB-786 board.

Now I set it up

Great - now maybe you can solve the problem faster yourself :-)


Posted

@reboot12

Run a Windbg session with this KD block for to understand the loop with W20

Dietmar

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

sxe av
sxe gp
sxe ud

bu nt!KeBugCheckEx ".echo ====BUGCHECK_HIT====; .printf \"code=%08x p1=%08x p2=%08x p3=%08x p4=%08x\n\", poi(@esp+4), poi(@esp+8), poi(@esp+0c), poi(@esp+10), poi(@esp+14); r; r cr2; kv; gc"

.echo ====W20_PCI_DEV15BB====
!pci 0 0 1f 6

bu /1 i219!DriverEntry ".echo ====W20_DRIVERENTRY====; kv; gc"

bu /1 i219!I219MiniportInitialize "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W20_INIT_IN====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x00C0 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; gc"

bu /1 i219!I219WarmResetInitLikeLinux "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W20_WARMRESET====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x00C0 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W20_CTRLKICK====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219PhyEnsureAutonegAll ".echo ====W20_PHY_ENSURE_AUTONEG====; gc"
bu /1 i219!I219PrintPhyStdRegs ".echo ====W20_PHY_STDREGS====; gc"

bu i219!I219WaitAutonegLink "r $t2=poi(@esp); .echo ====W20_AUTONEG_WAIT_IN====; .printf \"a=%p tout=%u arg=%u\n\", poi(@esp+4), poi(@esp+8), poi(@esp+0c); bp /1 @$t2 \".echo ====W20_AUTONEG_WAIT_OUT====; r eax; gc\"; gc"
bu i219!I219SpeedMbpsFromStatus "r $t2=poi(@esp); .echo ====W20_SPEED_IN====; bp /1 @$t2 \".echo ====W20_SPEED_OUT====; r eax; gc\"; gc"
bu i219!I219LinkFromStatus "r $t2=poi(@esp); .echo ====W20_LINKFROM_IN====; bp /1 @$t2 \".echo ====W20_LINKFROM_OUT====; r eax; gc\"; gc"

bu /1 i219!I219TxRxAlloc "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W20_TXRXALLOC====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x2800 L3; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; gc"

bu /1 i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W20_TXRXSTART====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; 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; gc"

bu /1 i219!I219MiniportISR ".echo ====W20_ISR====; gc"
bu /1 i219!I219MiniportHandleInterrupt "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W20_DPC====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x00C0 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; gc"

bu i219!I219PollTimerFunc "r $t0=poi(@esp+8); r $t1=poi(@$t0+0xDC); .echo ====W20_POLL====; dd @$t1+0x0008 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; gc"

g

 

Posted (edited)

I buy on allegro.pl (Polish) but the offer is no longer valid.

This is Advantech recommend cooling - https://www.upload.ee/files/19132380/CPU-Coolers_DS_080223_20230807134718.pdf.html

Search cooling for LGA 115x for screws, hole spacing 75x75

Maybe this one: https://www.xilence.net/de/cpu-coolers/36

or this: https://www.rosch-computer.de/produkt/thermale-loesungen-kuehlung/cpu-kuehler/lga-1200-115x/cooler-master/DP6-00003-N1-GP

Edited by reboot12
Posted

@reboot12

Here is driver W21 and KD

Dietmar

PS: I still do not find in germany any working cooler for the AIMB-786 .

https://www.upload.ee/files/19132539/i219W21.zip.html
 

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

sxe av
sxe gp
sxe ud

bu nt!KeBugCheckEx ".echo ====BUGCHECK_HIT====; .printf \"code=%08x p1=%08x p2=%08x p3=%08x p4=%08x\n\", poi(@esp+4), poi(@esp+8), poi(@esp+0c), poi(@esp+10), poi(@esp+14); r; r cr2; kv; gc"

.echo ====W21_PCI_DEV15BB====
!pci 0 0 1f 6

.echo ====W21_GLOBALS_BEFORE====
dd i219!g_LinkPollInit L1
dd i219!g_LinkPollStart L1
dd i219!g_RxFrames L1
dd i219!g_TxSubmits L1
dd i219!g_TxCompletes L1

bu /1 i219!DriverEntry ".echo ====W21_DRIVERENTRY====; kv; gc"

bu /1 i219!I219MiniportInitialize "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_INIT_IN====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x00C0 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219WarmResetInitLikeLinux "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_WARMRESET====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x00C0 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_CTRLKICK====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219PhyEnsureAutonegAll ".echo ====W21_PHY_ENSURE_AUTONEG====; gc"
bu /1 i219!I219PrintPhyStdRegs ".echo ====W21_PHY_STDREGS====; gc"

bu i219!I219WaitAutonegLink "r $t2=poi(@esp); .echo ====W21_AUTONEG_WAIT_IN====; .printf \"a=%p tout=%u arg=%u\n\", poi(@esp+4), poi(@esp+8), poi(@esp+0c); bp /1 @$t2 \".echo ====W21_AUTONEG_WAIT_OUT====; r eax; gc\"; gc"
bu i219!I219SpeedMbpsFromStatus "r $t2=poi(@esp); .echo ====W21_SPEED_IN====; bp /1 @$t2 \".echo ====W21_SPEED_OUT====; r eax; gc\"; gc"
bu i219!I219LinkFromStatus "r $t2=poi(@esp); .echo ====W21_LINKFROM_IN====; bp /1 @$t2 \".echo ====W21_LINKFROM_OUT====; r eax; gc\"; gc"

bu /1 i219!I219TxRxAlloc "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_TXRXALLOC====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x2800 L3; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x2828 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3828 L1; gc"

bu /1 i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_TXRXSTART====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; 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; gc"

bu /1 i219!I219MiniportISR ".echo ====W21_ISR_FIRST====; gc"
bu /1 i219!I219MiniportHandleInterrupt "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_DPC_FIRST====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x00C0 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_RxFrames L1; dd i219!g_TxSubmits L1; dd i219!g_TxCompletes L1; gc"

bu /1 i219!I219MiniportSendPackets "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_SEND_FIRST====; .printf \"a=%p regs=%p cnt=%u\n\", @$t0, @$t1, poi(@esp+0x0c); dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_TxSubmits L1; gc"
bu /1 i219!I219TxSendOne ".echo ====W21_TXONE_FIRST====; gc"
bu /1 i219!I219TxReclaim "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_TXRECLAIM_FIRST====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_TxCompletes L1; gc"
bu /1 i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W21_RXPOLL_FIRST====; .printf \"a=%p regs=%p\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x0100 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x2828 L1; dd i219!g_RxFrames L1; gc"

bu i219!I219PollTimerFunc "r $t0=poi(@esp+8); r $t1=poi(@$t0+0xDC); .echo ====W21_POLL====; dd @$t1+0x0008 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_RxFrames L1; dd i219!g_TxSubmits L1; dd i219!g_TxCompletes L1; gc"

bu i219!I219QueueRecover ".echo ====W21_RECOVER_QUEUED_BP====; r irql; kv; gc"
bu i219!I219HardRecover ".echo ====W21_HARD_RECOVER_ENTER====; r irql; kv; gc"
bu i219!I219TxAbortAll ".echo ====W21_TX_ABORT_ALL_ENTER====; r irql; kv; gc"

.echo ====W21_READY_GO====
g

 

Posted

@reboot12

Here is version W22 and KD

Dietmar

https://www.upload.ee/files/19132754/i219W22.zip.html

 

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

bu nt!KeBugCheckEx ".echo ====BUGCHECK_HIT====; .printf \"code=%08x p1=%08x p2=%08x p3=%08x p4=%08x\\n\", poi(@esp+4), poi(@esp+8), poi(@esp+0c), poi(@esp+10), poi(@esp+14); r; r cr2; kv; gc"

.echo ====W22_PCI_DEV15BB====
!pci 0 0 1f 6

.echo ====W22_GLOBALS_BEFORE====
dd i219!g_LinkPollInit L1
dd i219!g_LinkPollStart L1
dd i219!g_RxFrames L1
dd i219!g_TxSubmits L1
dd i219!g_TxCompletes L1

bu /1 i219!DriverEntry ".echo ====W22_DRIVERENTRY====; kv; gc"

bu /1 i219!I219MiniportInitialize "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_INIT_IN====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x00C0 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219WarmResetInitLikeLinux "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_WARMRESET====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x00C0 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_CTRLKICK====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; dd @$t1+0x5B54 L1; gc"

bu /1 i219!I219PhyEnsureAutonegAll ".echo ====W22_PHY_ENSURE_AUTONEG====; gc"
bu /1 i219!I219PrintPhyStdRegs ".echo ====W22_PHY_STDREGS====; gc"

bu i219!I219WaitAutonegLink "r $t2=poi(@esp); .echo ====W22_AUTONEG_WAIT_IN====; .printf \"a=%p tout=%u arg=%u\\n\", poi(@esp+4), poi(@esp+8), poi(@esp+0c); bp /1 @$t2 \".echo ====W22_AUTONEG_WAIT_OUT====; r eax; gc\"; gc"
bu i219!I219SpeedMbpsFromStatus "r $t2=poi(@esp); .echo ====W22_SPEED_IN====; bp /1 @$t2 \".echo ====W22_SPEED_OUT====; r eax; gc\"; gc"
bu i219!I219LinkFromStatus "r $t2=poi(@esp); .echo ====W22_LINKFROM_IN====; bp /1 @$t2 \".echo ====W22_LINKFROM_OUT====; r eax; gc\"; gc"

bu /1 i219!I219TxRxAlloc "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_TXRXALLOC====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; dd @$t1+0x2800 L3; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x2828 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3828 L1; gc"

bu /1 i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_TXRXSTART====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; 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; gc"

bu /1 i219!I219MiniportISR ".echo ====W22_ISR_FIRST====; gc"
bu /1 i219!I219MiniportHandleInterrupt "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_DPC_FIRST====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x00C0 L1; dd @$t1+0x00D0 L1; dd @$t1+0x00D8 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_RxFrames L1; dd i219!g_TxSubmits L1; dd i219!g_TxCompletes L1; gc"

bu /1 i219!I219MiniportSendPackets "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_SEND_FIRST====; .printf \"a=%p regs=%p cnt=%u\\n\", @$t0, @$t1, poi(@esp+0x0c); dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_TxSubmits L1; gc"
bu /1 i219!I219TxSendOne ".echo ====W22_TXONE_FIRST====; gc"
bu /1 i219!I219TxReclaim "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_TXRECLAIM_FIRST====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_TxCompletes L1; gc"
bu /1 i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_RXPOLL_FIRST====; .printf \"a=%p regs=%p\\n\", @$t0, @$t1; dd @$t1+0x0008 L1; dd @$t1+0x0100 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x2828 L1; dd i219!g_RxFrames L1; gc"

bu i219!I219PollTimerFunc "r $t0=poi(@esp+8); r $t1=poi(@$t0+0xDC); .echo ====W22_POLL====; dd @$t1+0x0008 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_RxFrames L1; dd i219!g_TxSubmits L1; dd i219!g_TxCompletes L1; gc"

bu /1 i219!I219MiniportCheckForHang "r $t0=poi(@esp+4); r $t1=poi(@$t0+0xDC); .echo ====W22_HANGCHECK_ONCE====; dd @$t1+0x0008 L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd i219!g_TxSubmits L1; dd i219!g_TxCompletes L1; dd i219!g_RxFrames L1; gc"

bu i219!I219QueueRecover ".echo ====W22_RECOVER_QUEUED_BP====; r irql; kv; gc"
bu i219!I219RecoverWorker ".echo ====W22_RECOVER_WORKER_ENTER====; r irql; kv; gc"
bu i219!I219HardRecover ".echo ====W22_HARD_RECOVER_ENTER====; r irql; kv; gc"
bu i219!I219TxAbortAll ".echo ====W22_TX_ABORT_ALL_ENTER====; r irql; kv; gc"

.echo ====W22_READY_GO====
g

 

Posted

@reboot12

I make a new driver version i219P0. This driver does not use any IRQ/INT, because it may be, that they are blocked from the Bios of the AIMB-786.

https://www.upload.ee/files/19134054/i219P0.zip.html

And here is the KD block for it

good luck

Dietmar

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

r $t0=0
r $t1=50

bu /1 i219!DriverEntry ".echo ====DRV_ENTRY====; gc"
bu /1 i219!I219MiniportInitialize "r $t4=poi(esp+4); r $t5=poi($t4+0xDC); .echo ====INIT====; .printf \"a=%p regs=%p\n\", $t4,$t5; gc"
bu i219!I219MiniportISR ".echo ====UNEXPECTED_ISR_HIT (POLL-ONLY SHOULD NOT USE ISR)====; r; gc"
bu /1 i219!I219TxRxStart "r $t4=poi(esp+4); r $t5=poi($t4+0xDC); .echo ====TXRXSTART_SNAP====; .printf \"regs=%p\n\",$t5; dd $t5+0x0008 L1; dd $t5+0x00C0 L1; dd $t5+0x00D0 L1; dd $t5+0x00D8 L1; dd $t5+0x2810 L1; dd $t5+0x2818 L1; dd $t5+0x3810 L1; dd $t5+0x3818 L1; .printf \"TxS=%u TxC=%u Rx=%u\n\", poi(i219!g_TxSubmits), poi(i219!g_TxCompletes), poi(i219!g_RxFrames); gc"
bu i219!I219MiniportCheckForHang "r $t0=$t0+1; .if($t0==$t1){r $t0=0; r $t4=poi(esp+4); r $t5=poi($t4+0xDC); .echo ====POLL_SNAP====; dd $t5+0x0008 L1; dd $t5+0x00C0 L1; dd $t5+0x00D0 L1; dd $t5+0x00D8 L1; dd $t5+0x2810 L1; dd $t5+0x2818 L1; dd $t5+0x3810 L1; dd $t5+0x3818 L1; .printf \"TxS=%u TxC=%u Rx=%u\n\", poi(i219!g_TxSubmits), poi(i219!g_TxCompletes), poi(i219!g_RxFrames)}; gc"
bu i219!I219MiniportSendPackets "r $t4=poi(esp+4); r $t5=poi($t4+0xDC); .echo ====SEND====; dd $t5+0x3810 L1; dd $t5+0x3818 L1; .printf \"TxS=%u TxC=%u\n\", poi(i219!g_TxSubmits), poi(i219!g_TxCompletes); gc"
bu i219!I219TxReclaim "r $t4=poi(esp+4); r $t5=poi($t4+0xDC); .echo ====TXRECLAIM====; dd $t5+0x3810 L1; dd $t5+0x3818 L1; .printf \"TxS=%u TxC=%u\n\", poi(i219!g_TxSubmits), poi(i219!g_TxCompletes); gc"
bu i219!I219RxPoll "r $t4=poi(esp+4); r $t5=poi($t4+0xDC); .echo ====RXPOLL====; dd $t5+0x2810 L1; dd $t5+0x2818 L1; .printf \"Rx=%u\n\", poi(i219!g_RxFrames); gc"

 

Posted
22 minutes ago, Damnation said:

Just use any LGA1151 cooler.

Not any because AIMB has cpu back plate for screw thread - cooling required, mounted with screws:
screw-thread.png

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...