Jump to content

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


Mov AX, 0xDEAD

Recommended Posts


12 hours ago, Dietmar said:

@Mov AX, 0xDEAD

Now here are the correct Acpi tables from the HP 255 g6 Bios F31 with CPU E2-9000e and Graphik R2 all on one chip.

Crazy, RW Everything has had a problem to extract them correct and so me,

@Dietmar

Some strange with second PRT4:

Quote

ba91ca22: Device(PRT3)OSNotifyCreate: 8A5931C0 (PRT3) = 00000103
ba91ca29: {
ba91ca29: Name(_ADR,0x3)
ba91ca30: Method(_UPC,0x0)
ba91ca3f: Method(_PLD,0x0)
ba91ca4e: }

ba91ca4e: Device(PRT7)OSNotifyCreate: 8A593320 (PRT7) = 00000103
ba91ca55: {
ba91ca55: Name(_ADR,0x7)
ba91ca5c: Method(_UPC,0x0)
ba91ca6b: Method(_PLD,0x0)
ba91ca7a: }

ba91ca7a: Device(PRT4)ACPI0007 def #1
OSNotifyCreate: 8A593480 (PRT4) = 00000103
ba91ca7a: {
ba91ca7a: Device(PRT4)ACPI0007 def #1
OSNotifyCreate: 8A5934C4 (PRT4) = 00000103
ba91ca7a: {
ba91ca7a: Device(PRT4)ACPI0007 def #1
OSNotifyCreate: 8A593508 (PRT4) = 00000103
 

DSDT:

Quote

                    Device (PRT7)
                    {
                        Name (_ADR, 0x07)  // _ADR: Address
                        Method (_UPC, 0, NotSerialized)  // _UPC: USB Port Capabilities
                        {
                            Return (SUPC (One, 0x03))
                        }

                        Method (_PLD, 0, NotSerialized)  // _PLD: Physical Location of Device
                        {
                            Return (SPLD (0x03, One))
                        }
                    }

                    Device (PRT4)
                    {
                        Name (_ADR, 0x04)  // _ADR: Address
                        Method (_UPC, 0, NotSerialized)  // _UPC: USB Port Capabilities
                        {
                            Return (SUPC (Zero, Zero))
                        }
                    }

PRT4 was processed few time in loop and no Name(_ADR,0x4) in log

There is two PRT4 in dsdt:

1) EHC1.RHUB.GHUB.PRT4

   Device (EHC1)
       {
       Name (_ADR, 0x00120000)

        Device (RHUB)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (GHUB)
                    {

                       Device (PRT1)...

                       Device (PRT2)...

                       Device (PRT3)...

                       Device (PRT4)

                          {

                               Name (_ADR, 0x04)

 

2) XHC0.RHUB.PRT4

    Device (XHC0)
       {

       Name (_ADR, 0x00100000)

        Device (RHUB)
                {
                    Name (_ADR, Zero)
                    Device (PRT1)

                    Device (PRT5)

                    Device (PRT2)

                    Device (PRT6)

                    Device (PRT3)

                    Device (PRT7)

                    Device (PRT4)

                        {

                             Name (_ADR, 0x04)

                    Device (PRT8)

 

1) Try to remove ACPI0007 patch from acpi sources (namedobj.c)

2) Try to remove second PRT4 definition from DSDT

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

On 2/9/2024 at 4:52 AM, Dietmar said:

@Mov AX, 0xDEAD

Do you have an Debug acpi.sys together with its acpi.pdb for XP SP3, that can look deeper into this, why the videodriver is not loaded,

@Dietmar

There is no new acpi.sys updates from me, v7 is still last, compile yourself as usual

Seems videodriver issue is not related with acpi, i see error on sxs.dl

Quote

SXS: BaseSrvSxsGetActivationContextGenerationFunction: LdrLoadDll(C:\WINDOWS\system32\sxs.dll) failed 0xc0000142
SXS: BasepCreateActCtx() Calling csrss server failed

 

Link to comment
Share on other sites

@Mov AX, 0xDEAD

Can this error

"SXS: BaseSrvSxsGetActivationContextGenerationFunction: LdrLoadDll(C:\WINDOWS\system32\sxs.dll) failed 0xc0000142
SXS: BasepCreateActCtx() Calling csrss server failed"

happen, because there is an error in the Thermal Device, that tells, that the temperature is too high?

When I install Minlogon.exe from XP Embedded instead of winlogon.exe, can I just disable this Thermal acpi device in Device Manager?

Or is it even possible to disable this Thermal acpi device in Registry?

thanks a lot

Dietmar

PS: Is there a possibility with Windbg to look deeper, why the sxs.dll fails to load?

Edited by Dietmar
Link to comment
Share on other sites

I notice,

that on the Lenovo m625q where XP SP3 with full Acpi Multiprocessor installs,

there is no Thermal Device at all, as I can see in Device Manager under running XP SP3 under System Devices.

But on the HP 255 g6 there are 2 Thermal Devices, as I can see in Device Manager under Win7 SP1.

ACPI\THERMALZONE\TSZ0

ACPI\THERMALZONE\TSZ2

It is under ACPI_HAL\PNP0C08 (motherboard devices).

 

Is it possiple to tell XP in TXT Setup, not to install those Thermal Devices

or is the only way to delete those 2 Thermal Devices in its DSDT

Dietmar

 

 

Link to comment
Share on other sites

I make a strange discovery on the HP 255 g6 notebook.

I read its full Bios out with EEpromer.

Then, with UEFI Tool, I extract its DSDT, delete the 2 Thermalzone Devices TSZ0 and TSZ2.

And the whole procedure, from where Thermalzone was called in DSDT.

Put this DSDT back into its original Bios and flash via EEPromer Revelprog IS.

Check everything 2 times. All seems ok.

But then, some LED blinks on the notebook, but screen stays dark.

I repeat the same with the original F31 Bios from HP homepage.

Delete also TSZ0 and TST2 and the whole procedure, that called them.

Same result. I also put out Bios batterie, does not help.

This calling procedure is not present on the Lenovo m625q, so I thought, it can be deleted.

But "VGA" appears in this procedure.

Again, Notebook shows some LEDs blinking, but no screen.

Then, I flash back the original F31 Bios from HP homepage.

When I switch on the compi, I get a small box, where something tells me, that it is flashing parts of Bios back.

Hm, is the crazy TPM device doing that?

For me it is strange as much as possible, that if the screen can be seen in the very first switch on notebook,

depends on DSDT:wacko:.

Now I think, that HP installed some mechanismus, to prevent editing Bios.

Next step is, to load DSDT only at boottime of XP

Dietmar

 

This is, what I delete in DSDT

    Scope (_TZ)
    {
        ThermalZone (TSZ0)
        {
            Name (REGN, "Processor Thermal Zone")
            Method (FMAX, 0, NotSerialized)
            {
                Return ((\_SB.PCI0.LPC0.EC0.FNMX * 0x64))
            }

            Method (FMIN, 0, NotSerialized)
            {
                Return ((\_SB.PCI0.LPC0.EC0.FNMN * 0x64))
            }

            Method (FRSP, 0, NotSerialized)
            {
                Return ((\_SB.PCI0.LPC0.EC0.FRPM * 0x64))
            }

            Method (FSSP, 1, NotSerialized)
            {
                \_SB.PCI0.LPC0.EC0.FNSW = One
                \_SB.PCI0.LPC0.EC0.FWPM = (!Arg0 & One)
                \_SB.PCI0.LPC0.EC0.FNSW = Zero
            }

            Method (_CRT, 0, Serialized)  // _CRT: Critical Temperature
            {
                Return (0x1388)
            }

            Method (_HOT, 0, Serialized)  // _HOT: Hot Temperature
            {
                If ((SR6W == 0x6C))
                {
                    Return (0x0E62)
                }
                Else
                {
                    Return (0x0E8A)
                }
            }

            Method (_TMP, 0, Serialized)  // _TMP: Temperature
            {
                If ((\_SB.PCI0.LPC0.EC0.CPUT > CMST))
                {
                    CMST = \_SB.PCI0.LPC0.EC0.CPUT
                }

                Return ((0x0AAC + (\_SB.PCI0.LPC0.EC0.CPUT * 0x0A)))
            }

            Method (_PSV, 0, Serialized)  // _PSV: Passive Temperature
            {
                Return ((0x0AAC + (\_SB.PCI0.LPC0.EC0.CPTP * 0x0A)))
            }
        }

        ThermalZone (TSZ2)
        {
            Name (BOTP, Zero)
            Method (_HOT, 0, Serialized)  // _HOT: Hot Temperature
            {
                Return (0x0E30)
            }

            Method (_TMP, 0, Serialized)  // _TMP: Temperature
            {
                Local1 = (FFAL | PDPN)
                If ((Local1 || BOTP))
                {
                    Return (0x0E30)
                }
                Else
                {
                    Return (0x0B74)
                }
            }
        }
    }

    Scope (_SB.PCI0.LPC0.EC0)
    {
        OperationRegion (DBG1, SystemIO, 0xB0, 0x02)
        Field (DBG1, WordAcc, NoLock, Preserve)
        {
            PB0,    8, 
            PB1,    8
        }

        Method (_Q11, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x11
            Notify (^^^VGA.LCD, 0x87) // Device-Specific
        }

        Method (_Q12, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x12
            Notify (^^^VGA.LCD, 0x86) // Device-Specific
        }

        Method (_Q13, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x13
            If (ECON)
            {
                THSD = One
                Notify (\_TZ.TSZ0, 0x80) // Thermal Status Change
            }
        }

        Method (_Q14, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x14
            If (ECON)
            {
                If (!FANE)
                {
                    FFAL = One
                }

                Notify (\_TZ.TSZ2, 0x80) // Thermal Status Change
            }
        }

        Method (_Q15, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x15
            If (IGDS)
            {
                Notify (LID, 0x80) // Status Change
            }
        }

        Method (_Q1D, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x1D
            Local0 = PCVL /* \_SB_.PCI0.LPC0.EC0_.PCVL */
            \_PR.C000.PPCV = Local0
            Notify (\_PR.C000, 0x80) // Performance Capability Change
        }

        Method (_Q1E, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x1E
            ^^^VGA.AFN2 (DTCL, 0x02)
        }

        Method (_Q24, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x24
            Debug = "=====QUERY_24====="
            Sleep (0x03E8)
            Notify (BAT1, 0x80) // Status Change
        }

        Method (_Q25, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x25
            Debug = "=====QUERY_25====="
            Sleep (0x03E8)
            Notify (BAT1, 0x81) // Information Change
            Sleep (0x03E8)
            Notify (BAT1, 0x80) // Status Change
        }

        Method (_Q26, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x26
            Local0 = (CPBC & 0x80)
            If ((Local0 == 0x80))
            {
                PB1 = 0x48
                PB0 = 0xC7
            }
            Else
            {
                PB1 = 0x49
                PB0 = 0xC7
            }
        }

        Method (_Q37, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x37
            Debug = "=====QUERY_37====="
            Notify (ACAD, 0x80) // Status Change
            Sleep (0x03E8)
            Notify (BAT1, 0x80) // Status Change
            ^^^^WMID.WEI1 = 0x03
            ^^^^WMID.WED1 = Zero
            Notify (WMID, 0x80) // Status Change
            PWRS = One
        }

        Method (_Q38, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x38
            Debug = "=====QUERY_38====="
            Notify (ACAD, 0x80) // Status Change
            Sleep (0x03E8)
            Notify (BAT1, 0x80) // Status Change
            PWRS = Zero
        }

        Method (_Q40, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x40
            If ((((OSYS == 0x07DC) || (OSYS == 0x07DD)) || (OSYS == 0x07DF)))
            {
                Notify (WLBU, 0x80) // Status Change
            }
            Else
            {
            }
        }

        Method (_Q42, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x42
            ^^^^WMID.ESDT ()
        }

        Method (_Q44, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x44
            If (ECON)
            {
                THSD = One
                \_TZ.TSZ2.BOTP = One
                Notify (\_TZ.TSZ2, 0x80) // Thermal Status Change
            }
        }

        Method (_Q45, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x45
            Debug = "=====QUERY_45====="
            If (ECON)
            {
                PDPN = One
                Notify (\_TZ.TSZ2, 0x80) // Thermal Status Change
            }
        }

        Method (_Q4B, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            P80H = 0x4B
            ECSF = One
            CFBE = One
        }
    }

 

Edited by Dietmar
Link to comment
Share on other sites

With DSDT.aml now loaded at boottime of XP SP3, ThermalZone entries deleted in DSDT,

now no error message about too hot cpu.

But still the same Bsod very late in boot process, that

sxs.dll failed 0xc0000142

Dietmar

Edited by Dietmar
Link to comment
Share on other sites

@Mov AX, 0xDEAD

Hi,

I think, that I understand, from what this

sxs.dll failed 0xc0000142

comes.

It has nothing to do with the HP notebook.

In 2008 I build a generic XP SP1, that can boot any compi.

And there I noticed a funny thing. This works only, until it comes to boot with winlogon.

So I changed this winlogon agains minlogon from XP Embedded.

And now the same happens: Because I build this XP SP3 on the Lenovo m625q with the same cpu on a chip,

it is NOT complete identic hardware with the HP 255 g6.

And exact this happens, when winlogon tries to start.

May be there would be a chance, when I succeed to transfer this XP to the HP direct after TXT-Setup of XP

Dietmar

 

EDIT: For the HP 255 g6 notebook this means, that there are for XP SP3

incompatible settings for the graphikcard in Bios.

And an external graphikcard is for this HP notebook without sense.

Process.Thread : 00000194.00000198 (csrss.exe) is trying to create key: 
	ObjectAttributes = BA2A790C
The caller should not rely on data written to the registry after shutdown...

*** Fatal System Error: 0x000000b4
                       (0x8A5F1108,0x8A601000,0x8A6FF000,0x00050000)

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 XP 2600 x86 compatible target at (Sun Feb 11 19:33:29.468 2024 (UTC + 1:00)), ptr64 FALSE
Loading Kernel Symbols
...............................................................
.................
Loading User Symbols
.............
Loading unloaded module list
................
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck B4, {8a5f1108, 8a601000, 8a6ff000, 50000}

Probably caused by : win32k.sys ( win32k!DrvDriverFailure+1af )

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

nt!RtlpBreakWithStatusInstruction:
8052b724 cc              int     3
0: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

VIDEO_DRIVER_INIT_FAILURE (b4)
The system was not able to go into graphics mode because no display drivers
were able to start.  This usually occurs if no video miniport drivers load
successfully.
Arguments:
Arg1: 8a5f1108, Driver failure data.
Arg2: 8a601000, Graphics device list.
Arg3: 8a6ff000, Graphics device list data.
Arg4: 00050000, Possible cause of the bugcheck.

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


DEFAULT_BUCKET_ID:  DRIVER_FAULT

BUGCHECK_STR:  0xB4

PROCESS_NAME:  csrss.exe

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

LAST_CONTROL_TRANSFER:  from 804f8e95 to 8052b724

STACK_TEXT:  
ba2a77dc 804f8e95 00000003 ba2a7b38 00000000 nt!RtlpBreakWithStatusInstruction
ba2a7828 804f9a80 00000003 ba2a7d24 bbdd15dc nt!KiBugCheckDebugBreak+0x19
ba2a7c08 804f9fcf 000000b4 8a5f1108 8a601000 nt!KeBugCheck2+0x574
ba2a7c28 bf91cfa7 000000b4 8a5f1108 8a601000 nt!KeBugCheckEx+0x1b
ba2a7d30 ba2a7d64 0015fd98 bf8ab5af 00000001 win32k!DrvDriverFailure+0x1af
WARNING: Frame IP not in any known module. Following frames may be wrong.
ba2a7d48 bf8ab620 ba2a7d64 80541818 00050000 0xba2a7d64
ba2a7d50 80541818 00050000 00000060 00000064 win32k!NtUserInitialize+0x87
ba2a7d50 7eb3e514 00050000 00000060 00000064 nt!KiSystemServicePostCall
0015fd80 75b686df 75b68669 00050000 00000060 ntdll!KiFastSystemCallRet
0015fdb0 75b43472 00000000 00000000 0016274d winsrv!NtUserInitialize+0xc
0015fe20 75b4301b 0016272a 00162731 00000003 CSRSRV!CsrLoadServerDll+0x1a0
0015ff74 75b430f3 0000000a 001624f0 7eb3dc9e CSRSRV!CsrParseServerCommandLine+0x2d6
0015ff88 4a68115d 0000000a 001624f0 00000005 CSRSRV!CsrServerInitialization+0x95
0015ffa8 4a6818d7 0000000a 001624f0 0016251c csrss!main+0x4f
0015fff4 00000000 7ffde000 000000c8 000001ad csrss!NtProcessStartup+0x1d2


STACK_COMMAND:  kb

FOLLOWUP_IP: 
win32k!DrvDriverFailure+1af
bf91cfa7 90              nop

SYMBOL_STACK_INDEX:  4

SYMBOL_NAME:  win32k!DrvDriverFailure+1af

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: win32k

IMAGE_NAME:  win32k.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  5c93004e

FAILURE_BUCKET_ID:  0xB4_win32k!DrvDriverFailure+1af

BUCKET_ID:  0xB4_win32k!DrvDriverFailure+1af

ANALYSIS_SOURCE:  KM

FAILURE_ID_HASH_STRING:  km:0xb4_win32k!drvdriverfailure+1af

FAILURE_ID_HASH:  {28d7d534-884c-fc26-c175-02817df2d217}

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

 

Edited by Dietmar
Link to comment
Share on other sites

Hi,

I want to make a new, working DSDT for the HP 255 g6 board.

Simply kicking that part out, which gives the Bsod for the VGA device.

Therefor I use the DSDT loader at boot time from @Mov AX, 0xDEAD.

So, only question is, what I have to kick out in the DSDT from the HP.

Here I put into also the working DSDT from Lenovo.

A lot of parts in their DSDT for the VGA device are the same,

but for example a strange UBBL device appears only in DSDT VGA  device of HP.

So, any idea is welcome. New DSDT is prepared in a second for testing

Dietmar

 

DSDT for HP 255 g6 (Bsod VGA) and Lenovo m625q (works)

https://ufile.io/sv3fao82

 

Edited by Dietmar
Link to comment
Share on other sites

I apologize for coming back.

But I need Windows XP that can be installed on Asus z790, I don't know how to use this methods

Previously, I installed Windows XP with SATA on a Sony laptop vpcf215/fd with 2nd generation CPU core i7 2630

Of course, normal Windows gave error 7B, but Windows XP SATA was installed

but this mainbord is not allow to install windows xp any way.

I think the motherboard resists the installation of Windows XP due to the lack of an IDE connector. What do you think?

Because the motherboard resists Windows XP SATA even version 2023 with A5 and 7B errors.

Link to comment
Share on other sites

@Mov AX, 0xDEAD

I make a try with editing the DSDT table from the HP 255 g6.

Then I try to load this edited table with your ACPI Patcher at boot time.

But even with the smallest change in its DSDT I always get  Bsod 0x7E (C0000005,..),

meaning, that something is written at the wrong adress in memory.

When I load its original dsdt.bin table, this Bsod does not appear.

Then I make a try with using all the DSDT and SSDT tables from the Lenovo m625q.

Same Bsod 0x7E (C0000005,..).

When I also try to load the FACS table from Lenovo, I get message

ACPI Patcher Error: FACS addr e7b44000 is in diff reserved memory

 

Any idea, how to overcome this Bsod 0x7E (C0000005,..)?

Dietmar

PS: Here are the original and modded DSDT

https://ufile.io/numho8vo

 

 

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