Como altero o ID do dispositivo PCI da minha placa gráfica no sistema? (para instalar o driver Quadro em uma GeForce)

2

Eu tenho um consumidor GeForce GTX680. É equivalente profissional é o Quadro K5000. Ambas as placas têm exatamente o mesmo chip dentro (GK104), o hardware é quase idêntico.

O driver oficial para GTX680 não pode fazer estéreo com buffer quádruplo, mas o do K5000 pode. É possível desbloquear esses recursos "profissionais" na GTX680 instalando o driver K5000 nele. Foi feito com sucesso no Windows. link

Como altero o ID do dispositivo PCI da placa no meu sistema, então o instalador acha que é o K5000, não o GTX680?

Eu preciso alterar o valor do registrador 02 de 1180 para 11BA.

lspci | grep VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 680] (rev a1)

Diz-me que a placa gráfica está em "01: 00.0"

setpci --dumpregs
    cap pos w name
         00 W VENDOR_ID
         02 W DEVICE_ID

Diz-me 02 corresponde ao ID do dispositivo. Para ler o registro que eu faço:

sudo setpci -s 01:00.0 02.w
    1180

"1180" significa "GTX680", preciso alterá-lo para "11BA", que significa "K5000"

então estou mudando de 1180 para 11BA:

sudo setpci -s 01:00.0 02.w=11BA

Continua sem erros, mas quando tento ler o valor que acabei de alterar, ele ainda mostra 1180

sudo setpci -s 01:00.0 02.w
1180

Também tentei a mesma coisa que o sudo su (como às vezes o sudo não funciona)

[aaa@bbb ~]$ sudo su
[sudo] password for aaa: 
[root@bbb aaa]# setpci -v -s 01:00.0 DEVICE_ID=11BA
0000:01:00.0 @02 11ba
[root@bbb aaa]# setpci -v -s 01:00.0 DEVICE_ID
0000:01:00.0 @02 = 1180

Eu entendo que essa memória não pode ser realmente escrita, então isso pode ser apenas algo sendo feito no sistema e, portanto, não sendo mostrado. Eu tentei instalar o driver Quadro e ele ainda instala o para GTX680 (sem recursos de buffer quádruplo)

Consegui alterar o ID do dispositivo, alterando os resistores, mas ele ainda não permitia a alteração do driver.

    
por user83311 11.09.2014 / 06:43

2 respostas

2

Você precisará procurar pelo próprio driver. Se nenhum código-fonte estiver disponível, você pode ter sorte com um editor hexadecimal

Se o driver estiver assinado de alguma forma, isso invalidará a assinatura.

Você também pode criar um dispositivo falso e vincular o real ao driver stub, usando o dispositivo falso para retransmitir. Não posso dizer com que facilidade isso será, com certeza, mas exigirá habilidades decentes no nível do kernel. Você teria que implementar um dispositivo pci virtual no próprio kernel.

A opção três é realmente pesada: crie uma VM, modifique-a para relatar o ID de PCI desejado e vincule o dispositivo à VM. Mas isso limita sua usabilidade e incorre na penalidade de desempenho de uma máquina virtual.

    
por 14.09.2015 / 07:23
0

Você pode usar o comando setpci para isso: link

Com setpci --dumpregs você pode descobrir os registros gerais de hardware e então usar o setpci para consultar o endereço do dispositivo (02: 00.0) com, por exemplo, um desses registradores:

setpci -s 02:00.0 STATUS
    
por 11.09.2014 / 06:47

Tags