Supondo que você tenha um controlador AHCI padrão, é possível procurar a velocidade máxima suportada em um registro de configuração. É possível que esse valor seja visível em algum lugar é /sys
ou /proc
, mas se esse for o caso, eu não estou ciente disso.
Isso envolve brincar com o espaço de E / S dos dispositivos, então tome cuidado para não cometer erros, ou você pode danificar o material.
Veja como isso funciona no meu sistema:
1) Encontre o seu controlador AHCI usando lspci
:
$ lspci
...
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
2) Veja os recursos, verifique se ele é usado pelo módulo do kernel ahci :
$ lspci -vk -s 0:1f.2
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05) (prog-if 01 [AHCI 1.0])
Subsystem: ASRock Incorporation 6 Series/C200 Series Chipset Family SATA AHCI Controller
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 26
I/O ports at f0b0 [size=8]
I/O ports at f0a0 [size=4]
I/O ports at f090 [size=8]
I/O ports at f080 [size=4]
I/O ports at f060 [size=32]
Memory at f7e06000 (32-bit, non-prefetchable) [size=2K]
Capabilities: <access denied>
Kernel driver in use: ahci
Kernel modules: ahci
3) As regiões da BARRA PCI podem agora ser encontradas em /sys/devices/pci0000:00/0000:00:1f.2/resource*
(onde você precisa substituir 0:1f.2
pelo endereço do seu controlador). Meu cartão tem 5 regiões para portas de E / S (número 0-4) e a região mapeada de memória é o número 5. Essa é a que precisamos.
4) Faça o download e compile algumas ferramentas para mapear e ler a região, por exemplo, este .
5) Leia a primeira palavra de 4 bytes no deslocamento 0 com a ferramenta que você acabou de baixar (novamente, substitua o endereço e o recurso PCI pelos do seu sistema). Você precisa ser root para fazer isso. Aqui está o lugar onde coisas engraçadas podem acontecer se você cometer um erro, então tenha certeza que você não fez uma.
$ sudo ./pcimem /sys/devices/pci0000\:00//0000\:00\:1f.2/resource5 0 w
Target offset is 0x0, page size is 4096
mmap(0, 4096, 0x3, 0x1, 3, 0x0)
PCI Memory mapped to address 0xb778e000.
Value at offset 0x0 (0xb778e000): 0xC330FF45
^
6) Conforme descrito no especificação AHCI da Intel, os bits 23-20 são chamados de Suporte à Velocidade de Interface e indicam a velocidade máxima (1 = Gen 1 / 1,5 Gbps, 2 = Gen / 3 Gbps , 3 = Gen 3/6 Gbps). Esses bits são representados pelo terceiro dígito hexadecimal marcado acima, no meu caso 3
, então meu controlador suporta 6 Gbps.