O cabeçalho de elétrons livres é interno à fonte do kernel, e você o encontrará se procurar em [src]/include/linux ; se você está compilando o código do kernel, isso deve estar em jogo.
O cabeçalho que você colou é o cabeçalho do sistema, de /usr/include/linux . Isso é para o código do usuário terra que precisa de acesso às constantes e macros definidas nele.
Estes não entram em conflito. Observe no topo do kernel interno mais longo do kernel:
#include <uapi/linux/pci.h>
Esse caminho não existe no sistema normal, inclua diretórios, mas ele existe em [src]/include , e se você verificar lá para este arquivo, você notará que é praticamente idêntico ao /usr/include/linux/pci.h do seu sistema. É assim que o código do kernel pode acessar os mesmos valores, além de todo o material necessário internamente, já que o usual linux/pci.h foi substituído por algo como -I[src]/include , mas o código do kernel que contém #include <linux/pci.h> extrairá [src]/include/linux/pci.h puxa em [src]/include/uapi/pci.h que é idêntico a /usr/include/linux/pci.h .