@@ -202,7 +202,7 @@ ULONG HwFoundAdapter(
202202 }
203203 }
204204
205- #if (_WIN32_WINNT >= 0x500 )
205+ #if (_WIN32_WINNT >= 0x500 && !defined( ALPHA ) )
206206 accessRange -> RangeStart = ScsiPortConvertUlongToPhysicalAddress (ScsiPortConvertPhysicalAddressToULongPtr (bar0 ));
207207#else
208208 accessRange -> RangeStart = ScsiPortConvertUlongToPhysicalAddress (bar0 .LowPart );
@@ -737,8 +737,8 @@ VOID FallbackTimer(IN PVOID DeviceExtension)
737737 PHW_DEVICE_EXTENSION DevExt = (PHW_DEVICE_EXTENSION )DeviceExtension ;
738738
739739 DevExt -> FallbackTimerNeeded ++ ;
740- if (!DevExt -> FallbackTimerNeeded )
741- DevExt -> FallbackTimerNeeded = 1 ;
740+ if (!DevExt -> FallbackTimerNeeded ) // wraparound
741+ DevExt -> FallbackTimerNeeded = 2 ; // because 1 means fallbacktime didnt fire
742742
743743 NvmeProcessAdminCompletion (DevExt );
744744 NvmeProcessIoCompletion (DevExt );
@@ -752,11 +752,12 @@ BOOLEAN HwInterrupt(IN PVOID DeviceExtension)
752752 PHW_DEVICE_EXTENSION DevExt = (PHW_DEVICE_EXTENSION )DeviceExtension ;
753753 BOOLEAN interruptHandled = FALSE;
754754
755+ DevExt -> InterruptCount ++ ;
755756 if (DevExt -> FallbackTimerNeeded ) {
756757 // cancel the fallback timer
757758 ScsiPortNotification (RequestTimerCall , DeviceExtension , FallbackTimer , 0 );
758- // interrupts worked a million times, we probably dont need a fallback
759- if (DevExt -> FallbackTimerNeeded >= 1000000 ) {
759+ // interrupts worked a million times, and callback didnt fire we probably dont need a fallback
760+ if (DevExt -> InterruptCount >= 1000000 && DevExt -> FallbackTimerNeeded == 1 ) {
760761 DevExt -> FallbackTimerNeeded = 0 ;
761762 }
762763 }
0 commit comments