The problem is there is a conflict between SSDT-5.aml and SSDT-6.aml. Both define _SB.PCI0.IGPU._DSM. OS X will just throw them out if there are conflicts (not sure if it keeps the first or throws both out, and I'm not certain of the order in which they are loaded).
I generally use this patch on all my native DSDT/SSDT before starting to patch:
Code:
into_all method label _DSM remove_entry;
That way there is no possibility of an OEM _DSM (which are always unused by OS X), conflicting with a _DSM I'm trying to add.
Edit: Also you have DTGP defined multiple times: SSDT-5.AML and DSDT.AML. That isn't going to work (SSDT-5.aml will not be loaded). It is best to not use DTGP -- it is unnecessary. Take note how all my _DSM injection methods work.
BTW, you may be wondering how I figured this out... I used your ioreg to extract all the SSDTs and DSDT, placed them in a separate directory. Then I went there and did 'iasl -e SSDT*.aml -d DSDT.aml' in an attempt to disassemble them. In order for iasl to do this, it has to load all the specified files into an ACPI namespace, then disassemble the target. If it can't load them (because of duplicate methods/devices), then neither can OS X.