Jump to content

[Help] for solving DSDT (french)


13 posts in this topic

Recommended Posts

Hi all !
I've a laptop from ASUS (K73SD) without Bluetooth.
Processor : i5-2450M @2,4Ghz (Turbo Boost 2.0 @3,1Ghz) || 2Core / 4Thread.

Chipset : HM65 Sandy Bridge.
Ram : 2x4Go DDR3-1600 (@1333Mhz maybe).
HDD : 2x500Go.
GPU : HD3000 & 610M 1Gb || HDMI + VGA.
Audio : ALC269 Realtek.

Ethernet : AR8151 || Wireless : AR9485.
With Bios UEFI.

I wan't to make a hackintosh installation with Clover EFI.
I've maked a DSDT with latest iasl from new and clean windows, and i've fixed lot of error but I have one last error.

_REG has no corresponding operation region


I've attached in a zip file, my dsdt with 1error, and the original dsdt.
Compiled with IASL 20130725. dsdt.zip

Thanks in advance, and sorry for my bad english :)

Link to comment
Share on other sites

It's a warning, not an error. Anyway, the easiest way to get rid of it is to remove the function entirely and the REGF variable it uses.


Like the error message says, it only makes sense for the _REG function to be present when there is a OperationRegion in the same scope, and ASUS DSDTs do not keep one in the IDE0 device...

Link to comment
Share on other sites

Okay! so my dsdt is good? I can now patch it?!
Do you have any advice about patching, or links that could guide me?

Edit: I've 68remarks.

Control Method should be made Serialized

Link to comment
Share on other sites

Do you have any advice about patching, or links that could guide me?

Honestly, I've used so many sources to get my DSDT to where it is. EmlyDinesh initially patched it for me (much appreciated because when I first started, I applied pretty much every patch that I came across), then I took some things from RehabMan's GitHub DSDT repository for HP ProBooks, some things from other DSDTs and some things I fixed myself (e.g. I had an issue that if I went to sleep, took out the charger and resumed again, the laptop would still think it was charging, so I had it run the "AC adapter inserted/removed" routine on wake if the actual AC adapter state was different from what it had stored).


For what it's worth, here are the changes to my DSDT for my Asus laptop (not all of these will be applicable to your Asus laptop but it's a good start):

EDIT: attached as posting the diff inline was killing Chrome...


List of changes in mine so that you can tell if you will need any of these when the time comes:

  • BUS0 device inserted. What does it do? No idea. (It removes a warning from the dmesg, at least, I believe.) Who came up with it? No idea.
  • HPET IRQ fixes (IRQs removed from HPET and TIMR, but I did leave the IRQ that was in IPIC as per Slice's suggestion [but I find it doesn't really make a difference]). No idea who came up with these IRQs. I took the patch from RehabMan's repo. Funnily enough, I need this so I can play DVDs with the AC adapter inserted...
  • Length of HPET device reduced. Usually done for fixing the CMOS resets that happen when you go to sleep, but I needed it to go to sleep in the first place! No idea who came up with it.
  • SMCD device added for fan readings in HWMonitor. I have Jingu, zprood and The King to thank for this one.
  • Cosmetic: remove _REG from IDE0 device and give it Mac device names
  • Cosmetic: rename _T_* to TT_* to remove warnings
  • Insert Apple device IDs etc. into EHCI devices to stop them from waking up the laptop in sleep mode. I think this originated from Project OSX but I'm not sure.
  • (I use PikeRAlpha's "Return Buffer() { 0x03 }" method for my device-property injections rather than Apple's DTGP for reasons PikeRAlpha explains in his post detailing this)
  • Since I'm using an AR9285 in my laptop, insert IDs so that OS X sees the card in AirPort without having to modify kexts. I believe The King came up with the patch first but RehabMan changed the device-id for better compatibility with more OS X versions. I injected "compatible" as per nyolc8's and oldnapalm's topic here on InsanelyMac for Mavericks compatibility
  • Inject device IDs for the XHCI device by EmlyDinesh, for the same reason that this was done for EHCI devices. I don't think this is needed if you're using GenericUSBXHCI, but it wasn't around when I started Hackintoshing with this laptop and the two (rubbish) USB 3.0 drivers that purported compatibility with the ASMedia chipset then did need this patch
  • Inject properties for Ethernet device. I imagine it plays a part in me always being able to access iCloud, Messages etc. right after a fresh install. No idea who came up with this, but EmlyDinesh customized it for me. I changed the slot name to match the root port it was attached to, but this is cosmetic and I'm not even sure if it's right. I also used some values from a proper MacBookPro8,2
  • GFX0 (the one under PCI0, not PEGP, which is the NVIDIA card!) renamed to IGPU so that AppleGraphicsPowerManagement loads without having to change the kext. I took this from RehabMan's GitHub
  • Cosmetic: Removal of iasl remarks by changing the NonSerialized methods that it warned me about to Serialized
  • Injection of HD 3000 properties, which I need to get graphics working (with QE/CI)! DualLink is needed because my screen resolution is higher than 1366x768. I'm lazy and inject AAPL,ig-platform-id which is used by the HD 4000 kexts but actually allows the HD 3000 graphics kexts to load for some reason, but the proper way would be injecting AAPL,tbl-info etc. If it works, though...
  • Cosmetic: Removal of warning inside IGPU's _CRS method
  • Cosmetic (I don't like seeing pci* names in my IOReg tree): add IMEI device (represents Intel's Management Engine; thanks to Mieze for this) and the MCHC device (no idea who to thank for this, although I think I took it from the Clover wiki. EDIT: No, I remember now that I took it from k3nny's DSDT for his ASUS motherboard).
  • Shutdown fix. I don't actually need this but it did help when I was using an old beta version of GenericUSBXHCI and it was causing my laptop to restart instead of shutting down. I believe nerone at AppleLife.ru came up with this variant first.
  • PINI method (designed to run when the OS starts and when you wake from sleep, thanks to The King): turn off the Nvidia card the proper way (thanks to the Pete Eberlein, the Linux Hybrid Graphics blog and Lekensteyn) and I also added a bit to turn on my Wi-Fi LED if Wi-Fi is enabled
  • _WAK (runs when you resume from sleep): Call PINI() and some fixes of my own: reset the "is display on" state so Fn+F7 doesn't have to be pressed twice to toggle the state and call the "AC adapter state" changed function if the stored state differs from the saved state to fix a bug I had when resuming if I took out/inserted the charger while it was sleeping
  • In PNOT, I fixed an issue I was having when I booted with DropSSDT that when I removed/inserted the charger it would take a minute to change state. I realised that PNOT (which is called from the AC state function) was looking for PDC* items that just didn't exist in the ACPI subsystem any more
  • Store that I'm running on XP, as per Slice's suggestion and run PINI
  • Battery and fan registers converted to 8-bit from 16-bit for compatibility with the latest AppleACPIPlatform.kext. The battery fixes are numerous and none were done by me. Credits can be found in my N55SL topic.
  • MSOS, like _INI, returns I'm running on Windows XP and I shortened it because of this. I can return Windows Vista here for my NVIDIA card to show up (which I cannot use, of course)
  • pnp0c14 changed to PNP0c14 to remove the iasl error and for EmlyDinesh's hotkey kext to load
  • Add _PRW inside the AC adapter device so that the AppleACAdapter driver can attach itself there. Taken from RehabMan's repo
  • Cosmetic: PTID device "removed". It never produced anything in HWMonitor
  • RPUN, SPUN and ECCM are the result of me taking methods that access some I/O ports from older ASUS laptops. These actually work with the latest AppleACPIPlatform.kext
  • _Q0B (called when you press Fn+F2) shortened down by using EmlyDinesh's patch. I took his two-press version since I can't turn off Bluetooth anyway but I changed it to use the Wi-Fi on/off state that the laptop already stores to fix a synchronisation problem I was having when I restarted with the Wi-Fi off
  • _Q0E and _Q0F (Brightness button handlers) fixed to work with the latest AppleACPIPlatform by EmlyDinesh
  • _Q10 (Fn+F7) fixed to work with the latest AppleACPIPlatform by me using the RPUN and SPUN methods
  • Cosmetic: remove iasl's returning One from a EC query handler error message
  • Cosmetic: remove iasl warning about not returning a value
  • _QA0 (AC adapter state handler): call Optimus methods only if I put it in a state where it may actually be present to the system and don't bother sending the new state through the hotkey subsystem since no Asus hotkey on OS X is going to be listening for it
  • Fix lid state detection (go to sleep by closing lid) with latest AppleACPIPlatform by using RPUN to get the state
  • PNLF device added for backlight control. I think this originated from Project OS X. Brightness methods added by EmlyDinesh to work with his backlight driver (forked from hotKoffy's ACPI backlight kext)

Thanks for your help !

iFIRE u have patched my dsdt, but what are you patched ? I'm a little lost actually xD

To compare yourself, you can do something like this: http://www.insanelymac.com/forum/topic/290743-disable-optimus-on-xps-15-l521x/?do=findComment&comment=1937491


Edited by qwerty12
  • Like 2
Link to comment
Share on other sites

I look forward, I made a patch from some sources RehabMan and you Qwerty12.

But after applying these controls, I have several errors:

into_all all code_regex GFX0 replaceall_matched begin IGPU end;

into_all all label GFX0 set_label begin IGPU end;

Object not found or not accessible from scope (\_SB.PCI0.PEG0.GFX0)

Forward references from Scope operator not allowed (\_SB.PCI0.PEG0.GFX0)

Object does not exist (\_SB.PCI0.PEG0.IGPU.PRST)

Object does not exist (\_SB.PCI0.PEG0.IGPU.ADVD)

Object does not exist (\_SB.PCI0.PEG0.IGPU.GCDS)

Object does not exist (\_SB.PCI0.PEG0.IGPU.SWHD)

Object does not exist (\_SB.PCI0.PEG0.IGPU.NATK)

Object does not exist (\_SB.PCI0.PEG0.IGPU.DON)

Object does not exist (\_SB.PCI0.PEG0.IGPU.DOFF)

Object does not exist (\_SB.PCI0.PEG0.IGPU._DOD)

Object does not exist (\_SB.PCI0.PEG0.IGPU.CRTD._DCS)

Object does not exist (\_SB.PCI0.PEG0.IGPU.HDMI._DCS)

Object does not exist (\_SB.PCI0.PEG0.IGPU._ROM)

Object does not exist (\_SB.PCI0.PEG0.IGPU._PS0)

Link to comment
Share on other sites

You don't want to rename *every* instance of GFX0 to IGPU! Remember:

  • GFX0 (the one under PCI0, not PEGP, which is the NVIDIA card!)[...]

The easiest way to rename the correct GFX0 to IGPU is to dump the original DSDT (in Windows, I recommend iasl -g or AIDA64; in Linux, sudo cp /sys/firmware/acpi/tables/DSDT ./DSDT.dat) and do a find and replace: PCI0.GFX0 -> PCI0.IGPU (and then rename the correct "Device (GFX0)" to "Device (IGPU")


Later versions of iasl optimise (^^^PEG0.GFX0 takes up less space inside the DSDT than \_SB.PCI0.PEG0.GFX0 does) and while it's not exactly hard* to figure out what GFX0 device a certain line is referring to, it's a lot quicker to just find and replace on an unmodified DSDT, where every reference to the GFX0 device inside PCI0 will be the same.


*I'm a liar: it is hard but easier when you're using MaciASL as it has a handy "path" bar on the bottom.

Link to comment
Share on other sites

Okay! that's what I did to apply my patch with the biggest changes, I use my original dsdt with the latest version of iasl, if I understand it is better to change the iGPU without patch ?

Should I rename \ _SB? because my gfx0 I renamed (0x00020000) Notify the present are as follows: Notify (\ _SB.PCI0, Arg1) and not Notify (GFX0, Arg1)

Link to comment
Share on other sites

For Asus laptops, yes because Asus are weird and name both graphic cards "GFX0" and the patch you took from the ProBook repo indiscriminately renames *all* GFX0 instances to IGPU (probably because they don't need to watch out for this sort of thing - I think every other manufacturer other than ASUS calls the NVIDIA/ATI card PEGP)

Link to comment
Share on other sites

I've maked some modifications (My latest dsdt), now i have a problem at the launch of the install with cloverEFI.

KERNEL PANIC: transcript offline buffer pool allocate failed

I did not think OSx86 was also difficult to create ! In any case, I progress slowly but surely: P

I've seen a _DSM method in my IGPU but the method is biggest, i can delete this method for solve the kernel panic?

Link to comment
Share on other sites

  • 1 month later...

  • Create New...