Jump to content

Gerenciamento de energia para Sandy Bridge/Ivy Bridge/Haswell CPU


272 posts in this topic

Recommended Posts

Jorge, o patch LPC para IvyBridge está no link que te passei: http://olarila.com/forum/patches.php

É só procurar amigo...

into method label _DSM parent_adr 0x001F0000 remove_entry;
into device name_adr 0x001F0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    Store (Package (0x02)\n
        {\n
            "device-id", \n
            Buffer (0x04)\n
            {\n
                0x57, 0x1E, 0x00, 0x00\n
            }\n
        }, Local0)\n
    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
    Return (Local0)\n
}
end

Tente a DSDT que editei para você:DSDT.aml.zip

 

 

este patch ya nao serve para 10.9 :(  algumas boards tem que injectar desta manera, com name, ioname, compatible, si nao o kext nao lee, aqui um exemplo do meu LPC

 

               Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Store (Package (0x0C)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                 0x02, 0x3B, 0x00, 0x00
                            }, 
                            "compatible", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b02"
                            }, 
                            "IOName", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b02"
                            }, 
                            "name", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b02"
                            }, 
                            "subsystem-id", 
                            Buffer (0x04)
                            {
                                 0x01, 0x50, 0x00, 0x00
                            }, 
                            "subsystem-vendor-id", 
                            Buffer (0x04)
                            {
                                 0x58, 0x14, 0x00, 0x00
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

Olá

 

Usando a lógica... De certo que não, pois Allan afirmou desconhecer esse detalhe que iFire propôs...

 

Ele patcheou com aquele patch que ele mesmo colocou, vindo daqui: http://olarila.com/forum/patches.php

Amigo. Esta DSDT do Allan  não carregou a kext AppleLPC. E este patch do iFIRE, eu tentei aplicar, mas não acontece nada no programa "MaciASL". 

Eu copiei daqui do site e colei no programa, mas nada acontece. Como, o "antes" e o "depois", não me mostra como vai ficar a mudança na DSDT. Eu também não entendo muito de DSDT.

Então amigo, não é assim, você tem que procurar o LPC na DSDT.

 

Vou te ensinar a "pescar", vamos lá:

 

Baixe o IOReg. e coloque ele na pasta Aplicativos.

 

Abra ele e pesquise LPCB, mas siga a numeração que coloquei na imagem abaixo, 1,2 e 3.

Screen Shot 2014-02-18 at 6.48.22 PM.png

 

E depois que achar coloque a imagem aqui.

A julgar pela imagem, sua LPC está sendo reconhecida, mas não carregada, então vamos aplicar o que o iFire nos falou...

 

1º Notou que quando você digitou LPCB, no canto esquerdo tem uma linha de endereços? então ali está a resposta, procure na sua DSDT o device LPCB.

post-1145065-0-93972700-1392761053.png

 

Vou te ajudar de outra vez, veja a imagem:

Screen Shot 2014-02-18 at 7.08.24 PM.png

 

Agora você ja tem meio caminho andado, no LPCB, procure pelo metodo _DSM.

 

E volte com os resultados.

Opa isso cara esta indo bem, agora o que vamos fazer?

 

Apague este metodo o insira o que o iFire recomendou:

Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Store (Package (0x0C)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                 0x02, 0x3B, 0x00, 0x00
                            }, 
                            "compatible", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b02"
                            }, 
                            "IOName", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b02"
                            }, 
                            "name", 
                            Buffer (0x0D)
                            {
                                "pci8086,3b02"
                            }, 
                            "subsystem-id", 
                            Buffer (0x04)
                            {
                                 0x01, 0x50, 0x00, 0x00
                            }, 
                            "subsystem-vendor-id", 
                            Buffer (0x04)
                            {
                                 0x58, 0x14, 0x00, 0x00
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

Você pode também, apenas selecionar o método e colar este.

 

Compile e veja se não tem erros. Coloque onde deve, reinicie e veja se foi carregado.

Não pude responder ontem pois fui assistir um filme com minha esposa hehe

 

Mas voltando...

 

Perfeito Jorge, que bom que este método deu certo para você.

 

E apenas uma correção, quando eu falei para você compilar, não seria com códigos no Terminal, é clicar na opção "Compile" do MaciASL, veja:

Screen Shot 2014-02-19 at 6.31.48 PM.png

 

Se a janela aparecer sem nada, é porque está tudo certo.

 

E Pimentel já estou criando um guia sobre DSDT+IOReg. 

 

Flw

Finalmente trago a explicação do "Plugin-type", essa materia faz parte da explicação do XNU escrito por Piker Alpha. Por isso todo o merito é dele, a unica coisa que fiz foi traduzir para um melhor entendimento.

 

Explicação:

 

Apple utiliza um _DSM ( em tradução livre seria: Dispositivo Método Específico) em uma de suas tabelas ACPI para acionar plugins adicionais para carregar (X86PlatformPlugin.kext e X86PlatformShim.kext). E ainda temos de definir essa propriedade na SSDT ( o que é gerado por padrão com o script), caso contrário, os plugins não serão carregados e você acaba vendo este erro em system.log:

ACPI_SMC_PlatformPlugin::start – waitForService(resourceMatching(AppleIntelCPUPowerManagement) timed out
WARNING: IOPlatformPluginUtil : getCPUIDInfo: this is an unknown CPU model 0x3c — power management may be incomplete or unsupported

Um ponto em levar em consideração, é que quando está sendo usado o XNU, já não é necessário ter a kext ACPI_SMC_PlatformPlugin carregado. Isto também significa que as propriedade suportados Features/Stepper do CPU não será definido, mas é preciso definir plugin-type, ou você receberá o erro acima.

 

Pimentel, se for da sua vontade, pode deletar este post e incluir no seu topico, talvez com suas palavras.

 

Abraços.

Olá

 

Acho que vou deixar isso ai mesmo... ainda não tenho tantas informações acerca disso para simplesmentea adicionar no guia e depois não saber explicar acerca disso...

 

Algumas perguntas:

 

1-Esse plugin-type é adicionado no método _DSM ou é adicionado nas kexts X86PlatformPlugin, X86PlatformShim

 

2-Se esse plugin_type já é definido na SSDT então não há a necessiadade de adiciona-los manualmente certo?

 

Agreadeço desde já pela explicação Allan. Obrigado por falar acerca disso...

 

Abraços.

×
×
  • Create New...