Para executar aplicativos com código avx2, o kernel deve manipular corretamente o armazenamento / restauração do estado da cpu ao alternar entre as tarefas. Isso foi feito em 2.6.30 ( link . O comando sw também deve conter (pode ser uma decisão em tempo de compilação incluí-lo ou não) código avx2 e utilizá-lo (ou pode conter ambos e decidir sobre o tempo de execução, mas para fazer isso ele precisa detectar que seu cpu suporta avx2). Quanto benefício o avx2 traz também depende do cpu (alguns cpus o suportam, mas realmente não se beneficiam dele devido a várias razões. Os processadores Intel geralmente beneficiam mais do que os processadores AMD e cada nova geração se beneficia mais).
O próprio kernel também pode conter código otimizado avx2 para coisas como criptografia, hashing, compactação e qualquer outra coisa que se beneficie dele (nem tudo funciona e algumas coisas que na teoria são muito difíceis de codificar usando avx2 de uma forma que é ambos corretos e mais rápidos que o código escalar fazendo a mesma coisa) dependendo das configurações usadas no tempo de compilação.
Você pode verificar isso fazendo coisas como dmesg | grep avx2 ou lendo o arquivo de configuração (a configuração usada para compilar o kernel em execução no momento pode ser encontrada em /proc/config.gz) e procurando por avx2.