Saya mendengar banyak tentang kebiasaan PCI ketika membaca tentang kernel Linux, tetapi tidak ada situs web yang menjelaskan atau mendefinisikan kebiasaan PCI. Apa itu kebiasaan PCI?
Saya mendengar banyak tentang kebiasaan PCI ketika membaca tentang kernel Linux, tetapi tidak ada situs web yang menjelaskan atau mendefinisikan kebiasaan PCI. Apa itu kebiasaan PCI?
Jawaban:
"Quirks" adalah atribut perangkat yang dianggap tidak patuh dengan operasi yang diharapkan.
Ini contoh dari 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 */
}
Ini adalah "kekhasan" karena perangkat melaporkan kesalahan palsu. Ketika perangkat ini beroperasi, quirk tersebut menetapkan atribut tertentu yang membuat bagian kernel lain bertindak berbeda (mungkin dengan mengabaikan kesalahan palsu, atau dengan mengatasi masalah yang diketahui).
Namun, tidak semua kebiasaan dalam kernel Linux seperti ini. Alih-alih hanya menonaktifkan fitur yang terpengaruh, beberapa mencoba untuk mengatasinya, misalnya:
/*
* 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
kernel?
quirks.c
vendor dan / atau perangkat. Menonaktifkan kebiasaan dapat memiliki efek bervariasi tergantung pada seberapa serius solusinya; itu bisa tidak memiliki efek samping yang nyata atau dapat menyebabkan perangkat tidak berfungsi dengan baik.
CONFIG_PCI_QUIRKS
kembali perbaikan kernel masalah ini.