O que são peculiaridades do PCI?

8

Eu ouço muito sobre as peculiaridades do PCI quando leio sobre o kernel do Linux, mas nenhum site explica ou define as peculiaridades do PCI. Quais são as peculiaridades do PCI?

    
por Devyn Collier Johnson 17.07.2013 / 18:03

1 resposta

13

"Peculiaridades" são atributos de um dispositivo considerado não compatível com a operação esperada.

Veja 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 este dispositivo está operativo, o quirk define certos atributos que fazem com que outras partes do kernel atuem de maneira diferente (talvez ignorando erros espúrios ou trabalhando em torno de um problema conhecido).

Nem todas as peculiaridades no kernel do Linux são assim. Em vez de simplesmente desativar 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");
        }
}
    
por 17.07.2013 / 18:14