Contribute
Register

[HELP] Processor block missing from DSDT, require CPUS=1 to boot

Status
Not open for further replies.
Joined
Jan 25, 2012
Messages
648
Motherboard
ASUS P8P67-LE
CPU
i5-2400
Graphics
GTX 550TI
Mobile Phone
  1. Android
  2. iOS
Hello,

I have installed 10.8.3 on an Acer X3990 (I believe), i5-2300 (4 cores, 4 threads) on an OEM motherboard with a GT 430 for graphics instead of the HD2000. The DSDT I have created works fine so far however I must boot with CPUS=1. When comparing this DSDT to others I noticed in Scope (_PR) the processor definition block is missing, so when I tried to add the following:

Code:
[COLOR=#006600][FONT=Monaco]Scope (_PR)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]    {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU0, 0x01, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU1, 0x02, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU2, 0x03, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU3, 0x04, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU4, 0x05, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU5, 0x06, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU6, 0x07, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU7, 0x08, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]    }[/FONT][/COLOR]

It resulted in a KP saying:
Should have 4 threads, but only found 5 for Die 0.

The DSDT attached is the compiled DSDT that does work, apart from not having the processor block and must boot with cpus=1. I have noticed there are some strange methods inside where the processor block should be.. Should these be removed?

View attachment HTPC_DSDT.aml.zip

Regards,
Craig
 
It is kind of strange that you have Apple specific SSDT methods inside your Scope (_PR) in your DSDT.
Usually this kind of stuff goes in SSDT, not DSDT.

I'm assuming that is not your raw DSDT and instead is actually one you've patched...??

Hello,

I have installed 10.8.3 on an Acer X3990 (I believe), i5-2300 (4 cores, 4 threads) on an OEM motherboard with a GT 430 for graphics instead of the HD2000. The DSDT I have created works fine so far however I must boot with CPUS=1. When comparing this DSDT to others I noticed in Scope (_PR) the processor definition block is missing, so when I tried to add the following:

Code:
[COLOR=#006600][FONT=Monaco]Scope (_PR)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]    {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU0, 0x01, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU1, 0x02, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU2, 0x03, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU3, 0x04, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU4, 0x05, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU5, 0x06, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU6, 0x07, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        Processor (CPU7, 0x08, 0x00000410, 0x06)[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        {[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]        }[/FONT][/COLOR]
[COLOR=#006600][FONT=Monaco]    }[/FONT][/COLOR]

It resulted in a KP saying:
Should have 4 threads, but only found 5 for Die 0.

The DSDT attached is the compiled DSDT that does work, apart from not having the processor block and must boot with cpus=1. I have noticed there are some strange methods inside where the processor block should be.. Should these be removed?

View attachment 49560

Regards,
Craig
 
It is kind of strange that you have Apple specific SSDT methods inside your Scope (_PR) in your DSDT.
Usually this kind of stuff goes in SSDT, not DSDT.

I'm assuming that is not your raw DSDT and instead is actually one you've patched...??

This is the patched one, however the patch does no include anything relating to Apple specific SSDT methods. I do have a patched BIOS by samisnake but that shouldn't create the methods.

If you need me to reply with the raw one I can :)
 
This is the patched one, however the patch does no include anything relating to Apple specific SSDT methods. I do have a patched BIOS by samisnake but that shouldn't create the methods.

If you need me to reply with the raw one I can :)

You probably should... Also are you using an SSDT in /Extra/ssdt.aml

And... are you using DropSSDT=Yes, GeneratePStates=No, GenerateCStates=No?
 
You probably should... Also are you using an SSDT in /Extra/ssdt.aml

And... are you using DropSSDT=Yes, GeneratePStates=No, GenerateCStates=No?

Using DSDTEditor, here is the raw DSDT for the mobo
View attachment DSDT_raw.dsl.zip (Note I booted with DSDT=NULL so definitely the raw one)

Also;

  • There is no SSDT in /Extra
  • No mention of DropSSDT
  • and GenerateXStates are both=Yes
 
Using DSDTEditor, here is the raw DSDT for the mobo
View attachment 49755 (Note I booted with DSDT=NULL so definitely the raw one)

Also;

  • There is no SSDT in /Extra
  • No mention of DropSSDT
  • and GenerateXStates are both=Yes

I would trust a DSDT dump from Linux a bit more....

And .... You should try the config I mention (with addition of Processor defs).
 
Your DSDT has two OperationRegion's and uses a Load instruction to load the hidden ACPI tables. And I say hidden because they are invisible, cannot be found in IORegistryExplorer!

What you can do is to add the following custom SSDT to extract the table data:
Code:
[FONT=Menlo]/*[/FONT]
[FONT=Menlo] * Intel ACPI Component Architecture[/FONT]
[FONT=Menlo] * AML Disassembler version 20110316-64 [Mar 16 2011][/FONT]
[FONT=Menlo] * Copyright (c) 2000 - 2011 Intel Corporation[/FONT]
[FONT=Menlo] * [/FONT]
[FONT=Menlo] * Original Table Header:[/FONT]
[FONT=Menlo] *     Signature        "SSDT"[/FONT]
[FONT=Menlo] *     Length           0x000000DF (223)[/FONT]
[FONT=Menlo] *     Revision         0x01[/FONT]
[FONT=Menlo] *     Checksum         0x32[/FONT]
[FONT=Menlo] *     OEM ID           "APPLE "[/FONT]
[FONT=Menlo] *     OEM Table ID     "general"[/FONT]
[FONT=Menlo] *     OEM Revision     0x00001000 (4096)[/FONT]
[FONT=Menlo] *     Compiler ID      "INTL"[/FONT]
[FONT=Menlo] *     Compiler Version 0x20110316 (537985814)[/FONT]
[FONT=Menlo] */[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]DefinitionBlock ("ssdt.aml", "SSDT", 1, "APPLE ", "general", 0x00001000)[/FONT]
[FONT=Menlo]{[/FONT]
[FONT=Menlo]    External (\_PR.CPU1, DeviceObj)[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]    Scope (\_PR)[/FONT]
[FONT=Menlo]    {[/FONT]
[FONT=Menlo]        OperationRegion (SSDT, SystemMemory, 0xBF4D7C18, 0x038C)[/FONT]
[FONT=Menlo]        Field (SSDT, BufferAcc, Lock, Preserve)[/FONT]
[FONT=Menlo]        {[/FONT]
[FONT=Menlo]            DAT0, 0x1C60 // 0x038C * 8 (bytes)[/FONT]
[FONT=Menlo]        }[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]        OperationRegion (CSDT, SystemMemory, 0xBF4D8E18, 0x0084)[/FONT]
[FONT=Menlo]        Field (CSDT, BufferAcc, NoLock, Preserve)[/FONT]
[FONT=Menlo]        {[/FONT]
[FONT=Menlo]            DAT1, 0x420 // 0x0084 * 8 (bytes)[/FONT]
[FONT=Menlo]        }[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]        Scope (CPU1)[/FONT]
[FONT=Menlo]        {[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]            Method (_DSM, 4, NotSerialized)[/FONT]
[FONT=Menlo]            {[/FONT]
[FONT=Menlo]                If (LEqual (Arg2, Zero))[/FONT]
[FONT=Menlo]                {[/FONT]
[FONT=Menlo]                    Return (Buffer (One)[/FONT]
[FONT=Menlo]                    {[/FONT]
[FONT=Menlo]                        0x03[/FONT]
[FONT=Menlo]                    })[/FONT]
[FONT=Menlo]                }[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]                Return (Package (0x04)[/FONT]
[FONT=Menlo]                {[/FONT]
[FONT=Menlo]                    "SSDT",[/FONT]
[FONT=Menlo]                     DAT0,[/FONT]
[FONT=Menlo]                    "CSDT",[/FONT]
[FONT=Menlo]                     DAT1[/FONT]
[FONT=Menlo]                })[/FONT]
[FONT=Menlo]            }[/FONT]
[FONT=Menlo]        }[/FONT]
[FONT=Menlo]    }[/FONT]
[FONT=Menlo]}[/FONT]
Next step is to open IORegistrExplorer and look for two new properties called SSDT and CSDT under CPU1. Copy the data blocks and paste it into some hex editor. Save them and use iasl -d to decompile the tables. After this you'll know what you were missing ;)
 
Your DSDT has two OperationRegion's and uses a Load instruction to load the hidden ACPI tables. And I say hidden because they are invisible, cannot be found in IORegistryExplorer!

What you can do is to add the following custom SSDT to extract the table data:
Code:
[FONT=Menlo]/*[/FONT]
[FONT=Menlo] * Intel ACPI Component Architecture[/FONT]
[FONT=Menlo] * AML Disassembler version 20110316-64 [Mar 16 2011][/FONT]
[FONT=Menlo] * Copyright (c) 2000 - 2011 Intel Corporation[/FONT]
[FONT=Menlo] * [/FONT]
[FONT=Menlo] * Original Table Header:[/FONT]
[FONT=Menlo] *     Signature        "SSDT"[/FONT]
[FONT=Menlo] *     Length           0x000000DF (223)[/FONT]
[FONT=Menlo] *     Revision         0x01[/FONT]
[FONT=Menlo] *     Checksum         0x32[/FONT]
[FONT=Menlo] *     OEM ID           "APPLE "[/FONT]
[FONT=Menlo] *     OEM Table ID     "general"[/FONT]
[FONT=Menlo] *     OEM Revision     0x00001000 (4096)[/FONT]
[FONT=Menlo] *     Compiler ID      "INTL"[/FONT]
[FONT=Menlo] *     Compiler Version 0x20110316 (537985814)[/FONT]
[FONT=Menlo] */[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]DefinitionBlock ("ssdt.aml", "SSDT", 1, "APPLE ", "general", 0x00001000)[/FONT]
[FONT=Menlo]{[/FONT]
[FONT=Menlo]    External (\_PR.CPU1, DeviceObj)[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]    Scope (\_PR)[/FONT]
[FONT=Menlo]    {[/FONT]
[FONT=Menlo]        OperationRegion (SSDT, SystemMemory, 0xBF4D7C18, 0x038C)[/FONT]
[FONT=Menlo]        Field (SSDT, BufferAcc, Lock, Preserve)[/FONT]
[FONT=Menlo]        {[/FONT]
[FONT=Menlo]            DAT0, 0x1C60 // 0x038C * 8 (bytes)[/FONT]
[FONT=Menlo]        }[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]        OperationRegion (CSDT, SystemMemory, 0xBF4D8E18, 0x0084)[/FONT]
[FONT=Menlo]        Field (CSDT, BufferAcc, NoLock, Preserve)[/FONT]
[FONT=Menlo]        {[/FONT]
[FONT=Menlo]            DAT1, 0x420 // 0x0084 * 8 (bytes)[/FONT]
[FONT=Menlo]        }[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]        Scope (CPU1)[/FONT]
[FONT=Menlo]        {[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]            Method (_DSM, 4, NotSerialized)[/FONT]
[FONT=Menlo]            {[/FONT]
[FONT=Menlo]                If (LEqual (Arg2, Zero))[/FONT]
[FONT=Menlo]                {[/FONT]
[FONT=Menlo]                    Return (Buffer (One)[/FONT]
[FONT=Menlo]                    {[/FONT]
[FONT=Menlo]                        0x03[/FONT]
[FONT=Menlo]                    })[/FONT]
[FONT=Menlo]                }[/FONT]
[FONT=Menlo]
[/FONT]
[FONT=Menlo]                Return (Package (0x04)[/FONT]
[FONT=Menlo]                {[/FONT]
[FONT=Menlo]                    "SSDT",[/FONT]
[FONT=Menlo]                     DAT0,[/FONT]
[FONT=Menlo]                    "CSDT",[/FONT]
[FONT=Menlo]                     DAT1[/FONT]
[FONT=Menlo]                })[/FONT]
[FONT=Menlo]            }[/FONT]
[FONT=Menlo]        }[/FONT]
[FONT=Menlo]    }[/FONT]
[FONT=Menlo]}[/FONT]
Next step is to open IORegistrExplorer and look for two new properties called SSDT and CSDT under CPU1. Copy the data blocks and paste it into some hex editor. Save them and use iasl -d to decompile the tables. After this you'll know what you were missing ;)

Sorry for the long time replying,

So I should save the code you pasted as a SSDT.aml file in /Extras? Then once loaded bring up IORegistryExplorer and have a look through for the properties you mentioned.

Thank you kindly for your help :)

@Rehabman, that didn't help the system - it just got stuck very early on, IIRC it actually just kept restarting itself but thank you for the suggestion!
 
@Rehabman, that didn't help the system - it just got stuck very early on, IIRC it actually just kept restarting itself but thank you for the suggestion!

I wasn't suggesting you use your raw DSDT extracted under Linux to run OS X. I was asking you to post your raw DSDT from Linux, so I can look at it.
 
So I should save the code you pasted as a SSDT.aml file in /Extras? Then once loaded bring up IORegistryExplorer and have a look through for the properties you mentioned.
Correct.
 
Status
Not open for further replies.
Back
Top