Details
-
Bug
-
Resolution: Fixed
-
Major
-
None
-
None
-
Operating System: ReactOS
Platform: x86 Hardware
Description
Created an attachment (id=4321)
Reset the UHCI controller before enabling its interrupt
Running revision r43337
Getting this when rebooting from NetBSD (which seems to initialize the UHCI for itself). Does not happen on cold boots to ReactOS:
wood_uhci: Entering DriverEntry(), RegistryPath=
\Registry\Machine\System\CurrentControlSet\Services\usbdriver
uhci_alloc(): reg_path=FB3B19DC,
uhci_alloc(): PCIBus=0x5, bus=0x0, bus_addr=0x3a
uhci_alloc(): slot_num=0x47, &res_list=FFB5C354
uhci_alloc(): about to assign slot res
uhci_alloc(): address space=0x1
, reg_base=0x2000
uhci_alloc(): the int=0x3b
uhci_isr(): host system error, PCI problems?
uhci_isr(): host controller halted. very bad
(ntoskrnl/mm/mmfault.c:159) Page fault at high IRQL was 2, address 0
Entered debugger on last-chance exception (Exception Code: 0xc0000006) (Unknown/User defined exception)
kdb:> bt
Eip:
<00000000>
Frames:
<ntoskrnl.exe:bd8c2 (ntoskrnl/ke/i386/trap.s:2431 (KiDispatchInterrupt@0))>
<hal.dll:50a2 (hal/halx86/generic/irq.S:493 (@KfLowerIrql@4))>
<ntoskrnl.exe:32f0 (ntoskrnl/ke/i386/irqobj.c:307 (KeConnectInterrupt@4))>
<ntoskrnl.exe:5717b (ntoskrnl/io/iomgr/irq.c:100 (IoConnectInterrupt@44))>
<usbdriver.sys:1070a (drivers/usb/nt4compat/usbdriver/uhci.c:845 (uhci_alloc))>
<usbdriver.sys:108c1 (drivers/usb/nt4compat/usbdriver/uhci.c:659 (uhci_probe))>
<usbdriver.sys:10982 (drivers/usb/nt4compat/usbdriver/uhci.c:3880 (DriverEntry@8))>
<ntoskrnl.exe:4b27b (ntoskrnl/io/iomgr/driver.c:1390 (IopCreateDriver@24))>
<ntoskrnl.exe:4a57b (ntoskrnl/io/iomgr/driver.c:467 (@IopInitializeDriverModule@20))>
<ntoskrnl.exe:4b7c8 (ntoskrnl/io/iomgr/driver.c:1766 (IopLoadUnloadDriver@4))>
<ntoskrnl.exe:4b95e (ntoskrnl/io/iomgr/driver.c:1858 (NtLoadDriver@4))>
<ntoskrnl.exe:ba590 (ntoskrnl/ke/i386/trap.s:244 (KiFastCallEntry))>
<ntoskrnl.exe:bef35 (obj-i386/ntoskrnl/ex/zw.S:929 (ZwLoadDriver))>
<ntoskrnl.exe:4bf0b (ntoskrnl/io/iomgr/drvrlist.c:540 (@IopInitializeSystemDrivers@0))>
<ntoskrnl.exe:da798 (ntoskrnl/io/iomgr/iomgr.c:529 (IoInitSystem@4))>
<ntoskrnl.exe:36cab (ntoskrnl/ex/init.c:1698 (Phase1InitializationDiscard@4))>
<ntoskrnl.exe:37856 (ntoskrnl/ex/init.c:1908 (Phase1Initialization@4))>
<ntoskrnl.exe:afdc1 (ntoskrnl/ps/thread.c:158 (PspSystemThreadStartup@8))>
<ntoskrnl.exe:b9d8a (ntoskrnl/ke/i386/ctxswitch.S:306 (KiThreadStartup@156))>
kdb:>
I can not see a uhci_isr() frame where the page fault occurs, it obviously happens just after being hooked. Resetting the UHCI before enabling the interrupt prevented this from triggering (though I am not sure if that's a correct fix for the potential page fault).