PCI tuhaflıkları nedir?


10

Linux çekirdeği hakkında okurken PCI gariplikleri hakkında çok şey duyuyorum, ancak hiçbir web sitesi PCI garipliklerini açıklamıyor veya tanımlamıyor. PCI tuhaflıkları nedir?


1
Tuhaflık sadece sezgisel olmayan bir tutarsızlıktır. Teknik bir terim değil. Muhtemelen söylediklerini ayrıntılı olarak açıklamak için bahsettiğiniz metni görmemiz gerekir. Sürücüleri yıllar boyunca karşılaştıkları çeşitli tuhaflıklar etrafında çalışmak için kullanabileceği rutinleri sağlayan bir dosya olmasına rağmen . Ama sonuçta, sadece normal İngilizce dil terimiyle aynı anlamda kullanılan gayri resmi bir terim.
Bratchley

1
Gerçekten merak ediyorsanız, bu dosya her rutinin ne yaptığını açıklayan oldukça iyi yorumlanmıştır.
Bratchley

Yanıtlar:


14

"Tuhaflıklar", bir cihazın beklenen işlemle uyumlu olmadığı düşünülen özelliklerdir.

İşte bir örnek 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 */
}

Cihaz sahte hatalar bildirdiği için bu bir "tuhaflık" tır. Bu aygıt çalıştığında, tuhaflık çekirdeğin diğer bölümlerinin farklı şekilde hareket etmesini sağlayan belirli nitelikleri ayarlar (belki de sahte hataları göz ardı ederek veya bilinen bir soruna geçici olarak çalışarak).

Yine de Linux çekirdeğindeki tüm tuhaflıklar böyle değil. Etkilenen özelliği basitçe devre dışı bırakmak yerine, bazıları bunun üzerinde çalışmayı dener, örneğin:

/*
 * 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");
        }
}

@Chris Down - Cihazımda PCI tuhaflıkları olduğunu nasıl fark edebilirim? PCI quirk workaroundsÇekirdeği devre dışı bırakırsam ne olur ?
Martin Vegter

Bu tamamen sahip olduğunuz cihaza bağlıdır. Aygıta bağlı olarak, çekirdek günlüğünde bir tuhaf geçici çözümün uygulandığını belirten bir ileti olabilir (yukarıdaki ikinci örnekte olduğu gibi) veya olmayabilir. Tek kesin yol quirks.csatıcı ve / veya cihazı aramaktır. Tuhaflıkları devre dışı bırakmak, geçici çözümün ne kadar ciddi olduğuna bağlı olarak çeşitli bir etkiye sahip olabilir; fark edilebilir bir yan etkisi olmayabilir veya cihazın düzgün çalışmamasına neden olabilir.
ruscur

"Ne olacağına" bir örnek, örneğin, video kartı sürücüsünün video kartı BIOS'unu okuyamaması ve sonunda doğru şekilde yapılandıramaması olabilir. Having CONFIG_PCI_QUIRKSsorun çekirdek düzeltmeleri geri.
PF4Public

Ne olacağı tuhaflığa özgüdür. Hiçbir şey olmuyor her yerde olabilir asılı makine / çöküyor. Teknik olarak bazı bileşenlerden bir miktar duman çıkabilir ve bu da asmadan daha kötüdür. Her girişin, başka marka veya model sorunları ile hiçbir şekilde ilişkili olmadığı varsayılmaması gereken kendi özel meselesidir.
old_timer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.