Ich höre viel über PCI-Macken, wenn ich über den Linux-Kernel lese, aber keine Website erklärt oder definiert PCI-Macken. Was sind PCI-Macken?
Ich höre viel über PCI-Macken, wenn ich über den Linux-Kernel lese, aber keine Website erklärt oder definiert PCI-Macken. Was sind PCI-Macken?
Antworten:
"Macken" sind Attribute eines Geräts, die als nicht mit dem erwarteten Betrieb kompatibel angesehen werden.
Hier ist ein Beispiel aus 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 */
}
Dies ist eine "Eigenart", da das Gerät falsche Fehler meldet. Wenn dieses Gerät in Betrieb ist, legt die Eigenart bestimmte Attribute fest, die andere Teile des Kernels anders verhalten lassen (möglicherweise durch Ignorieren von Störfehlern oder durch Umgehen eines bekannten Problems).
Allerdings sind nicht alle Macken im Linux-Kernel so. Anstatt die betroffene Funktion einfach zu deaktivieren, versuchen einige, sie zu umgehen, zum Beispiel:
/*
* 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
im Kernel deaktiviere ?
quirks.c
nach dem Hersteller und / oder Gerät zu suchen . Das Deaktivieren von Macken kann unterschiedliche Auswirkungen haben, je nachdem, wie ernst die Problemumgehung ist. Es kann keine erkennbaren Nebenwirkungen haben oder dazu führen, dass das Gerät nicht richtig funktioniert.
CONFIG_PCI_QUIRKS
wieder die Frage im Kernel - Korrekturen.