[FUG-BR]__Dúvida__-_NO_FOOF_HACK
Thiago Esteves de Oliveira
est.thiago em gmail.com
Sáb Abr 8 19:14:49 BRT 2006
On Sat, 08 Apr 2006 18:44:49 -0300, Patrick Tracanelli
<eksffa em freebsdbrasil.com.br> wrote:
> Thiago Esteves de Oliveira wrote:
>> On Sat, 08 Apr 2006 17:45:55 -0300, Rainer Alves
>> <rainer.alves em gmail.com>
>> wrote:
>>
>>
>>> Thiago Esteves de Oliveira wrote:
>>>
>>>> Li o NOTES/NO_FOOF_HACK, ok, mas gostaria de saber se a opção
>>>> NO_FOOF_HACK deve ser usada
>>>> apenas em "i586(s)" como dito no NOTES, pois já vi servidores
>>>> "i686(s)",
>>>> com esta opção abilitada na
>>>> compilação do kernel.
>>>
>>> A primeira edição do Pentium (de séculos atrás) tinha um bug que
>>> causava
>>> o travamento da CPU se ela recebesse uma sequência de instruções que
>>> iniciava com os byte codes 'F0 0F' (em hexadecimal, daí o nome).
>>> Esse 'NO_F00F_HACK' nada mais é do que uma proteção do kernel, que gera
>>> um erro de instrução ilegal ao detectá-las.
>>> A opção só faz sentido se você usar o Pentium 1 (i586), habilitá-la em
>>> qualquer outro kernel é desperdício já que a Intel corrigiu o bug no
>>> design dos Pentiums seguintes.
>>>
>>> --
>>> Rainer Alves
>
> Na verdade, e' exatamente o contrario hehe.
>
> O F00F_HACK e uma serie de codigos pra evitar o problema muito bem
> explicado pelo Rainer, a principal correcao e o codigo a seguir
>
> #if defined(I586_CPU) && !defined(NO_F00F_HACK)
> if (i == -2) {
> /*
> * The f00f hack workaround has
> triggered, so
> * treat the fault as an illegal
> instruction
> * (T_PRIVINFLT) instead of a page
> fault.
> */
> type = frame.tf_trapno = T_PRIVINFLT;
>
> /* Proceed as in that case. */
> ucode = type;
> i = SIGILL;
> break;
> }
> #endif
>
> Que fica no sys/i386/i386/trap.c.
>
> Portanto, note que o F00F_HACK *ja existe* em toda e qualquer situacao
> que voce tenha I586 no kernel. Nao e' necessario adiciona-lo para te-lo.
> A opcao do NOTES faz o contrario, ela OMITE o F00F_HACK, por isso
> chama-se "NO_F00F_HACK", "sem F0 0F hack" que ja existe por padrao,
> tendo I586 no kernel.
>
> Portanto a opcao so deve ser usada se voce *NAO* usar I586 (por exemplo,
> mantem apenas classe de CPU I686 no kernel) ou se voce mantem seu kernel
> apto a processar instrucoes de classe i586 mas tem certeza que jamais
> serao processadores Pentium nessa classe, por exemplo, AMD K6 2, CYRIX e
> afins, que sao 586 mas nao sofrem desse bug (bug exclusivo dos Pentium).
>
> Note que na primeira situacao (nao manter i586 no kernel) colocar a
> opcao NO_F00F_HACK e' redundante (note o && do if defined).
>
>
Ok.
Então se não estiver usando um I586(ONLY PENTIUM)....
Use "NO_FOOF_HACK" = 'SEU PROCESSADOR NÃO PRECISA'
he, he, he, he
Abraço...
--
=======================================
Thiago Esteves de Oliveira <
=======================================
_______________________________________________
freebsd mailing list
freebsd em fug.com.br
http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Mais detalhes sobre a lista de discussão freebsd