Mov AX, 0xDEAD Posted July 22, 2022 Author Posted July 22, 2022 On 7/21/2022 at 10:28 PM, Damnation said: @Mov AX, 0xDEAD I see there is code for handling the "ACPI Processor Container" in the Windows 10 acpi.sys driver under AcpiProcessorContainerIrpDispatch can you make an implementation of this for XP acpi.sys please? @Damnation No need control this "new" device, patched intelppm.sys will run HLT or MWAIT CPU comand when windows want go to idle state This mean CPU itself will switch to power-saving mode until hardware interrupt event happens If CPU ignores HLT command - this is really bad cpu
Damnation Posted July 22, 2022 Posted July 22, 2022 @Mov AX, 0xDEAD Are you sure? I was thinking perhaps the ACPI driver can't control the CPU power state since the processors are now all inside this container device now instead of on their own outside the container like they are with my other machines, including my threadripper which does not have this issue. I really think this new ACPI0010 device is the cause as it's the only thing that's different from my other AMD systems. --- I tried an intelppm.sys that @Dietmar sent me earlier but it did not make any difference, still 140W idle. I noticed that windows 7 and later has an amdppm.sys driver - maybe this needs to be ported to XP? --- But if you're sure intelppm.sys will resolve the issue can you send me a patched version? --- P.S I also tried manually installing processor onto the "ACPI0007" devices in device manager, but I got code 10: cannot start, so I reverted
Damnation Posted July 22, 2022 Posted July 22, 2022 @Mov AX, 0xDEAD Could you try making this ACPI0010 device in a QEMU VM and see if it affects CPU power state? (assuming QEMU can do something like that) here it is in my CPU SSDT --- Quote * Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20220331 (32-bit version) * Copyright (c) 2000 - 2022 Intel Corporation * * Disassembling to symbolic ASL+ operators * * Disassembly of ssdt2.dat, Sat Jul 23 03:15:04 2022 * * Original Table Header: * Signature "SSDT" * Length 0x000003F1 (1009) * Revision 0x02 * Checksum 0x65 * OEM ID "ALASKA" * OEM Table ID "CPUSSDT" * OEM Revision 0x01072009 (17244169) * Compiler ID "AMI " * Compiler Version 0x01072009 (17244169) */ DefinitionBlock ("", "SSDT", 2, "ALASKA", "CPUSSDT", 0x01072009) { Scope (\_SB) { Device (PLTF) { Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID Name (_UID, One) // _UID: Unique ID Device (C000) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, Zero) // _UID: Unique ID } Device (C001) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, One) // _UID: Unique ID } Device (C002) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x02) // _UID: Unique ID } Device (C003) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x03) // _UID: Unique ID } Device (C004) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x04) // _UID: Unique ID } Device (C005) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x05) // _UID: Unique ID } Device (C006) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x06) // _UID: Unique ID } Device (C007) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x07) // _UID: Unique ID } Device (C008) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x08) // _UID: Unique ID } Device (C009) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x09) // _UID: Unique ID } Device (C00A) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x0A) // _UID: Unique ID } Device (C00B) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x0B) // _UID: Unique ID } Device (C00C) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x0C) // _UID: Unique ID } Device (C00D) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x0D) // _UID: Unique ID } Device (C00E) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x0E) // _UID: Unique ID } Device (C00F) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x0F) // _UID: Unique ID } Device (C010) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x10) // _UID: Unique ID } Device (C011) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x11) // _UID: Unique ID } Device (C012) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x12) // _UID: Unique ID } Device (C013) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x13) // _UID: Unique ID } Device (C014) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x14) // _UID: Unique ID } Device (C015) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x15) // _UID: Unique ID } Device (C016) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x16) // _UID: Unique ID } Device (C017) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x17) // _UID: Unique ID } Device (C018) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x18) // _UID: Unique ID } Device (C019) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x19) // _UID: Unique ID } Device (C01A) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x1A) // _UID: Unique ID } Device (C01B) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x1B) // _UID: Unique ID } Device (C01C) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x1C) // _UID: Unique ID } Device (C01D) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x1D) // _UID: Unique ID } Device (C01E) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x1E) // _UID: Unique ID } Device (C01F) { Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID Name (_UID, 0x1F) // _UID: Unique ID } } } }
Dietmar Posted July 22, 2022 Posted July 22, 2022 (edited) @Damnation I just make a try on the Asrock z690 Extreme board with 12900k cpu. The power consumption is with modded intelppm.sys and without always 44 Watt(!). This may be, because now processor.sys does not work correct any longer, shows in Device Manager "unknown device" instead of 12900k Dietmar This is with for power saving modded intelppm.sys from 26 December 2018 and this is with original intelppm.sys XP SP3 from 14 April 2008 Edited July 22, 2022 by Dietmar
R1600 Posted July 23, 2022 Posted July 23, 2022 Hi. Could you guys try RightMark CPU Clock Utility? It has CPU-Halting function with its own halting driver. I'm not sure if it would work on modern CPU, but I think it can give us some clues. http://blog.livedoor.jp/blackwingcat/archives/512703.html (use translator)
Damnation Posted July 23, 2022 Posted July 23, 2022 @Mov AX, 0xDEAD Could you write a command line test program to check if HLT or MWAIT CPU command is working correctly in XP?
Damnation Posted July 23, 2022 Posted July 23, 2022 This might be the same issue being described here - https://patchwork.kernel.org/project/qemu-devel/patch/1495446630-365062-2-git-send-email-eyakovlev@virtuozzo.com/
Damnation Posted July 23, 2022 Posted July 23, 2022 @Dietmar Will you be able to get your own ASRock B550 steel Legend for testing?
Damnation Posted July 23, 2022 Posted July 23, 2022 @Dietmar There is an Micro-ATX version of this board that is a bit cheaper, but even if more affordable there is a chance that it does not have this ACPI0010 device in it's CPU SSDT ACPI table that the full sized version does.
Damnation Posted July 24, 2022 Posted July 24, 2022 @Mov AX, 0xDEAD I want to try something - Have acpi.sys treat ACPI0010 device as a CPU Processor instead of just a generic device since it contains all the CPUs within it. Do you know how we could do this with acpi.sys source code?
Damnation Posted July 24, 2022 Posted July 24, 2022 this got ommitted from the main post by mistake I think patch.exe -Np1 -u -l -i sp1_to_sp3(ACP2).patch
Damnation Posted July 24, 2022 Posted July 24, 2022 missing functions needed for amdppm.sys with ntoskrn8.sys Quote KeEnumerateNextProcessor KeInitializeEnumerationContext KeCountSetBitsAffinityEx KeRemoveProcessorAffinityEx KeAddGroupAffinityEx NtQuerySystemInformationEx KeOrAffinityEx KeCopyAffinityEx KeCheckProcessorAffinityEx KeAddProcessorAffinityEx KeQueryActiveProcessorAffinity KeInitializeAffinityEx KeProcessorGroupAffinity
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