Jump to content
Olarila Professional Hackintosh Services ×

Fix para SATA AHCI lento


oldnapalm

Recommended Posts

Fix para placas que apresentam baixa performance dos HDs SATA quando no modo AHCI (outros HDs que não o do sistema). Consiste em passar os IRQs dos devices RTC0 e TMR para o device HPET (opcional mas recomendado) e liberar o IRQ do device PIC para ser usado pela controladora SATA (esta é a "chave" do fix).


Fix por THe KiNG do Project OS X

http://www.projectosx.com/forum/index.php?showtopic=564


HPET original:

                Device (HPET)
               {
                   Name (_HID, EisaId ("PNP0103"))
                   Name (CRS, ResourceTemplate ()
                   {
                       Memory32Fixed (ReadOnly,
                           0xFED00000,         // Address Base
                           0x00000400,         // Address Length
                           _Y0F)
                   })
                   OperationRegion (^LPCR, SystemMemory, 0xFED1F404, 0x04)
                   Field (LPCR, AnyAcc, NoLock, Preserve)
                   {
                       HPTS,   2, 
                           ,   5, 
                       HPTE,   1, 
                               Offset (0x04)
                   }

                   Method (_STA, 0, NotSerialized)
                   {
                       If (LEqual (OSFL (), Zero))
                       {
                           If (HPTE)
                           {
                               Return (0x0F)
                           }
                       }
                       Else
                       {
                           If (HPTE)
                           {
                               Return (0x0B)
                           }
                       }

                       Return (Zero)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y0F._BAS, HPT)
                       Multiply (HPTS, 0x1000, Local0)
                       Add (Local0, 0xFED00000, HPT)
                       Return (CRS)
                   }
               }

HPET modificado:

                Device (HPET)
               {
                   Name (_HID, EisaId ("PNP0103"))
                   Name (CRS, ResourceTemplate ()
                   {
                       IRQNoFlags ()
                           {0}
                       IRQNoFlags ()
                           {8}
                       Memory32Fixed (ReadOnly,
                           0xFED00000,         // Address Base
                           0x00000400,         // Address Length
                           _Y0F)
                   })
                   OperationRegion (^LPCR, SystemMemory, 0xFED1F404, 0x04)
                   Field (LPCR, AnyAcc, NoLock, Preserve)
                   {
                       HPTS,   2, 
                           ,   5, 
                       HPTE,   1, 
                               Offset (0x04)
                   }

                   Method (_STA, 0, NotSerialized)
                   {
                       If (LEqual (OSFL (), Zero))
                       {
                           If (HPTE)
                           {
                               Return (0x0F)
                           }
                       }
                       Else
                       {
                           If (HPTE)
                           {
                               Return (0x0B)
                           }
                       }

                       Return (Zero)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y0F._BAS, HPT)
                       Multiply (HPTS, 0x1000, Local0)
                       Add (Local0, 0xFED00000, HPT)
                       Return (CRS)
                   }
               }

 

RTC0 original:

                Device (RTC0)
               {
                   Name (_HID, EisaId ("PNP0B00"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0070,             // Range Minimum
                           0x0070,             // Range Maximum
                           0x00,               // Alignment
                           0x02,               // Length
                           )
                       IRQNoFlags ()
                           {8}
                   })
               }

RTC0 modificado:

                Device (RTC0)
               {
                   Name (_HID, EisaId ("PNP0B00"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0070,             // Range Minimum
                           0x0070,             // Range Maximum
                           0x00,               // Alignment
                           0x02,               // Length
                           )
                   })
               }

 

TMR original:

                Device (TMR)
               {
                   Name (_HID, EisaId ("PNP0100"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0040,             // Range Minimum
                           0x0040,             // Range Maximum
                           0x00,               // Alignment
                           0x04,               // Length
                           )
                       IRQNoFlags ()
                           {0}
                   })
               }

TMR modificado:

                Device (TMR)
               {
                   Name (_HID, EisaId ("PNP0100"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0040,             // Range Minimum
                           0x0040,             // Range Maximum
                           0x01,               // Alignment
                           0x04,               // Length
                           )
                   })
               }

 

PIC original:

                Device (PIC)
               {
                   Name (_HID, EisaId ("PNP0000"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0020,             // Range Minimum
                           0x0020,             // Range Maximum
                           0x00,               // Alignment
                           0x02,               // Length
                           )
                       IO (Decode16,
                           0x00A0,             // Range Minimum
                           0x00A0,             // Range Maximum
                           0x00,               // Alignment
                           0x02,               // Length
                           )
                       IRQNoFlags ()
                           {2}
                   })
               }

PIC modificado:

                Device (PIC)
               {
                   Name (_HID, EisaId ("PNP0000"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0020,             // Range Minimum
                           0x0020,             // Range Maximum
                           0x00,               // Alignment
                           0x02,               // Length
                           )
                       IO (Decode16,
                           0x00A0,             // Range Minimum
                           0x00A0,             // Range Maximum
                           0x00,               // Alignment
                           0x02,               // Length
                           )
                   })
               }

Link to comment
Share on other sites

Obrigado pelo post. É oq eu procurava. Porem Está me gerando muitas dúvidas.


Uso a placa ASUS p6td Deluxe.. instal todo no insanelymac.. DSDT by Ifabio


SInto lentidão qdo o hd estáem atividade.. (como criar abas no Safari, etc)


Editei a dsdt extamente como acima e continua igual!! A não a temperatura q aumentou em 10º!!??


Como consigo o IOregister?


Imploro por uma ajuda..!!


obrigado

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


×
×
  • Create New...