[ros-dev] ARM Guy Broke BOOT on Real Hardware
Alex Ionescu
ionucu at videotron.ca
Mon Jul 28 05:32:29 CEST 2008
It looks like a guarded mutex is being acquired at DPC level. That's
pretty bad.
Pushlocks shouldn't be acquired at DPC level either, but there's no
ASSERTs in the pushlock code that check for that.
MMProbeAndLockPages should never be called for paged pool addreses
while at DPC level, which means the driver probably called it for a
non-paged pool address.
In that case, the whole loop about checking if the page is present and
then faulting it in is irrelevant, and won't happen.
So I think the lock should move down and only wrap the access fault
paths.
However, those paths already attempt to lock the address space, I
believe, so the lock may not be needed here at all. I'd try removing
it. In any case, it's not needed while at DPC_LEVEL since operations
on the address space are already blocked, plus these are non-paged
pool, resident addresses that won't change.
On 27-Jul-08, at 7:58 PM, James Tabor wrote:
> Hi ARMs,
> Doing a good job BTW~
> Thanks,
> James
>
>
> (ntoskrnl/kd/kdio.c:191)
> -----------------------------------------------------
> (ntoskrnl/kd/kdio.c:192) ReactOS 0.4-SVN (Build 20080728-r34871)
> (ntoskrnl/kd/kdio.c:193) Command Line: DEBUG DEBUGPORT=COM1
> BUADRATE=115200 SOS
> (ntoskrnl/kd/kdio.c:194) ARC Paths:
> multi(0)disk(0)rdisk(0)partition(1) \ multi(0)disk(0)rdisk(0)parti
> tion(1) \ReactOS\
> Used memory 1015348Kb
> (ntoskrnl/mm/mminit.c:295) Start End Type
> (ntoskrnl/mm/mminit.c:296) 0x80000000 - 0x80800000 Undefined
> region
> (ntoskrnl/mm/mminit.c:299) 0x80800000 - 0x80E00000 FreeLDR Kernel
> mapping region
> (ntoskrnl/mm/mminit.c:302) 0x80E00000 - 0x815C0000 PFN Database
> region
> (ntoskrnl/mm/mminit.c:309) 0x815C0000 - 0x879C0000 Non paged
> pool region
> (ntoskrnl/mm/mminit.c:312) 0x879C0000 - 0x8DDC0000 Paged pool
> region
> (ntoskrnl/ke/i386/kiinit.c:47) Large Page support detected but not yet
> taken advantage of!
> WARNING: KdDebuggerInitialize1 at drivers/base/kdcom/i386/kdbg.c:489
> is UNIMPLEMENTED!
> WARNING: IoReportResourceUsage at ntoskrnl/io/iomgr/iorsrce.c:700 is
> UNIMPLEMENTED!
> WARNING: IoReportResourceUsage at ntoskrnl/io/iomgr/iorsrce.c:700 is
> UNIMPLEMENTED!
> (ntoskrnl/io/iomgr/driver.c:1356) '\Driver\BUSLOGIC' initialization
> failed, status (0xc00000c0)
> (ntoskrnl/io/iomgr/driver.c:1356) '\Driver\Floppy' initialization
> failed, status (0xc000000e)
> Assertion 'KeGetCurrentIrql()<=(1)' failed at ntoskrnl/ke/gmutex.c
> line 201
> Entered debugger on embedded INT3 at 0x0008:0x808a8262.
> kdb:> bt
> Eip:
> <NTOSKRNL.EXE:a8263 (lib/rtl/i386/debug_asm.S:33 (DbgBreakPoint at 0))>
> Frames:
> <NTOSKRNL.EXE:a027 (ntoskrnl/ke/gmutex.c:201
> (@KeAcquireGuardedMutex at 4))>
> <NTOSKRNL.EXE:6d3a2 (ntoskrnl/include/internal/mm.h:1556
> (MmProbeAndLockPages at 12))>
> <NTOSKRNL.EXE:4f079 (ntoskrnl/io/iomgr/irp.c:694
> (IoBuildAsynchronousFsdRequest at 24))>
> <SCSIPORT.SYS:4671 (drivers/storage/scsiport/scsiport.c:3959
> (ScsiPortDpcForIsr at 16))>
> <NTOSKRNL.EXE:823a (ntoskrnl/ke/dpc.c:474 (@KiRetireDpcList at 4))>
> <NTOSKRNL.EXE:9fc59 (ntoskrnl/ke/i386/ctxswitch.S:691
> (@KiIdleLoop at 0))>
> <00000000>
> kdb:>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
Best regards,
Alex Ionescu
More information about the Ros-dev
mailing list