Jump to content

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


Mov AX, 0xDEAD

Recommended Posts

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

Link to comment
Share on other sites


@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

Link to comment
Share on other sites

@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
            }
        }
    }
}

 

 

Link to comment
Share on other sites

@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

20220722-212913.jpg

 

and this is with original intelppm.sys XP SP3 from 14 April 2008

20220722-213650.jpg

 

 

Edited by Dietmar
Link to comment
Share on other sites

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

Link to comment
Share on other sites

missing functions needed for amdppm.sys with ntoskrn8.sys

 

Quote

KeEnumerateNextProcessor
KeInitializeEnumerationContext
KeCountSetBitsAffinityEx
KeRemoveProcessorAffinityEx
KeAddGroupAffinityEx
NtQuerySystemInformationEx
KeOrAffinityEx
KeCopyAffinityEx
KeCheckProcessorAffinityEx
KeAddProcessorAffinityEx
KeQueryActiveProcessorAffinity
KeInitializeAffinityEx
KeProcessorGroupAffinity

 

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