Jump to content

Compiling ACPI v2.0 driver for Windows XP SP3 and Windows 2003 SP2 (x32/x64)


Mov AX, 0xDEAD

Recommended Posts

@Mov AX, 0xDEAD

Yes, I found exact the same differences via Beyond Compare 2. Most are identic but not all.

It is not a bug in the new processor definition.

I make test with the version from acpi V2 Mai 2022, same Bsod and the processors are listed as unknown devices in Device Manager with Debug version of this acpi.sys.

So strange, that the last free version with a lot of output boots to desktop with windbg connected, but crashes without windbg

Dietmar

Link to comment
Share on other sites


17 minutes ago, Dietmar said:

@Mov AX, 0xDEAD

Yes, I found exact the same differences via Beyond Compare 2. Most are identic but not all.

There is no way to debug such error, this can be re-entry problem at any place or some anything else

It is undetectable bug in original code or my patches, i cannot fix it.

I just will check again how processor opcode breakpoint triggered many times from different kernel threads

Edited by Mov AX, 0xDEAD
Link to comment
Share on other sites

@Mov AX, 0xDEAD

The just fresh build free acpi.sys via last PM from you gives this Bsod at once, after compi started.

I think, something with my mod is wrong

ACPI!ACPIInitialize+35 [c:\win2k3\nt\base\busdrv\acpi\driver\shared\acpiinit.c @ 923]

Dietmar

Opened log file 'nexttxt.txt'
kd> bu acpi!DriverEntry
kd> g
Breakpoint 0 hit
ACPI!DriverEntry:
fffffadc`c3593010 4883ec48        sub     rsp,48h
23: kd> ed Kd_ACPI_Mask 0xFFFFFFFF
23: kd> g
C0000034 #13 
C0000034 #14 
ObjPath=_GPE,Scope=\, psz=_GPE 

*** Fatal System Error: 0x000000a5
                       (0x0000000000000011,0x0000000000000000,0x0000000000000000,0x0000000000000000)

Break instruction exception - code 80000003 (first chance)

A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.

A fatal system error has occurred.

Connected to Windows Server 2003 3790 x64 target at (Tue Jan  3 14:18:35.437 2023 (UTC + 1:00)), ptr64 TRUE
Loading Kernel Symbols
............................

Press ctrl-c (cdb, kd, ntsd) or ctrl-break (windbg) to abort symbol loads that take too long.
Run !sym noisy before .reload to track down problems loading symbols.

...
Loading User Symbols



************* Symbol Loading Error Summary **************
Module name            Error
SharedUserData         No error - symbol load deferred

You can troubleshoot most symbol related issues by turning on symbol loading diagnostics (!sym noisy) and repeating the command that caused symbols to be loaded.
You should also verify that your symbol search path (.sympath) is correct.
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck A5, {11, 0, 0, 0}

*** No owner thread found for resource fffff800011dca60
*** No owner thread found for resource fffff800011dca60
*** No owner thread found for resource fffff800011dca60
Probably caused by : ACPI.sys ( ACPI!ACPIInitialize+35 )

Followup: MachineOwner
---------

nt!RtlpBreakWithStatusInstruction:
fffff800`01026cf0 cc              int     3
22: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

ACPI_BIOS_ERROR (a5)
The ACPI Bios in the system is not fully compliant with the ACPI specification.
The first value indicates where the incompatibility lies:
This bug check covers a great variety of ACPI problems.  If a kernel debugger
is attached, use "!analyze -v".  This command will analyze the precise problem,
and display whatever information is most useful for debugging the specific
error.
Arguments:
Arg1: 0000000000000011, ACPI_SYSTEM_CANNOT_START_ACPI
	The system could not enter ACPI mode
Arg2: 0000000000000000, System could not initialize AML interpreter
Arg3: 0000000000000000
Arg4: 0000000000000000

Debugging Details:
------------------

*** No owner thread found for resource fffff800011dca60
*** No owner thread found for resource fffff800011dca60
*** No owner thread found for resource fffff800011dca60

DEFAULT_BUCKET_ID:  DRIVER_FAULT

BUGCHECK_STR:  0xA5

PROCESS_NAME:  System

CURRENT_IRQL:  2

ANALYSIS_VERSION: 6.3.9600.17237 (debuggers(dbg).140716-0327) x86fre

LOCK_ADDRESS:  fffff800011dcb60 -- (!locks fffff800011dcb60)
!locks fffff800011dcb60

Resource @ nt!IopDeviceTreeLock (0xfffff800011dcb60)    Shared 1 owning threads
     Threads: fffffadce62e57d0-01<*> 
1 total locks, 1 locks currently held

PNP_TRIAGE: 
	Lock address  : 0xfffff800011dcb60
	Thread Count  : 1
	Thread address: 0xfffffadce62e57d0
	Thread wait   : 0x20c

LAST_CONTROL_TRANSFER:  from fffff800010d668e to fffff80001026cf0

STACK_TEXT:  
fffffadc`c3e0e7d8 fffff800`010d668e : 00000000`00000016 00000000`00000000 00000000`00000011 fffff800`010565ce : nt!RtlpBreakWithStatusInstruction
fffffadc`c3e0e7e0 fffff800`010d7c5e : fffff800`00000003 00000000`000000a5 00000000`00000011 00000000`00000000 : nt!KiBugCheckDebugBreak+0x1e
fffffadc`c3e0e840 fffff800`0102e994 : fffffadc`e62fedb0 fffffadc`e62fe040 fffffadc`00000000 fffffadc`00000000 : nt!KeBugCheck2+0x640
fffffadc`c3e0ee80 fffffadc`c358e465 : 00000000`000000a5 00000000`00000011 00000000`00000000 00000000`00000000 : nt!KeBugCheckEx+0x104
fffffadc`c3e0eec0 fffffadc`c3557596 : 00000000`00000000 00000000`00000103 fffffadc`e62fedb0 fffffadc`e62fe040 : ACPI!ACPIInitialize+0x35 [c:\win2k3\nt\base\busdrv\acpi\driver\shared\acpiinit.c @ 923]
fffffadc`c3e0ef00 fffffadc`c358bf25 : fffffadc`c3e0f2c0 00000000`00000000 fffffadc`e62fedb0 fffffadc`e62fea90 : ACPI!ACPIInitStartACPI+0x86 [c:\win2k3\nt\base\busdrv\acpi\driver\nt\init.c @ 1223]
fffffadc`c3e0ef60 fffffadc`c3552ffd : fffffadc`e62fea90 fffffadc`c3e0f0d8 fffffadc`e62fe040 fffffadc`c358be00 : ACPI!ACPIRootIrpStartDevice+0x125 [c:\win2k3\nt\base\busdrv\acpi\driver\nt\root.c @ 1348]
fffffadc`c3e0efc0 fffff800`0133ed44 : fffffadc`e4e68490 fffffadc`e62fea90 fffffadc`e62fe040 00000000`00000000 : ACPI!ACPIDispatchIrp+0x11d [c:\win2k3\nt\base\busdrv\acpi\driver\nt\dispatch.c @ 796]
fffffadc`c3e0f030 fffff800`01336523 : fffffadc`e4e68490 00000000`00000000 fffffadc`e67e5060 fffffadc`e4e68490 : nt!IopSynchronousCall+0x144
fffffadc`c3e0f0a0 fffff800`013359e2 : 00000000`00020019 fffffadc`e630a000 fffffadc`e4e68490 00000000`00000000 : nt!PipProcessStartPhase1+0x1c7
fffffadc`c3e0f140 fffff800`010cc759 : fffffadc`e4ea14e0 fffff800`000624b0 fffffadc`e4e6d820 fffffadc`e4ea14e0 : nt!PipProcessDevNodeTree+0x2aa
fffffadc`c3e0f4d0 fffff800`01433a07 : ffffffff`00000000 fffffadc`e4ea14e0 fffff800`000624b0 fffffadc`e4e6d850 : nt!PipDeviceActionWorker+0x199
fffffadc`c3e0f560 fffff800`0142b15d : 00000000`00000000 00000000`0000fffc 00000000`00000000 00000000`0000fffc : nt!IopInitializeBootDrivers+0xc57
fffffadc`c3e0f8c0 fffff800`01429155 : fffff800`00093030 fffff800`00093030 00000000`00000003 fffffadc`e62e4010 : nt!IoInitSystem+0xf4f
fffffadc`c3e0fa50 fffff800`0130dc39 : c0b9c0b9`c0b9c0b9 fffffadc`e62e57d0 00000000`00000080 fffffadc`e62e57d0 : nt!Phase1InitializationDiscard+0x112e
fffffadc`c3e0fd40 fffff800`0124a982 : d00cd01c`d01cf01c 3c183c10`3c183c18 d1a0d1a0`d1a0d1a0 00000000`00000080 : nt!Phase1Initialization+0x9
fffffadc`c3e0fd70 fffff800`01020226 : fffff800`011b0180 fffffadc`e62e57d0 fffff800`011b4500 00000000`00000000 : nt!PspSystemThreadStartup+0x3e
fffffadc`c3e0fdd0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KxStartSystemThread+0x16


STACK_COMMAND:  kb

FOLLOWUP_IP: 
ACPI!ACPIInitialize+35 [c:\win2k3\nt\base\busdrv\acpi\driver\shared\acpiinit.c @ 923]
fffffadc`c358e465 cc              int     3

FAULTING_SOURCE_LINE:  c:\win2k3\nt\base\busdrv\acpi\driver\shared\acpiinit.c

FAULTING_SOURCE_FILE:  c:\win2k3\nt\base\busdrv\acpi\driver\shared\acpiinit.c

FAULTING_SOURCE_LINE_NUMBER:  923

FAULTING_SOURCE_CODE:  
No source found for 'c:\win2k3\nt\base\busdrv\acpi\driver\shared\acpiinit.c'


SYMBOL_STACK_INDEX:  4

SYMBOL_NAME:  ACPI!ACPIInitialize+35

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: ACPI

IMAGE_NAME:  ACPI.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  63b425fa

IMAGE_VERSION:  5.2.3790.7777

FAILURE_BUCKET_ID:  X64_0xA5_ACPI!ACPIInitialize+35

BUCKET_ID:  X64_0xA5_ACPI!ACPIInitialize+35

ANALYSIS_SOURCE:  KM

FAILURE_ID_HASH_STRING:  km:x64_0xa5_acpi!acpiinitialize+35

FAILURE_ID_HASH:  {45113f0e-a533-b56d-4ce9-49d90002bfbd}

Followup: MachineOwner
---------

22: kd> lm
start             end                 module name
fffff800`00800000 fffff800`0085e000   hal        (deferred)             
fffff800`01000000 fffff800`01498000   nt         (pdb symbols)          C:\Programme\Windows Kits\8.1\Debuggers\x86\sym\ntkrnlmp.pdb\7C3C62B843A04B97A1FBEBC91C88CBFF2\ntkrnlmp.pdb
fffffadc`c3144000 fffffadc`c3178000   Mup        (deferred)             
fffffadc`c3178000 fffffadc`c31de000   NDIS       (deferred)             
fffffadc`c31de000 fffffadc`c32e3000   Ntfs       (deferred)             
fffffadc`c32e3000 fffffadc`c3317000   KSecDD     (deferred)             
fffffadc`c3317000 fffffadc`c333a000   sr         (deferred)             
fffffadc`c333a000 fffffadc`c3378000   fltMgr     (deferred)             
fffffadc`c3378000 fffffadc`c3395000   CLASSPNP   (deferred)             
fffffadc`c3395000 fffffadc`c33aa000   disk       (deferred)             
fffffadc`c33aa000 fffffadc`c340d000   storport   (deferred)             
fffffadc`c340d000 fffffadc`c343a000   atapi      (deferred)             
fffffadc`c343a000 fffffadc`c3485000   volsnap    (deferred)             
fffffadc`c3485000 fffffadc`c34cc000   dmio       (deferred)             
fffffadc`c34cc000 fffffadc`c350c000   ftdisk     (deferred)             
fffffadc`c350c000 fffffadc`c3522000   MountMgr   (deferred)             
fffffadc`c3522000 fffffadc`c3543000   pci        (deferred)             
fffffadc`c3543000 fffffadc`c3598000   ACPI       (private pdb symbols)  C:\Programme\Windows Kits\8.1\Debuggers\x86\sym\acpi.pdb\CB64C7A3B3514E509B66DC3826B36B6C1\acpi.pdb
fffffadc`c3598000 fffffadc`c35b6000   amdhub30   (deferred)             
fffffadc`c35b6000 fffffadc`c35f2000   amdxhc     (deferred)             
fffffadc`c36f3000 fffffadc`c3704000   USBSTOR    (deferred)             
fffffadc`c3706000 fffffadc`c3718000   storahci   (deferred)             
fffffadc`c39fb000 fffffadc`c3a05000   kdcom      (deferred)             
fffffadc`c3a0b000 fffffadc`c3a14000   BOOTVID    (deferred)             
fffffadc`c3a1b000 fffffadc`c3a24000   WMILIB     (deferred)             
fffffadc`c3a2b000 fffffadc`c3a34000   isapnp     (deferred)             
fffffadc`c3a3b000 fffffadc`c3a4b000   PCIIDEX    (deferred)             
fffffadc`c3a4b000 fffffadc`c3a5b000   PartMgr    (deferred)             
fffffadc`c3a5b000 fffffadc`c3a66000   crcdisk    (deferred)             
fffffadc`c3dfb000 fffffadc`c3e02000   pciide     (deferred)             
fffffadc`c3e02000 fffffadc`c3e09000   dmload     (deferred)             
fffffadc`c41a7000 fffffadc`c41a8e00   USBD       (deferred)             
22: kd> !devnode 0 1
Dumping IopRootDeviceNode (= 0xfffffadce4e6d650)
DevNode 0xfffffadce4e6d650 for PDO 0xfffffadce4e6d850
  InstancePath is "HTREE\ROOT\0"
  State = DeviceNodeStarted (0x308)
  Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67eab00 for PDO 0xfffffadce67ead20
    InstancePath is "Root\ACPI_HAL\0000"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
    DevNode 0xfffffadce4e68490 for PDO 0xfffffadce67e5060
      InstancePath is "ACPI_HAL\PNP0C08\0"
      ServiceName is "ACPI"
      State = DeviceNodeResourcesAssigned (0x304)
      Previous State = DeviceNodeDriversAdded (0x303)
  DevNode 0xfffffadce67ea560 for PDO 0xfffffadce67ea780
    InstancePath is "Root\dmio\0000"
    ServiceName is "dmio"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce67ea180 for PDO 0xfffffadce67ea3a0
    InstancePath is "Root\ftdisk\0000"
    ServiceName is "ftdisk"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce6305e40 for PDO 0xfffffadce6305060
    InstancePath is "Root\LEGACY_AFD\0000"
    ServiceName is "AFD"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6305a60 for PDO 0xfffffadce6305c80
    InstancePath is "Root\LEGACY_AMDHUB30\0000"
    ServiceName is "amdhub30"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6305680 for PDO 0xfffffadce63058a0
    InstancePath is "Root\LEGACY_AMDXHC\0000"
    ServiceName is "amdxhc"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce63052a0 for PDO 0xfffffadce63054c0
    InstancePath is "Root\LEGACY_AMPA\0000"
    ServiceName is "ampa"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6ce40 for PDO 0xfffffadce4e6c060
    InstancePath is "Root\LEGACY_BEEP\0000"
    ServiceName is "Beep"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6ca60 for PDO 0xfffffadce4e6cc80
    InstancePath is "Root\LEGACY_CDAC15BA\0000"
    ServiceName is "CdaC15BA"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6c680 for PDO 0xfffffadce4e6c8a0
    InstancePath is "Root\LEGACY_CDAD10BA\0000"
    ServiceName is "CdaD10BA"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6c220 for PDO 0xfffffadce4e6c440
    InstancePath is "Root\LEGACY_CPUZ135\0000"
    ServiceName is "cpuz135"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e9e40 for PDO 0xfffffadce67e9060
    InstancePath is "Root\LEGACY_CRCDISK\0000"
    ServiceName is "crcdisk"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e9a60 for PDO 0xfffffadce67e9c80
    InstancePath is "Root\LEGACY_DMBOOT\0000"
    ServiceName is "dmboot"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e9680 for PDO 0xfffffadce67e98a0
    InstancePath is "Root\LEGACY_DMLOAD\0000"
    ServiceName is "dmload"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e92a0 for PDO 0xfffffadce67e94c0
    InstancePath is "Root\LEGACY_FIPS\0000"
    ServiceName is "Fips"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6304e40 for PDO 0xfffffadce6304060
    InstancePath is "Root\LEGACY_GPC\0000"
    ServiceName is "Gpc"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6304a60 for PDO 0xfffffadce6304c80
    InstancePath is "Root\LEGACY_HTTP\0000"
    ServiceName is "HTTP"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6304680 for PDO 0xfffffadce63048a0
    InstancePath is "Root\LEGACY_IPNAT\0000"
    ServiceName is "IpNat"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce63042a0 for PDO 0xfffffadce63044c0
    InstancePath is "Root\LEGACY_IPSEC\0000"
    ServiceName is "IPSec"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6be40 for PDO 0xfffffadce4e6b060
    InstancePath is "Root\LEGACY_KSECDD\0000"
    ServiceName is "ksecdd"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6ba60 for PDO 0xfffffadce4e6bc80
    InstancePath is "Root\LEGACY_MNMDD\0000"
    ServiceName is "mnmdd"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6b680 for PDO 0xfffffadce4e6b8a0
    InstancePath is "Root\LEGACY_MOUNTMGR\0000"
    ServiceName is "mountmgr"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6b2a0 for PDO 0xfffffadce4e6b4c0
    InstancePath is "Root\LEGACY_NDIS\0000"
    ServiceName is "NDIS"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e8e40 for PDO 0xfffffadce67e8060
    InstancePath is "Root\LEGACY_NDISTAPI\0000"
    ServiceName is "NdisTapi"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e8a60 for PDO 0xfffffadce67e8c80
    InstancePath is "Root\LEGACY_NDISUIO\0000"
    ServiceName is "Ndisuio"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e8680 for PDO 0xfffffadce67e88a0
    InstancePath is "Root\LEGACY_NDPROXY\0000"
    ServiceName is "NDProxy"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e82a0 for PDO 0xfffffadce67e84c0
    InstancePath is "Root\LEGACY_NETBT\0000"
    ServiceName is "NetBT"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6303e40 for PDO 0xfffffadce6303060
    InstancePath is "Root\LEGACY_NULL\0000"
    ServiceName is "Null"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6303a60 for PDO 0xfffffadce6303c80
    InstancePath is "Root\LEGACY_NVME\0000"
    ServiceName is "nvme"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce6303680 for PDO 0xfffffadce63038a0
    InstancePath is "Root\LEGACY_PARTMGR\0000"
    ServiceName is "PartMgr"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce63032a0 for PDO 0xfffffadce63034c0
    InstancePath is "Root\LEGACY_RASACD\0000"
    ServiceName is "RasAcd"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6ae40 for PDO 0xfffffadce4e6a060
    InstancePath is "Root\LEGACY_RDPCDD\0000"
    ServiceName is "RDPCDD"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6aa60 for PDO 0xfffffadce4e6ac80
    InstancePath is "Root\LEGACY_SECDRV\0000"
    ServiceName is "Secdrv"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6a680 for PDO 0xfffffadce4e6a8a0
    InstancePath is "Root\LEGACY_TCPIP\0000"
    ServiceName is "Tcpip"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce4e6a2a0 for PDO 0xfffffadce4e6a4c0
    InstancePath is "Root\LEGACY_USBSTOR\0000"
    ServiceName is "USBSTOR"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e7e40 for PDO 0xfffffadce67e7060
    InstancePath is "Root\LEGACY_VGASAVE\0000"
    ServiceName is "VgaSave"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e7a60 for PDO 0xfffffadce67e7c80
    InstancePath is "Root\LEGACY_VOLSNAP\0000"
    ServiceName is "VolSnap"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e7680 for PDO 0xfffffadce67e78a0
    InstancePath is "Root\LEGACY_WANARP\0000"
    ServiceName is "Wanarp"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xfffffadce67e72a0 for PDO 0xfffffadce67e74c0
    InstancePath is "Root\MEDIA\MS_MMACM"
    ServiceName is "audstub"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce6302e40 for PDO 0xfffffadce6302060
    InstancePath is "Root\MEDIA\MS_MMDRV"
    ServiceName is "audstub"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce6302a60 for PDO 0xfffffadce6302c80
    InstancePath is "Root\MEDIA\MS_MMMCI"
    ServiceName is "audstub"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce6302680 for PDO 0xfffffadce63028a0
    InstancePath is "Root\MEDIA\MS_MMVCD"
    ServiceName is "audstub"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce63022a0 for PDO 0xfffffadce63024c0
    InstancePath is "Root\MEDIA\MS_MMVID"
    ServiceName is "audstub"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce4e69e40 for PDO 0xfffffadce4e69060
    InstancePath is "Root\MS_L2TPMINIPORT\0000"
    ServiceName is "Rasl2tp"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce4e69a60 for PDO 0xfffffadce4e69c80
    InstancePath is "Root\MS_NDISWANIP\0000"
    ServiceName is "NdisWan"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce4e69680 for PDO 0xfffffadce4e698a0
    InstancePath is "Root\MS_PPPOEMINIPORT\0000"
    ServiceName is "RasPppoe"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce4e692a0 for PDO 0xfffffadce4e694c0
    InstancePath is "Root\MS_PPTPMINIPORT\0000"
    ServiceName is "PptpMiniport"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce67e6e40 for PDO 0xfffffadce67e6060
    InstancePath is "Root\MS_PSCHEDMP\0000"
    ServiceName is "PSched"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce67e6a60 for PDO 0xfffffadce67e6c80
    InstancePath is "Root\MS_PSCHEDMP\0001"
    ServiceName is "PSched"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce67e6680 for PDO 0xfffffadce67e68a0
    InstancePath is "Root\MS_PSCHEDMP\0002"
    ServiceName is "PSched"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce67e62a0 for PDO 0xfffffadce67e64c0
    InstancePath is "Root\MS_PTIMINIPORT\0000"
    ServiceName is "Raspti"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce6301e40 for PDO 0xfffffadce6301060
    InstancePath is "Root\RDPDR\0000"
    ServiceName is "rdpdr"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce6301a60 for PDO 0xfffffadce6301c80
    InstancePath is "Root\RDP_KBD\0000"
    ServiceName is "TermDD"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce6301680 for PDO 0xfffffadce63018a0
    InstancePath is "Root\RDP_MOU\0000"
    ServiceName is "TermDD"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce63012a0 for PDO 0xfffffadce63014c0
    InstancePath is "Root\SYSTEM\0000"
    ServiceName is "swenum"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce4e68e40 for PDO 0xfffffadce4e68060
    InstancePath is "Root\SYSTEM\0001"
    ServiceName is "update"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
  DevNode 0xfffffadce4e68a60 for PDO 0xfffffadce4e68c80
    InstancePath is "Root\SYSTEM\0002"
    ServiceName is "mssmbios"
    State = DeviceNodeInitialized (0x302)
    Previous State = DeviceNodeUninitialized (0x301)
22: kd> !thread
THREAD fffffadce62e57d0  Cid 0004.0008  Teb: 0000000000000000 Win32Thread: 0000000000000000 RUNNING on processor 16
IRP List:
    fffffadce62fea90: (0006,0310) Flags: 00000000  Mdl: 00000000
Not impersonating
DeviceMap                 fffffa8000003780
Owning Process            fffffadce62e5c20       Image:         System
Attached Process          N/A            Image:         N/A
Wait Start TickCount      524            Ticks: 1 (0:00:00:00.015)
Context Switch Count      50             IdealProcessor: 0             
UserTime                  00:00:00.000
KernelTime                00:00:08.234
Start Address nt!Phase1Initialization (0xfffff8000130dc30)
Stack Init fffffadcc3e0fe00 Current fffffadcc3e0e350
Base fffffadcc3e10000 Limit fffffadcc3e0a000 Call 0
Priority 31 BasePriority 8 PriorityDecrement 0
Child-SP          RetAddr           : Args to Child                                                           : Call Site
fffffadc`c3e0e7d8 fffff800`010d668e : 00000000`00000016 00000000`00000000 00000000`00000011 fffff800`010565ce : nt!RtlpBreakWithStatusInstruction
fffffadc`c3e0e7e0 fffff800`010d7c5e : fffff800`00000003 00000000`000000a5 00000000`00000011 00000000`00000000 : nt!KiBugCheckDebugBreak+0x1e
fffffadc`c3e0e840 fffff800`0102e994 : fffffadc`e62fedb0 fffffadc`e62fe040 fffffadc`00000000 fffffadc`00000000 : nt!KeBugCheck2+0x640
fffffadc`c3e0ee80 fffffadc`c358e465 : 00000000`000000a5 00000000`00000011 00000000`00000000 00000000`00000000 : nt!KeBugCheckEx+0x104
fffffadc`c3e0eec0 fffffadc`c3557596 : 00000000`00000000 00000000`00000103 fffffadc`e62fedb0 fffffadc`e62fe040 : ACPI!ACPIInitialize+0x35 [c:\win2k3\nt\base\busdrv\acpi\driver\shared\acpiinit.c @ 923]
fffffadc`c3e0ef00 fffffadc`c358bf25 : fffffadc`c3e0f2c0 00000000`00000000 fffffadc`e62fedb0 fffffadc`e62fea90 : ACPI!ACPIInitStartACPI+0x86 [c:\win2k3\nt\base\busdrv\acpi\driver\nt\init.c @ 1223]
fffffadc`c3e0ef60 fffffadc`c3552ffd : fffffadc`e62fea90 fffffadc`c3e0f0d8 fffffadc`e62fe040 fffffadc`c358be00 : ACPI!ACPIRootIrpStartDevice+0x125 [c:\win2k3\nt\base\busdrv\acpi\driver\nt\root.c @ 1348]
fffffadc`c3e0efc0 fffff800`0133ed44 : fffffadc`e4e68490 fffffadc`e62fea90 fffffadc`e62fe040 00000000`00000000 : ACPI!ACPIDispatchIrp+0x11d [c:\win2k3\nt\base\busdrv\acpi\driver\nt\dispatch.c @ 796]
fffffadc`c3e0f030 fffff800`01336523 : fffffadc`e4e68490 00000000`00000000 fffffadc`e67e5060 fffffadc`e4e68490 : nt!IopSynchronousCall+0x144
fffffadc`c3e0f0a0 fffff800`013359e2 : 00000000`00020019 fffffadc`e630a000 fffffadc`e4e68490 00000000`00000000 : nt!PipProcessStartPhase1+0x1c7
fffffadc`c3e0f140 fffff800`010cc759 : fffffadc`e4ea14e0 fffff800`000624b0 fffffadc`e4e6d820 fffffadc`e4ea14e0 : nt!PipProcessDevNodeTree+0x2aa
fffffadc`c3e0f4d0 fffff800`01433a07 : ffffffff`00000000 fffffadc`e4ea14e0 fffff800`000624b0 fffffadc`e4e6d850 : nt!PipDeviceActionWorker+0x199
fffffadc`c3e0f560 fffff800`0142b15d : 00000000`00000000 00000000`0000fffc 00000000`00000000 00000000`0000fffc : nt!IopInitializeBootDrivers+0xc57
fffffadc`c3e0f8c0 fffff800`01429155 : fffff800`00093030 fffff800`00093030 00000000`00000003 fffffadc`e62e4010 : nt!IoInitSystem+0xf4f
fffffadc`c3e0fa50 fffff800`0130dc39 : c0b9c0b9`c0b9c0b9 fffffadc`e62e57d0 00000000`00000080 fffffadc`e62e57d0 : nt!Phase1InitializationDiscard+0x112e
fffffadc`c3e0fd40 fffff800`0124a982 : d00cd01c`d01cf01c 3c183c10`3c183c18 d1a0d1a0`d1a0d1a0 00000000`00000080 : nt!Phase1Initialization+0x9
fffffadc`c3e0fd70 fffff800`01020226 : fffff800`011b0180 fffffadc`e62e57d0 fffff800`011b4500 00000000`00000000 : nt!PspSystemThreadStartup+0x3e
fffffadc`c3e0fdd0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KxStartSystemThread+0x16

Closing open log file nexttxt.txt

 

Edited by Dietmar
Link to comment
Share on other sites

@Mov AX, 0xDEAD

May be, that our results are not so bad.

I do again a check for the last _HID, which work and then, which _HID comes after Bsod:

\_SB.PC00.I2C2.CAM0._HID
\_SB.PC00.I2C4.CAM1._HID
\_SB.PC00.I2C2.PMIC._HID
\_SB.PC00.I2C0.HDAC._HID

Bsod A5 (0x03, xxx, 0xc0000034, _HID)

 

Compare with loong txt output:

ObjPath=_HID,Scope=\_SB.PC00.I2C2.CAM0, psz=_HID

ObjPath=_HID,Scope=\_SB.PC00.I2C4.CAM1, psz=_HID

ObjPath=_HID,Scope=\_SB.PC00.I2C2.PMIC, psz=_HID

ObjPath=_HID,Scope=\_SB.PC00.I2C0.HDAC, psz=_HID

ObjPath=_HID,Scope=\_SB.HIDD, psz=_HID

ObjPath=_HID,Scope=\_SB.WCCD, psz=_HID

ObjPath=_HID,Scope=\_SB.PWRB, psz=_HID

ObjPath=_HID,Scope=\_SB.PC00.LPCB.HPET, psz=_HID

Dietmar

 

 

 

 

Link to comment
Share on other sites

4 hours ago, Dietmar said:

ObjPath=_HID,Scope=\_SB.PC00.I2C0.HDAC, psz=_HID

ObjPath=_HID,Scope=\_SB.HIDD, psz=_HID

ObjPath=_HID,Scope=\_SB.WCCD, psz=_HID

With more debug output there is no problem with HIDD or I2C0, dsdt is same on ever reboot

One crazy idea - emulate time delay (near DbgPrint(c000034...)) when running free build without windbg connection:

Quote

LONG delay = 10; // microseconds

KIRQL irql = KeGetCurrentIrql();

if (irql < DISPATCH_LEVEL) {
    LARGE_INTEGER timeoutPeriod;

    timeoutPeriod.QuadPart = -10 * delay; // units of 100ns -> microseconds
    KeDelayExecutionThread(KernelMode,
                                       FALSE,
                                       &timeoutPeriod
                                        );
} else {
       KeStallExecutionProcessor((ULONG)delay);
}

 

Edited by Mov AX, 0xDEAD
Link to comment
Share on other sites

15 hours ago, Damnation said:

@Dietmar

I'm curious to see if adding this kind of delay would help with the USB problem on my threadripper system.

@Damnation

Delays are useless until you know where to insert it. Patched x64 acpi.sys with additional delays is crap.

Edited by Mov AX, 0xDEAD
Link to comment
Share on other sites

@Mov AX, 0xDEAD

Delay method works, just a little bit more extendet on all methods before Bsod,

boottime 50sec of XP SP2 bit 64. I test with success on all of my z690 boards.

Here is free acpi.sys for XP SP2 bit 64. The file acpins.c is the only file, that needs to be modded.

https://ufile.io/b1e6d45s

 

Dietmar

/*** acpins.c - ACPI Name Space functions
 *
 *  Copyright (c) 1996,1997 Microsoft Corporation
 *  Author:     Michael Tsang (MikeTs)
 *  Created     09/09/96
 *
 *  MODIFICATION HISTORY
 */

#include "pch.h"

#ifdef  LOCKABLE_PRAGMA
#pragma ACPI_LOCKABLE_DATA
#pragma ACPI_LOCKABLE_CODE
#endif

/***LP  GetNameSpaceObject - Find a name space object
 *
 *  ENTRY
 *      pszObjPath -> object path string
 *      pnsScope - object scope to start the search (NULL means root)
 *      ppnsObj -> to hold the object found
 *      dwfNS - flags
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

NTSTATUS LOCAL GetNameSpaceObject(PSZ pszObjPath, PNSOBJ pnsScope, PPNSOBJ ppns,
                                  ULONG dwfNS)
{
    TRACENAME("GETNAMESPACEOBJECT")
    NTSTATUS rc = STATUS_SUCCESS;
    PSZ psz;
    LONG delay = 10; // microseconds
    KIRQL irql = KeGetCurrentIrql();
                    
    ENTER(3, ("GetNameSpaceObject(ObjPath=%s,Scope=%s,ppns=%x,Flags=%x)\n",
              pszObjPath, GetObjectPath(pnsScope), ppns, dwfNS));

    if (pnsScope == NULL)
        pnsScope = gpnsNameSpaceRoot;

    if (*pszObjPath == '\\')
    {
        psz = &pszObjPath[1];
        pnsScope = gpnsNameSpaceRoot;
    }
    else
    {
        psz = pszObjPath;

        while ((*psz == '^') && (pnsScope != NULL))
        {
            psz++;
            pnsScope = pnsScope->pnsParent;
        }
    }

    *ppns = pnsScope;

    if (pnsScope == NULL) {
        DbgPrint("C0000034 #13 \n");
        rc = AMLIERR_OBJ_NOT_FOUND;
    }
    else if (*psz != '\0')
    {
        BOOLEAN fSearchUp;
        PNSOBJ pns;

        fSearchUp = (BOOLEAN)(!(dwfNS & NSF_LOCAL_SCOPE) &&
                              (pszObjPath[0] != '\\') &&
                              (pszObjPath[0] != '^') &&
                              (STRLEN(pszObjPath) <= sizeof(NAMESEG)));
        for (;;)
        {
            do
            {
                if ((pns = pnsScope->pnsFirstChild) == NULL) {
                    DbgPrint("C0000034 #14 \n");
if (
    (pszObjPath[0] == '_' && pszObjPath[1] == 'H' &&    // _HID
     pszObjPath[2] == 'I' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'U' &&    // _UID
     pszObjPath[2] == 'I' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _STA
     pszObjPath[2] == 'T' && pszObjPath[3] == 'A') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'P' &&    // _PRW
     pszObjPath[2] == 'R' && pszObjPath[3] == 'W') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'A' &&    // _ADR
     pszObjPath[2] == 'D' && pszObjPath[3] == 'R') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'C' &&    // _CID
     pszObjPath[2] == 'I' && pszObjPath[3] == 'D') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'I' &&    // _INI
     pszObjPath[2] == 'N' && pszObjPath[3] == 'I') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'B' &&    // _BBN
     pszObjPath[2] == 'B' && pszObjPath[3] == 'N') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'C' &&    // _CRS
     pszObjPath[2] == 'R' && pszObjPath[3] == 'S') ||


    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DIS
     pszObjPath[2] == 'I' && pszObjPath[3] == 'S') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _SRS
     pszObjPath[2] == 'R' && pszObjPath[3] == 'S') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DDN
     pszObjPath[2] == 'D' && pszObjPath[3] == 'N') ||


    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DSD
     pszObjPath[2] == 'S' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'W' &&    // _WDG
     pszObjPath[2] == 'D' && pszObjPath[3] == 'G') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'P' &&    // _PLD
     pszObjPath[2] == 'L' && pszObjPath[3] == 'D') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DEP
     pszObjPath[2] == 'E' && pszObjPath[3] == 'P') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _S0W
     pszObjPath[2] == '0' && pszObjPath[3] == 'W') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _STR
     pszObjPath[2] == 'T' && pszObjPath[3] == 'R') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'W' &&    // _WED
     pszObjPath[2] == 'E' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'T' &&    // _T_0
     pszObjPath[2] == '_' && pszObjPath[3] == '0') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _STR
     pszObjPath[2] == 'T' && pszObjPath[3] == 'R')



){

                        if (irql < DISPATCH_LEVEL) {
                            LARGE_INTEGER timeoutPeriod;

                            timeoutPeriod.QuadPart = -10 * delay; // units of 100ns -> microseconds
                            KeDelayExecutionThread(KernelMode,
                                                               FALSE,
                                                               &timeoutPeriod
                                                                );
                        } else {
                               KeStallExecutionProcessor((ULONG)delay);
                        }
                    }
                    DbgPrint("ObjPath=%s,Scope=%s, psz=%s \n",
                                pszObjPath, GetObjectPath(pnsScope), psz);

                    rc = AMLIERR_OBJ_NOT_FOUND;
                }
                else
                {
                    BOOLEAN fFound;
                    PSZ pszEnd;
                    ULONG dwLen;
                    NAMESEG dwName;

                    if ((pszEnd = STRCHR(psz, '.')) != NULL)
                        dwLen = (ULONG)(pszEnd - psz);
                    else
                        dwLen = STRLEN(psz);

                    if (dwLen > sizeof(NAMESEG))
                    {
                        rc = AMLI_LOGERR(AMLIERR_INVALID_NAME,
                                         ("GetNameSpaceObject: invalid name - %s",
                                          pszObjPath));

                        // Satisfy the compiler...
                        fFound = FALSE;
                    }
                    else
                    {
                        dwName = NAMESEG_BLANK;
                        MEMCPY(&dwName, psz, dwLen);
                        //
                        // Search all siblings for a matching NameSeg.
                        //
                        fFound = FALSE;
                        do
                        {
                            if (pns->dwNameSeg == dwName)
                            {
                                pnsScope = pns;
                                fFound = TRUE;
                                break;
                            }
                            pns = (PNSOBJ)pns->list.plistNext;
                        } while (pns != pns->pnsParent->pnsFirstChild);
                    }

                    if (rc == STATUS_SUCCESS)
                    {
                        if (!fFound) {
                            DbgPrint("C0000034 #15 \n");
if (
    (pszObjPath[0] == '_' && pszObjPath[1] == 'H' &&    // _HID
     pszObjPath[2] == 'I' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'U' &&    // _UID
     pszObjPath[2] == 'I' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _STA
     pszObjPath[2] == 'T' && pszObjPath[3] == 'A') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'P' &&    // _PRW
     pszObjPath[2] == 'R' && pszObjPath[3] == 'W') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'A' &&    // _ADR
     pszObjPath[2] == 'D' && pszObjPath[3] == 'R') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'C' &&    // _CID
     pszObjPath[2] == 'I' && pszObjPath[3] == 'D') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'I' &&    // _INI
     pszObjPath[2] == 'N' && pszObjPath[3] == 'I') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'B' &&    // _BBN
     pszObjPath[2] == 'B' && pszObjPath[3] == 'N') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'C' &&    // _CRS
     pszObjPath[2] == 'R' && pszObjPath[3] == 'S') ||


    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DIS
     pszObjPath[2] == 'I' && pszObjPath[3] == 'S') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _SRS
     pszObjPath[2] == 'R' && pszObjPath[3] == 'S') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DDN
     pszObjPath[2] == 'D' && pszObjPath[3] == 'N') ||


    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DSD
     pszObjPath[2] == 'S' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'W' &&    // _WDG
     pszObjPath[2] == 'D' && pszObjPath[3] == 'G') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'P' &&    // _PLD
     pszObjPath[2] == 'L' && pszObjPath[3] == 'D') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'D' &&    // _DEP
     pszObjPath[2] == 'E' && pszObjPath[3] == 'P') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _S0W
     pszObjPath[2] == '0' && pszObjPath[3] == 'W') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _STR
     pszObjPath[2] == 'T' && pszObjPath[3] == 'R') ||

    (pszObjPath[0] == '_' && pszObjPath[1] == 'W' &&    // _WED
     pszObjPath[2] == 'E' && pszObjPath[3] == 'D') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'T' &&    // _T_0
     pszObjPath[2] == '_' && pszObjPath[3] == '0') ||
    (pszObjPath[0] == '_' && pszObjPath[1] == 'S' &&    // _STR
     pszObjPath[2] == 'T' && pszObjPath[3] == 'R')



) { 

                                if (irql < DISPATCH_LEVEL) {
                                    LARGE_INTEGER timeoutPeriod;

                                    timeoutPeriod.QuadPart = -10 * delay; // units of 100ns -> microseconds
                                    KeDelayExecutionThread(KernelMode,
                                                                       FALSE,
                                                                       &timeoutPeriod
                                                                        );
                                } else {
                                       KeStallExecutionProcessor((ULONG)delay);
                                }
                            }
                            DbgPrint("ObjPath=%s,Scope=%s, psz=%s \n",
                                pszObjPath, GetObjectPath(pnsScope), psz);
                            rc = AMLIERR_OBJ_NOT_FOUND;
                        }
                        else
                        {
                            psz += dwLen;
                            if (*psz == '.')
                            {
                                psz++;
                            }
                else if (*psz == '\0')
                            {
                                *ppns = pnsScope;
                                break;
                            }
                        }
                    }
                }
            } while (rc == STATUS_SUCCESS);

            if ((rc == AMLIERR_OBJ_NOT_FOUND) && fSearchUp &&
                (pnsScope != NULL) && (pnsScope->pnsParent != NULL))
            {
                pnsScope = pnsScope->pnsParent;
                rc = STATUS_SUCCESS;
            }
            else
            {
                break;
            }
        }
    }

    if ((dwfNS & NSF_WARN_NOTFOUND) && (rc == AMLIERR_OBJ_NOT_FOUND))
    {
        rc = AMLI_LOGERR(rc, ("GetNameSpaceObject: object %s not found",
                              pszObjPath));
    }

    if (rc != STATUS_SUCCESS)
    {
        *ppns = NULL;
    }

    EXIT(3, ("GetNameSpaceObject=%x (pns=%x)\n", rc, *ppns));
    return rc;
}       //GetNameSpaceObject

/***LP  CreateNameSpaceObject - Create a name space object under current scope
 *
 *  ENTRY
 *      pheap -> HEAP
 *      pszName -> name string of the object (NULL if creating noname object)
 *      pnsScope - scope to create object under (NULL means root)
 *      powner -> object owner
 *      ppns -> to hold the pointer to the new object (can be NULL)
 *      dwfNS - flags
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

NTSTATUS LOCAL CreateNameSpaceObject(PHEAP pheap, PSZ pszName, PNSOBJ pnsScope,
                                     POBJOWNER powner, PPNSOBJ ppns,
                                     ULONG dwfNS)
{
    TRACENAME("CREATENAMESPACEOBJECT")
    NTSTATUS rc = STATUS_SUCCESS;
    PNSOBJ pns = NULL;

    ENTER(3, ("CreateNameSpaceObject(pheap=%x,Name=%s,pnsScope=%x,powner=%x,ppns=%x,Flags=%x)\n",
              pheap, pszName? pszName: "<null>", pnsScope, powner, ppns, dwfNS));

    if (pnsScope == NULL)
        pnsScope = gpnsNameSpaceRoot;

    if (pszName == NULL)
    {
        if ((pns = NEWNSOBJ(pheap, sizeof(NSOBJ))) == NULL)
        {
            rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,
                             ("CreateNameSpaceObject: fail to allocate name space object"));
        }
        else
        {
            ASSERT(gpnsNameSpaceRoot != NULL);
            MEMZERO(pns, sizeof(NSOBJ));
            pns->pnsParent = pnsScope;
            InsertOwnerObjList(powner, pns);
            ListInsertTail(&pns->list,
                           (PPLIST)&pnsScope->pnsFirstChild);
        }
    }
    else if ((*pszName != '\0') &&
             ((rc = GetNameSpaceObject(pszName, pnsScope, &pns,
                                       NSF_LOCAL_SCOPE)) == STATUS_SUCCESS))
    {
        if (!(dwfNS & NSF_EXIST_OK))
        {
            rc = AMLI_LOGERR(AMLIERR_OBJ_ALREADY_EXIST,
                             ("CreateNameSpaceObject: object already exist - %s",
                              pszName));
        }
    }
    else if ((*pszName == '\0') || (rc == AMLIERR_OBJ_NOT_FOUND))
    {
        rc = STATUS_SUCCESS;
        //
        // Are we creating root?
        //
        if (STRCMP(pszName, "\\") == 0)
        {
            ASSERT(gpnsNameSpaceRoot == NULL);
            ASSERT(powner == NULL);
            if ((pns = NEWNSOBJ(pheap, sizeof(NSOBJ))) == NULL)
            {
                rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,
                                 ("CreateNameSpaceObject: fail to allocate name space object"));
            }
            else
            {
                MEMZERO(pns, sizeof(NSOBJ));
                pns->dwNameSeg = NAMESEG_ROOT;
                gpnsNameSpaceRoot = pns;
                InsertOwnerObjList(powner, pns);
            }
        }
        else
        {
            PSZ psz;
            PNSOBJ pnsParent;

            if ((psz = STRRCHR(pszName, '.')) != NULL)
            {
                *psz = '\0';
                psz++;
                rc = GetNameSpaceObject(pszName, pnsScope, &pnsParent,
                                        NSF_LOCAL_SCOPE | NSF_WARN_NOTFOUND);
            }
            else if (*pszName == '\\')
            {
                psz = &pszName[1];
                //
                // By this time, we'd better created root already.
                //
                ASSERT(gpnsNameSpaceRoot != NULL);
                pnsParent = gpnsNameSpaceRoot;
            }
            else if (*pszName == '^')
            {
                psz = pszName;
                pnsParent = pnsScope;
                while ((*psz == '^') && (pnsParent != NULL))
                {
                    pnsParent = pnsParent->pnsParent;
                    psz++;
                }
            }
            else
            {
                ASSERT(pnsScope != NULL);
                psz = pszName;
                pnsParent = pnsScope;
            }

            if (rc == STATUS_SUCCESS)
            {
                int iLen = STRLEN(psz);

                if ((*psz != '\0') && (iLen > sizeof(NAMESEG)))
                {
                    rc = AMLI_LOGERR(AMLIERR_INVALID_NAME,
                                     ("CreateNameSpaceObject: invalid name - %s",
                                      psz));
                }
                else if ((pns = NEWNSOBJ(pheap, sizeof(NSOBJ)))
                         == NULL)
                {
                    rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,
                                     ("CreateNameSpaceObject: fail to allocate name space object"));
                }
                else
                {
                    MEMZERO(pns, sizeof(NSOBJ));

                    if (*pszName == '\0')
                        pns->dwNameSeg = NAMESEG_NONE;
                    else
                    {
                        pns->dwNameSeg = NAMESEG_BLANK;
                        MEMCPY(&pns->dwNameSeg, psz, iLen);
                    }

                    pns->pnsParent = pnsParent;
                    InsertOwnerObjList(powner, pns);
                    ListInsertTail(&pns->list,
                                   (PPLIST)&pnsParent->pnsFirstChild);
                }
            }
        }
    }

    if ((rc == STATUS_SUCCESS) && (ppns != NULL))
        *ppns = pns;

    EXIT(3, ("CreateNameSpaceObject=%x (pns=%x)\n", rc, pns));
    return rc;
}       //CreateNameSpaceObject

/***LP  FreeNameSpaceObjects - Free Name Space object and its children
 *
 *  ENTRY
 *      pnsObj -> name space object
 *
 *  EXIT
 *      None
 */

VOID LOCAL FreeNameSpaceObjects(PNSOBJ pnsObj)
{
    TRACENAME("FREENAMESPACEOBJECTS")
    PNSOBJ pns, pnsSibling, pnsParent;
  #ifdef DEBUGGER
    POBJSYM pos;
  #endif

    ENTER(3, ("FreeNameSpaceObjects(Obj=%s)\n", GetObjectPath(pnsObj)));

    ASSERT(pnsObj != NULL);

    for (pns = pnsObj; pns != NULL;)
    {
        while (pns->pnsFirstChild != NULL)
        {
            pns = pns->pnsFirstChild;
        }

        pnsSibling = NSGETNEXTSIBLING(pns);
        pnsParent = NSGETPARENT(pns);

        ENTER(4, ("FreeNSObj(Obj=%s)\n", GetObjectPath(pns)));
      #ifdef DEBUGGER
        //
        // If I am in the symbol list, get rid of it before I die.
        //
        for (pos = gDebugger.posSymbolList; pos != NULL; pos = pos->posNext)
        {
            if (pns == pos->pnsObj)
            {
                if (pos->posPrev != NULL)
                    pos->posPrev->posNext = pos->posNext;

                if (pos->posNext != NULL)
                    pos->posNext->posPrev = pos->posPrev;

                if (pos == gDebugger.posSymbolList)
                    gDebugger.posSymbolList = pos->posNext;

                FREESYOBJ(pos);
                break;
            }
        }
      #endif

        //
        // All my children are gone, I must die now.
        //
        ASSERT(pns->pnsFirstChild == NULL);

        if ((pns->ObjData.dwDataType == OBJTYPE_OPREGION) &&
            (((POPREGIONOBJ)pns->ObjData.pbDataBuff)->bRegionSpace ==
             REGSPACE_MEM))
        {
            ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL);

            if(((POPREGIONOBJ)pns->ObjData.pbDataBuff)->dwLen)
            {
                MmUnmapIoSpace((PVOID)
                               ((POPREGIONOBJ)pns->ObjData.pbDataBuff)->uipOffset,
                               ((POPREGIONOBJ)pns->ObjData.pbDataBuff)->dwLen);
            }
        }

        if (pns->pnsParent == NULL)
        {
            //
            // I am root!
            //
            ASSERT(pns == gpnsNameSpaceRoot);
            gpnsNameSpaceRoot = NULL;
        }
        else
        {
            ListRemoveEntry(&pns->list,
                            (PPLIST)&pns->pnsParent->pnsFirstChild);
        }
        //
        // Free any attached data buffer if any
        //
        FreeDataBuffs(&pns->ObjData, 1);
        //
        // Free myself
        //
        if (pns->dwRefCount == 0)
        {
            FREENSOBJ(pns);
        }
        else
        {
            pns->ObjData.dwfData |= DATAF_NSOBJ_DEFUNC;
            ListInsertTail(&pns->list, &gplistDefuncNSObjs);
        }
        EXIT(4, ("FreeNSObj!\n"));

        if (pns == pnsObj)
        {
            //
            // I was the last one, done!
            //
            pns = NULL;
        }
        else if (pnsSibling != NULL)
        {
            //
            // I have siblings, go kill them.
            //
            pns = pnsSibling;
        }
        else
        {
            ASSERT(pnsParent != NULL);
            pns = pnsParent;
        }
    }

    EXIT(3, ("FreeNameSpaceObjects!\n"));
}       //FreeNameSpaceObjects

/***LP  LoadDDB - Load and parse Differentiated Definition Block
 *
 *  ENTRY
 *      pctxt -> CTXT
 *      pdsdt -> DSDT block
 *      pnsScope -> current scope
 *      ppowner -> to hold new object owner
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

NTSTATUS
LOCAL
LoadDDB(
    PCTXT pctxt,
    PDSDT pdsdt,
    PNSOBJ pnsScope,
    POBJOWNER *ppowner
    )
{
    BOOLEAN freeTable = FALSE;
    NTSTATUS rc = STATUS_SUCCESS;

    if (!ValidateTable(pdsdt)) {

        rc = AMLI_LOGERR(
            AMLIERR_INVALID_TABLE,
            ("LoadDDB: invalid table %s at 0x%08x",
             NameSegString(pdsdt->Header.Signature), pdsdt)
            );
        freeTable = TRUE;

    } else {

        rc = NewObjOwner( gpheapGlobal, ppowner);
        if (rc == STATUS_SUCCESS) {

            if (pctxt->pcall == NULL) {

                rc = PushCall(pctxt, NULL, &pctxt->Result);

            }
            if (rc == STATUS_SUCCESS) {

              #ifdef DEBUGGER
                gDebugger.pbBlkBegin = pdsdt->DiffDefBlock;
                gDebugger.pbBlkEnd = (PUCHAR)pdsdt + pdsdt->Header.Length;
              #endif

                rc = PushScope(
                    pctxt,
                    pdsdt->DiffDefBlock,
                    (PUCHAR)pdsdt + pdsdt->Header.Length, pctxt->pbOp,
                    pnsScope, *ppowner, gpheapGlobal, &pctxt->Result
                    );

            }

        } else {

            freeTable = TRUE;

        }

    }

    if (freeTable) {

        pctxt->powner = NULL;
        FreeContext(pctxt);

    }
    return rc;
}       //LoadDDB

/***LP  LoadMemDDB - Load DDB from physical memory
 *
 *  ENTRY
 *      pctxt -> CTXT
 *      pDDB -> beginning of DDB
 *      ppowner -> to hold owner handle
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

NTSTATUS LOCAL LoadMemDDB(PCTXT pctxt, PDSDT pDDB, POBJOWNER *ppowner)
{
    TRACENAME("LOADMEMDDB")
    NTSTATUS rc = STATUS_SUCCESS;

    ENTER(3, ("LoadMemDDB(pctxt=%x,Addr=%x,ppowner=%x)\n",
              pctxt, pDDB, ppowner));

    if ((ghValidateTable.pfnHandler != NULL) &&
        ((rc = ((PFNVT)ghValidateTable.pfnHandler)(pDDB,
                                                   ghValidateTable.uipParam)) !=
         STATUS_SUCCESS))
    {
        rc = AMLI_LOGERR(AMLIERR_INVALID_TABLE,
                         ("LoadMemDDB: table validation failed (rc=%x)",
                          rc));
    }
    else
    {
        rc = LoadDDB(pctxt, pDDB, pctxt->pnsScope, ppowner);
    }

    EXIT(3, ("LoadMemDDB=%x (powner=%x)\n", rc, *ppowner));
    return rc;
}       //LoadMemDDB

/***LP  LoadFieldUnitDDB - Load DDB from a FieldUnit object
 *
 *  ENTRY
 *      pctxt -> CTXT
 *      pdataObj -> FieldUnit object
 *      ppowner -> to hold owner handle
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

NTSTATUS LOCAL LoadFieldUnitDDB(PCTXT pctxt, POBJDATA pdataObj,
                                POBJOWNER *ppowner)
{
    TRACENAME("LOADFIELDUNITDDB")
    NTSTATUS rc = STATUS_SUCCESS;
    POBJDATA pdataTmp;
    DESCRIPTION_HEADER *pdh;

    ENTER(3, ("LoadFieldUnitDDB(pctxt=%x,pdataObj=%x,ppowner=%x)\n",
              pctxt, pdataObj, ppowner));

    if ((pdataTmp = NEWODOBJ(pctxt->pheapCurrent, sizeof(OBJDATA))) == NULL)
    {
        rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,
                         ("LoadFieldUnitDDB: failed to allocate temp. object data"));
    }
    else if ((pdh = NEWBDOBJ(gpheapGlobal, sizeof(DESCRIPTION_HEADER))) == NULL)
    {
        FREEODOBJ(pdataTmp);
        rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,
                         ("LoadFieldUnitDDB: failed to allocate description header"));
    }
    else
    {
        PUCHAR pbTable;

        MEMZERO(pdataTmp, sizeof(OBJDATA));
        pdataTmp->dwDataType = OBJTYPE_BUFFDATA;
        pdataTmp->dwDataLen = sizeof(DESCRIPTION_HEADER);
        pdataTmp->pbDataBuff = (PUCHAR)pdh;

        if ((rc = ReadObject(pctxt, pdataObj, pdataTmp)) == STATUS_SUCCESS)
        {
            if ((pbTable = NEWBDOBJ(gpheapGlobal, pdh->Length)) == NULL)
            {
                rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,
                                 ("LoadFieldUnitDDB: failed to allocate buffer"));
            }
            else
            {
                MEMCPY(pbTable, pdh, sizeof(DESCRIPTION_HEADER));
                pdataTmp->dwDataLen = pdh->Length - sizeof(DESCRIPTION_HEADER);
                pdataTmp->pbDataBuff = pbTable + sizeof(DESCRIPTION_HEADER);

                if ((rc = ReadObject(pctxt, pdataObj, pdataTmp)) ==
                    STATUS_SUCCESS)
                {
                    if ((ghValidateTable.pfnHandler != NULL) &&
                        ((rc = ((PFNVT)ghValidateTable.pfnHandler)(
                                   (PDSDT)pbTable, ghValidateTable.uipParam)) !=
                         STATUS_SUCCESS))
                    {
                        rc = AMLI_LOGERR(AMLIERR_INVALID_TABLE,
                                         ("LoadFieldUnitDDB: table validation failed (rc=%x)",
                                          rc));
                    }
                    else
                    {
                        rc = LoadDDB(pctxt, (PDSDT)pbTable, pctxt->pnsScope,
                                     ppowner);
                    }
                }
                else if (rc == AMLISTA_PENDING)
                {
                    rc = AMLI_LOGERR(AMLIERR_FATAL,
                                     ("LoadFieldUnitDDB: definition block loading cannot block"));
                }

                FREEBDOBJ(pbTable);
            }
        }
        else if (rc == AMLISTA_PENDING)
        {
            rc = AMLI_LOGERR(AMLIERR_FATAL,
                             ("LoadFieldUnitDDB: definition block loading cannot block"));
        }

        FREEBDOBJ(pdh);
        FREEODOBJ(pdataTmp);
    }

    EXIT(3, ("LoadFieldUnitDDB=%x (powner=%x)\n", rc, *ppowner));
    return rc;
}       //LoadFieldUnitDDB

/***LP  UnloadDDB - Unload Differentiated Definition Block
 *
 *  ENTRY
 *      powner -> OBJOWNER
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

VOID LOCAL UnloadDDB(POBJOWNER powner)
{
    TRACENAME("UNLOADDDB")

    ENTER(3, ("UnloadDDB(powner=%x)\n", powner));
    //
    // Walk name space and remove all objects belongs to this DDB.
    //
    FreeObjOwner(powner, TRUE);
  #ifdef DEBUG
    {
        KIRQL   oldIrql;

        KeAcquireSpinLock( &gdwGHeapSpinLock, &oldIrql );
        gdwGHeapSnapshot = gdwGlobalHeapSize;
        KeReleaseSpinLock( &gdwGHeapSpinLock, oldIrql );
    }
  #endif

    EXIT(3, ("UnloadDDB!\n"));
}       //UnloadDDB

/***LP  EvalPackageElement - Evaluate a package element
 *
 *  ENTRY
 *      ppkg -> package object
 *      iPkgIndex - package index (0-based)
 *      pdataResult -> result object
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

NTSTATUS LOCAL EvalPackageElement(PPACKAGEOBJ ppkg, int iPkgIndex,
                                  POBJDATA pdataResult)
{
    TRACENAME("EVALPACKAGEELEMENT")
    NTSTATUS rc = STATUS_SUCCESS;

    ENTER(3, ("EvalPackageElement(ppkg=%x,Index=%d,pdataResult=%x)\n",
              ppkg, iPkgIndex, pdataResult));

    ASSERT(pdataResult != NULL);
    if (iPkgIndex >= (int)ppkg->dwcElements)
    {
        rc = AMLIERR_INDEX_TOO_BIG;
    }
    else
    {
        rc = DupObjData(gpheapGlobal, pdataResult, &ppkg->adata[iPkgIndex]);
    }

    EXIT(3, ("EvalPackageElement=%x (Type=%s,Value=%x,Len=%d,Buff=%x)\n",
             rc, GetObjectTypeName(pdataResult->dwDataType),
             pdataResult->dwDataValue, pdataResult->dwDataLen,
             pdataResult->pbDataBuff));
    return rc;
}       //EvalPackageElement

#ifdef DEBUGGER
/***LP  DumpNameSpaceObject - Dump name space object
 *
 *  ENTRY
 *      pszPath -> name space path string
 *      fRecursive - TRUE if also dump the subtree recursively
 *
 *  EXIT-SUCCESS
 *      returns STATUS_SUCCESS
 *  EXIT-FAILURE
 *      returns AMLIERR_ code
 */

LONG LOCAL DumpNameSpaceObject(PSZ pszPath, BOOLEAN fRecursive)
{
    TRACENAME("DUMPNAMESPACEOBJECT")
    NTSTATUS rc = STATUS_SUCCESS;
    PNSOBJ pns;
    char szName[sizeof(NAMESEG) + 1];

    ENTER(3, ("DumpNameSpaceObject(Path=%s,fRecursive=%x)\n",
              pszPath, fRecursive));

    if ((rc = GetNameSpaceObject(pszPath, NULL, &pns,
                                 NSF_LOCAL_SCOPE)) == STATUS_SUCCESS)
    {
        PRINTF("\nACPI Name Space: %s (%p)\n", pszPath, pns);
        if (!fRecursive)
        {
            STRCPYN(szName, (PSZ)&pns->dwNameSeg, sizeof(NAMESEG));
            DumpObject(&pns->ObjData, szName, 0);
        }
        else
            DumpNameSpaceTree(pns, 0);
    }
    else if (rc == AMLIERR_OBJ_NOT_FOUND)
    {
        PRINTF(MODNAME "_ERROR: object %s not found\n", pszPath);
    }

    EXIT(3, ("DumpNameSpaceObject=%x\n", rc));
    return rc;
}       //DumpNameSpaceObject

/***LP  DumpNameSpaceTree - Dump all the name space objects in the subtree
 *
 *  ENTRY
 *      pnsObj -> name space subtree root
 *      dwLevel - indent level
 *
 *  EXIT
 *      None
 */

VOID LOCAL DumpNameSpaceTree(PNSOBJ pnsObj, ULONG dwLevel)
{
    TRACENAME("DUMPNAMESPACETREE")
    PNSOBJ pns, pnsNext;
    char szName[sizeof(NAMESEG) + 1];

    ENTER(3, ("DumpNameSpaceTree(pns=%x,level=%d)\n", pnsObj, dwLevel));
    //
    // First, dump myself
    //
    STRCPYN(szName, (PSZ)&pnsObj->dwNameSeg, sizeof(NAMESEG));
    DumpObject(&pnsObj->ObjData, szName, dwLevel);
    //
    // Then, recursively dump each of my children
    //
    for (pns = pnsObj->pnsFirstChild; pns != NULL; pns = pnsNext)
    {
        //
        // If this is the last child, we have no more.
        //
        if ((pnsNext = (PNSOBJ)pns->list.plistNext) == pnsObj->pnsFirstChild)
            pnsNext = NULL;
        //
        // Dump a child
        //
        DumpNameSpaceTree(pns, dwLevel + 1);
    }

    EXIT(3, ("DumpNameSpaceTree!\n"));
}       //DumpNameSpaceTree

#endif  //ifdef DEBUGGER

 

Edited by Dietmar
Link to comment
Share on other sites

@Damnation

Hi,

I just build for you the same delay acpi.sys for XP SP3, free version.

Dont know, if it will work.

What it is doing is, to slow down the boot phase of XP for any important method,

so it has for sure an effect but dont know, if this USB bug is time related.

In any case, in 10 years we will need it :)

Dietmar

https://ufile.io/2vfhm7ze

Link to comment
Share on other sites

@Dietmar

Sorry for not getting back to you sooner.

Unfortunately, your delay acpi.sys did not show any change in behaviour for the USB 3.0 on threadripper.

I do still think it's an ACPI issue though - my B550 Steel Legend has the exact same 149C controller in it and it works fine in XP on there. So something in my Threadripper DSDT is causing the issue.

Not to worry though, I've worked around the issue with a separate USB 3.0 card so it doesn't bother me all that much now.

Link to comment
Share on other sites

@Damnation

I think, that the crazy 149C controller sits on the cpu chip itself. On my boards, the onboard 149C work always, but not those in cpu chip.

I see the strange behavior, that with one Ryzen Model the 149C on chip works and with other shows nearly the same symptoms as yours.

What you can do is, to compare the DSDTs of both motherboards, if the USB is declared different.

But I think, it is a really crazy AMD cpu problem

Dietmar

PS: Intel has the Timer Problem and the Big Powerconsumption on newer boards.

Edited by Dietmar
Link to comment
Share on other sites

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