J'entends beaucoup parler des bizarreries PCI en lisant sur le noyau Linux, mais aucun site Web n'explique ni ne définit les bizarreries PCI. Que sont les bizarreries PCI?
J'entends beaucoup parler des bizarreries PCI en lisant sur le noyau Linux, mais aucun site Web n'explique ni ne définit les bizarreries PCI. Que sont les bizarreries PCI?
Réponses:
Les «bizarreries» sont des attributs d'un périphérique qui sont considérés comme non conformes au fonctionnement attendu.
Voici un exemple 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 */
}
Il s'agit d'une "bizarrerie" car l'appareil signale des erreurs parasites. Lorsque ce périphérique est opérationnel, le quirk définit certains attributs qui font agir différemment d'autres parties du noyau (peut-être en ignorant les erreurs parasites ou en contournant un problème connu).
Cependant, toutes les bizarreries du noyau Linux ne sont pas comme ça. Au lieu de simplement désactiver la fonctionnalité affectée, certains essaient de contourner ce problème, par exemple:
/*
* 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
dans le noyau?
quirks.c
le fournisseur et / ou l'appareil. La désactivation des bizarreries pourrait avoir un effet varié selon la gravité de la solution de contournement; cela pourrait n'avoir aucun effet secondaire notable ou entraîner un dysfonctionnement de l'appareil.
CONFIG_PCI_QUIRKS
retour dans le noyau résout le problème.