Dietmar Posted January 3, 2023 Posted January 3, 2023 @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
Mov AX, 0xDEAD Posted January 3, 2023 Author Posted January 3, 2023 (edited) 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 January 3, 2023 by Mov AX, 0xDEAD 1
Dietmar Posted January 3, 2023 Posted January 3, 2023 (edited) @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 January 5, 2023 by Dietmar
Dietmar Posted January 3, 2023 Posted January 3, 2023 @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
Mov AX, 0xDEAD Posted January 3, 2023 Author Posted January 3, 2023 (edited) 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 January 3, 2023 by Mov AX, 0xDEAD 1
Dietmar Posted January 3, 2023 Posted January 3, 2023 @Mov AX, 0xDEAD I have just done it^^. With connected windbg and this new build free acpi.sys boottime is about 25min. Without connected windbg I am still waiting but no Bsod. Because Bsod happens always VERY early I think, that it will work Dietmar
Dietmar Posted January 3, 2023 Posted January 3, 2023 (edited) Yesssssssaaaaaaaaa Ты действительно самый лучший! @Mov AX, 0xDEAD What a crazy hard work. Here it is, XP SP2 bit64 on Gigabyte z690 UD DDR4 with free acpi.sys without any Debugger Dietmar Edited January 3, 2023 by Dietmar 5
Damnation Posted January 4, 2023 Posted January 4, 2023 @Dietmar I'm curious to see if adding this kind of delay would help with the USB problem on my threadripper system. Can I get a 32-bit build from you to test this with?
Mov AX, 0xDEAD Posted January 4, 2023 Author Posted January 4, 2023 (edited) 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 January 4, 2023 by Mov AX, 0xDEAD
Dietmar Posted January 5, 2023 Posted January 5, 2023 (edited) @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 January 5, 2023 by Dietmar
Dietmar Posted January 5, 2023 Posted January 5, 2023 @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
Dietmar Posted January 5, 2023 Posted January 5, 2023 I just get confirmation, that the delay acpi.sys for XP SP2 bit64 works also on z790 boards Dietmar
Damnation Posted January 7, 2023 Posted January 7, 2023 @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.
Dietmar Posted January 7, 2023 Posted January 7, 2023 (edited) @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 January 7, 2023 by Dietmar
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now