Jump to content

Attempting to fix my first DSDT warning...


chris7519
 Share

2 posts in this topic

Recommended Posts

Well after doing some searching around, it looks as though patching my DSDT for GFX (9600M GT), audio (Intel IDT 111D76B2), and sleep support is the way to go. However, it seems that trying to find DSDT information as it pertains to my system it quite difficult. I figured I would try to start small and fix the warnings I get when running DSDT patcher and then tackling supporting my hardware once I have a grasp on what I'm doing. When running DSDT, I encounter 31 warnings:

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20080926 [Oct  4 2008]
Copyright © 2000 - 2008 Intel Corporation
Supports ACPI Specification Revision 3.0a

./dsdt_fixed.txt  1341:             Method (_HOT, 0, Serialized)
Warning  1087 -                                ^ Not all control paths return a value (_HOT)

./dsdt_fixed.txt  1341:             Method (_HOT, 0, Serialized)
Warning  1080 -                                ^ Reserved method must return a value (_HOT)

./dsdt_fixed.txt  1364:             Method (_CRT, 0, Serialized)
Warning  1087 -                                ^ Not all control paths return a value (_CRT)

./dsdt_fixed.txt  1364:             Method (_CRT, 0, Serialized)
Warning  1080 -                                ^ Reserved method must return a value (_CRT)

./dsdt_fixed.txt  1417:             Method (_PSV, 0, NotSerialized)
Warning  1087 -                                ^ Not all control paths return a value (_PSV)

./dsdt_fixed.txt  1417:             Method (_PSV, 0, NotSerialized)
Warning  1080 -                                ^ Reserved method must return a value (_PSV)

./dsdt_fixed.txt  7886:                     Method (_GTM, 0, NotSerialized)
Warning  1087 -   Not all control paths return a value ^  (_GTM)

./dsdt_fixed.txt  7886:                     Method (_GTM, 0, NotSerialized)
Warning  1080 -    Reserved method must return a value ^  (_GTM)

./dsdt_fixed.txt  8046:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  8046:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  8114:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  8114:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  8187:                     Method (_GTM, 0, NotSerialized)
Warning  1087 -   Not all control paths return a value ^  (_GTM)

./dsdt_fixed.txt  8187:                     Method (_GTM, 0, NotSerialized)
Warning  1080 -    Reserved method must return a value ^  (_GTM)

./dsdt_fixed.txt  8347:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  8347:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  8415:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  8415:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  8520:                     Method (_GTM, 0, NotSerialized)
Warning  1087 -   Not all control paths return a value ^  (_GTM)

./dsdt_fixed.txt  8520:                     Method (_GTM, 0, NotSerialized)
Warning  1080 -    Reserved method must return a value ^  (_GTM)

./dsdt_fixed.txt  8680:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  8680:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  8748:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  8748:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  8821:                     Method (_GTM, 0, NotSerialized)
Warning  1087 -   Not all control paths return a value ^  (_GTM)

./dsdt_fixed.txt  8821:                     Method (_GTM, 0, NotSerialized)
Warning  1080 -    Reserved method must return a value ^  (_GTM)

./dsdt_fixed.txt  8981:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  8981:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  9049:                         Method (_GTF, 0, NotSerialized)
Warning  1087 -       Not all control paths return a value ^  (_GTF)

./dsdt_fixed.txt  9049:                         Method (_GTF, 0, NotSerialized)
Warning  1080 -        Reserved method must return a value ^  (_GTF)

./dsdt_fixed.txt  9937:                 Store (Package (0x02)
Warning  1099 -             Statement is unreachable ^ 

ASL Input:  ./dsdt_fixed.txt - 11379 lines, 401564 bytes, 5477 keywords
AML Output: ././dsdt.aml - 46711 bytes, 975 named objects, 4502 executable opcodes

Compilation complete. 0 Errors, 31 Warnings, 0 Remarks, 40 Optimizations

 

Starting at the beginning, it looks as through the Method (_HOT, 0, Serialized) If (LGreaterEqual (OSYS, 0x07D6)) should be returning a value, but it's not.

 ThermalZone (TZ01)
	{
		Method (_HOT, 0, Serialized)
		{
			If (LGreaterEqual (OSYS, 0x07D6))
			{
				If (LEqual (\_SB.PCI0.LPC.EC0.QUAD, One))
				{
					Return (0x0E94)
				}
				Else
				{
					If (LEqual (TJMX, 0x64))
					{
						Return (0x0EC6)
					}
				}

				If (LEqual (TJMX, 0x55))
				{
					Return (0x0E30)
				}
			}
		}

 

At this point, I find myself looking at random numerous solutions, but I'm not sure what will work for my system, and how I'm able to tell if a particular fix would do more damage than good. For example, I found this webpage and it shows what I believe to be a possible solution. So I replace the original Method with:

			Method (_HOT, 0, Serialized)
		{
			If (LEqual (OSYS, 0x07D6))
			{
				If (LEqual (\_SB.TJ85, Zero))
				{
					Return (Add (0x0AAC, Multiply (TPC, 0x0A)))
				}
				Else
				{
					Return (Add (0x0AAC, Multiply (TP85, 0x0A)))
				}
			}
		}

 

Afterwards I receive 82 errors, so obviously that's not correct! Any help with general warning corrections... or if you're up to patching my GFX card, audio, and sleep issues :D ... would be very much appreciated!!! I'm just looking for someone to point me in the right direction...

Link to comment
Share on other sites

Well due to the nice folks over at EvOsx86 releasing DSDTSE, I'm moving on to attempting to get my GFX working. I have NVDarwin and a patched DSDT.aml (via DSDT Patcher GUI) and my 9600M GT currently runs fine on 10.5.8. However, with my noob skills, I wasn't able to enable graphics support even with the laid out Hacks provided with DSDTSE. It simply seemed like a matter of copy and paste into the right section, but I encounter total blackness after the splash screen.

 

The suggested hack is as follows:

Nvidia Laptop.

Locate the graphic section of your DSDT (laptop/mobile)


Example: (PEGP), it could also be AGP or IGP or something similar. (Use the ACPI search feature to locte the section, or "Registry Info" from the menu).

Device (PEGP)
           {
               Name (_ADR, 0x00010000)
               Method (_PRT, 0, NotSerialized)
               {
                   If (GPIC)
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               Zero, 
                               0x10
                           }, 

                        .........  the code continues...............


We place the hack just below of the following:

              Device (PEGP)
           {
               Name (_ADR, 0x00010000)
                   Device (GFX0)  /* <--------------------------  Hack Begins */
                 {
                   Name (_ADR, Zero)
                   Name (_SUN, One)
                   Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x1A)
                           {
                               "@0,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@0,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@0,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-A"
                               }, 

                               "@1,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@1,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@1,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-B"
                               }, 

                               "NVCAP", 
                               Buffer (0x18)
                               {
                                   /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
                                   /* 0008 */    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00
                               }, 

                               "NVPM", 
                               Buffer (0x20)
                               {
                                   /* 0000 */    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0018 */    0x00, 0x00, 0x00, 0x00
                               }, 

                               "VRAM,totalsize", 
		     Buffer (0x04)
		     {
		          0x00, 0x00, 0x00, 0x20 /*<----------- Ram Amount: 0x40 = 1024mb, 0x20= 512mb, 0x10= 256mb */
		      }, 

	                "device_type", 
	                Buffer (0x0D)
	                {
	                    "NVDA,GeForce"
	                }, 

	                "model", 
	                Buffer ()
	                {
	                    "Nvidia GeForce 8600M GS 256 MB"
	                }, 

	                "rom-revision", 
	                Buffer (0x20)
                  	     {
                       		  "DSDT ROM v.1a #irc.osx86.es ©"
                   	      }, 

		      "reg", 
		       Buffer (0x78)
		      {
		            /* 0000 */    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
			   /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
			   /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x02, 
			   /* 0018 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
			   /* 0020 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
			   /* 0028 */    0x14, 0x00, 0x01, 0x42, 0x00, 0x00, 0x00, 0x00, 
			   /* 0030 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
			   /* 0038 */    0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x01, 0x02, 
			   /* 0040 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
			   /* 0048 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
			   /* 0050 */    0x24, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 
			   /* 0058 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
			   /* 0060 */    0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x02, 
			   /* 0068 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
			   /* 0070 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00
                               }
                           }, Local0)
                       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                       Return (Local0)
                   }
                }     


Here we can change the name:


Buffer ()
{
   "Nvidia GeForce 8600M GS 256 MB"
},


Here the NVCAP:


"NVPM", 
Buffer (0x20)
{
   /* 0000 */    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
   /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
   /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
   /* 0018 */    0x00, 0x00, 0x00, 0x00
}, 

Here the Ram amount of the card.


"VRAM,totalsize", 
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x20 /*<----------- Ram Amount: 0x40 = 1024mb, 0x20= 512mb, 0x10= 256mb */
},

 

I inserted the hack in the same location but no dice. I'm looking for suggestions of either what I did wrong or maybe pointed in the direction of a thread which includes someone patching their DSDT successfully for graphics support and showing how they found the needed information and where.

dsdt.nvidia.zip

dsdt.original.zip

Link to comment
Share on other sites

 Share

×
×
  • Create New...