Eu ouço muito sobre peculiaridades do PCI ao ler sobre o kernel do Linux, mas nenhum site explica ou define as peculiaridades do PCI. O que são peculiaridades do PCI?
Eu ouço muito sobre peculiaridades do PCI ao ler sobre o kernel do Linux, mas nenhum site explica ou define as peculiaridades do PCI. O que são peculiaridades do PCI?
Respostas:
"Peculiaridades" são atributos de um dispositivo considerado não compatível com a operação esperada.
Aqui está um exemplo de quirks.c
:
/* The Mellanox Tavor device gives false positive parity errors
* Mark this device with a broken_parity_status, to allow
* PCI scanning code to "skip" this now blacklisted device.
*/
static void quirk_mellanox_tavor(struct pci_dev *dev)
{
dev->broken_parity_status = 1; /* This device gives false positives */
}
Isso é uma "peculiaridade", pois o dispositivo relata erros espúrios. Quando esse dispositivo está operacional, a peculiaridade define certos atributos que fazem com que outras partes do kernel atuem de maneira diferente (talvez ignorando erros espúrios ou resolvendo um problema conhecido).
Nem todas as peculiaridades do kernel do Linux são assim. Em vez de simplesmente desabilitar o recurso afetado, alguns tentam contorná-lo, por exemplo:
/*
* Some CS5536 BIOSes (for example, the Soekris NET5501 board w/ comBIOS
* ver. 1.33 20070103) don't set the correct ISA PCI region header info.
* BAR0 should be 8 bytes; instead, it may be set to something like 8k
* (which conflicts w/ BAR1's memory range).
*/
static void quirk_cs5536_vsa(struct pci_dev *dev)
{
if (pci_resource_len(dev, 0) != 8) {
struct resource *res = &dev->resource[0];
res->end = res->start + 8 - 1;
dev_info(&dev->dev, "CS5536 ISA bridge bug detected "
"(incorrect header); workaround applied.\n");
}
}
PCI quirk workarounds
no kernel?
quirks.c
o fornecedor e / ou o dispositivo. Desativar peculiaridades pode ter um efeito variado, dependendo da gravidade da solução alternativa; pode não ter efeitos colaterais visíveis ou fazer com que o dispositivo não funcione corretamente.
CONFIG_PCI_QUIRKS
de volta em correções de kernel a questão.