Jump to content

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


Mov AX, 0xDEAD

Recommended Posts

2 hours ago, Damnation said:

@Mov AX, 0xDEAD

I recall from my linux boot logs (sorry I don't have it to share right now) WT1A was not the only duplicate device, there were about 10 other duplicates or so.

every device in ssdt7 is dublicate

2 hours ago, Damnation said:

I wounder how Windows 8.1 handles duplicates? does it just ignore them? or handle them some other way?

it has some unknow workaround, CreateNameSpaceObject() itself generate rc=ERROR, but then this error is bypassed somewhere at parent call, you need setup kernel remote connection in W8.1 if you want to know, but it doesnt help much to fix it in XP because debuglog will not show how errors was ignored

Link to comment
Share on other sites


@Andalu

Your bug reproduced in VirtualBox on this custom code:

Quote

Device (PCIX)
            {
                Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                Name (_UID, 0x02)  // _UID: Unique ID
                 ...
            }

            Device (SBRG)
            {
                  Device (PCIE)
                {
                    Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                    Name (_UID, 0x02)  // _UID: Unique ID

PNP0C02\2 converted to PNP0C02\4&xxxx&yyyyy same way as yours.

It is generic DSDT error, all _HID+_UID combinations must be unique

If doubled devices live on same parent path, we get BSOD 0xA5 (0x0000000D, ..) instead yellow mark

VirtualBox_WinXP_vbox_25_04_2022_22_08_20.png

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

@Mov AX, 0xDEAD

I would like to try and find the exact cause of the USB\RESET_FAILURE problem for devices connected to the HUB on the 149C USB3 controller.

I don't know where to start going about this with my debugging setup though, would you be willing to help me do this?

I don't think this will be easy, as XP reports USB3 Controller and Hub as working normally, only the devices themselves report a problem.

Link to comment
Share on other sites

25 minutes ago, Damnation said:

@Mov AX, 0xDEAD

I would like to try and find the exact cause of the USB\RESET_FAILURE problem for devices connected to the HUB on the 149C USB3 controller.

I don't know where to start going about this with my debugging setup though, would you be willing to help me do this?

Kernel debug doesnt help you, you have hardware(or DSDT) related issue, same USB driver works on most other controllers without same issue

Link to comment
Share on other sites

57 minutes ago, Damnation said:

@Mov AX, 0xDEAD

Can you recreate this error by creating a duplicate object with the same name in a QEMU VM SSDT?

VirtualBox is much better, it allows load too any custom DSDT/SSDT code (based on original table). Yes, i can create any doubled devices.

57 minutes ago, Damnation said:

Option 1 worked - no more A5 0x11 0x08 BSOD.

Good, i will check in VM how _HID/... created when no parent device

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

11 hours ago, Mov AX, 0xDEAD said:

Good, i will check in VM how _HID/... created when no parent device

@Damnation

option 1) is not optimal, it skips creating same name, but all childs override existing ones from first device

First definition:

Quote

Device (PCIX)
            {
                Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                Name (_UID, 0x03)  // _UID: Unique ID
                Name (CRS, ResourceTemplate ()

double definition:

Quote

Device (PCIX)
            {
                Name (_HID, EisaId ("PNP0C03") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                Name (_UID, 0x0202)  // _UID: Unique ID

after skipping BSOD we have in log many lines with

Quote

AMLI: 8134dda8: EvalNameSpaceObject(\_SB.PCI0.PCIX._UID) =0x202
..
AMLI: EvalObject(\_SB.PCI0.PCIX._UID)=Integer(:Value=0x00000202[514])
...
ACPI\PNP0C03-202

and no lines with ACPI\PNP0C02-3

Link to comment
Share on other sites

53 minutes ago, Damnation said:

@Mov AX, 0xDEAD

Could there be some hints in the linux kernel source for how to handle this properly?

https://github.com/torvalds/linux/search?q=AE_ALREADY_EXISTS

ACPI tables on this board are garbage and out of specification, XP acpi.sys can't handle this crap properly

i have no other solution, use workaround with commenting 3 lines, tables are still crazy, but it worlks somehow

Link to comment
Share on other sites

2 hours ago, Damnation said:

@Mov AX, 0xDEAD

Yeah, I'm going with commenting out those 3 lines as a sub-optimal solution.

I'll email gigabyte about it and maybe they'll fix it, I wouldn't get my hopes up though, they'll likely just say to RMA my board rather than giving an actual solution.

Update: I found way to totally skip doubled device, just to change AML current Opcode pointer to next scope/device/anything

First normal definition:

Quote

            Device (PCIX)
            {
                Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                Name (_UID, 0x03)  // _UID: Unique ID
                Name (CRS, ResourceTemplate ()
                {
                    Memory32Fixed (ReadOnly,
                        0xDC000000,         // Address Base
                        0x00004000,         // Address Length
                        _Y50)
                })
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Return (CRS)
                }
            }

doubled definition PCIX

Quote

    Scope (_SB)
    {
        Scope (PCI0)
        {
            Device (PCIX)
            {
                Name (_HID, EisaId ("PNP0C03") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                Name (_UID, 0x0202)  // _UID: Unique ID
                Name (CRS, ResourceTemplate ()
                {
                    Memory32Fixed (ReadOnly,
                        0xDC000000,         // Address Base
                        0x00004000,         // Address Length
                        _Y50)
                })
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Return (CRS)
                }
            }
        }
    }
    
    Scope (_SB)
    {
        Scope (PCI0)
        {
            Device (PCIW)
            {
                Name (_HID, EisaId ("PNP0C04") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                Name (_UID, 0x0404)  // _UID: Unique ID

processing of second definition:

Quote

f96e2790: Scope(_SB_)
f96e2797: {
f96e2797: Scope(PCI0)
f96e279e: {
f96e279e: Device(PCIX)
f96e27da: }
f96e27da: }
f96e27da: Scope(_SB_)
f96e27e1: {
f96e27e1: Scope(PCI0)
f96e27e8: {
f96e27e8: Device(PCIW)OSNotifyCreate: 81331A00 (PCIW) = 00000103
f96e27ef: {
f96e27ef: Name(_HID,0x40cd041)
f96e27f9: Name(_UID,0x404)

as you see, no any PCIX's childs, it jumps to next object PCIW

Edited by Mov AX, 0xDEAD
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...