PCI quirks क्या हैं?


10

मैं लिनक्स कर्नेल के बारे में पढ़ते समय पीसीआईघड़ी quirks के बारे में बहुत कुछ सुनता हूं, लेकिन कोई भी वेबसाइट PCI quirks की व्याख्या या परिभाषित नहीं करती है। PCI quirks क्या हैं?


1
एक विचित्रता सिर्फ एक सहज ज्ञान युक्त असंगति है। यह तकनीकी शब्द नहीं है। हमें संभवतः उस पाठ को देखने की आवश्यकता होगी जिसका आप जिक्र कर रहे हैं ताकि वे जो कह रहे हैं उस पर विस्तार से बता सकें। हालाँकि , एक ऐसी फाइल है जो रूटीन ड्राइवरों को प्रदान करती है जो विभिन्न क्वैरक्स के आसपास काम करने के लिए उपयोग कर सकते हैं जो वे वर्षों से चले आ रहे हैं। लेकिन अंत में, यह सिर्फ एक अनौपचारिक शब्द है जिसका उपयोग नियमित अंग्रेजी भाषा के शब्द के समान है।
ब्राचली

1
यदि आप वास्तव में उत्सुक हैं, तो उस फ़ाइल को यह बताते हुए बहुत अच्छी तरह से टिप्पणी की जाती है कि प्रत्येक दिनचर्या क्या करती है।
ब्राचली

जवाबों:


14

"क्विरक्स" एक उपकरण की विशेषता है जिसे अपेक्षित संचालन के साथ गैर-योग्य माना जाता है।

यहाँ से एक उदाहरण है 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 */
}

यह एक "क्विक" है, क्योंकि डिवाइस स्प्रिटियस त्रुटियों की रिपोर्ट करता है। जब यह डिवाइस ऑपरेटिव होता है, तो क्वर्क कुछ विशेषताओं को सेट करता है जो कर्नेल के अन्य भागों को अलग-अलग तरीके से बनाते हैं (शायद सहज त्रुटियों को अनदेखा करके, या किसी ज्ञात समस्या के आसपास काम करके)।

लिनक्स कर्नेल में सभी क्विर्क इस तरह नहीं हैं, हालांकि। केवल प्रभावित सुविधा को अक्षम करने के बजाय, कुछ इसके चारों ओर काम करने की कोशिश करते हैं, उदाहरण के लिए:

/*
 * 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कर्नेल में अक्षम हूं ?
मार्टिन वेज्टर

यह पूरी तरह से आपके डिवाइस पर निर्भर करता है। डिवाइस के आधार पर, कर्नेल लॉग में एक संदेश हो सकता है जिसमें एक क्विक वर्कअराउंड का उल्लेख किया गया है (जैसा कि ऊपर दिए गए दूसरे उदाहरण में है), या नहीं हो सकता है। एकमात्र निश्चित तरीका quirks.cविक्रेता और / या उपकरण को देखना है। वर्कअराउंड कितना गंभीर है, इसके आधार पर quirks को निष्क्रिय करना एक अलग प्रभाव हो सकता है; इसका कोई ध्यान देने योग्य दुष्प्रभाव नहीं हो सकता है या यह डिवाइस को ठीक से काम नहीं कर सकता है।
रसकुर

"क्या होगा" का एक उदाहरण हो सकता है, उदाहरण के लिए, वीडियोकार्ड चालक को वीडियोकार्ड BIOS पढ़ने में असमर्थ होने और अंत में इसे ठीक से कॉन्फ़िगर करने में असमर्थ है। CONFIG_PCI_QUIRKSकर्नेल में वापस होने से समस्या ठीक हो जाती है।
PF4Public

क्या होगा यह क्विक के लिए विशिष्ट है। यह कहीं से भी हो सकता है यह मशीन को लटका / क्रैश करता है। तकनीकी रूप से कुछ धुएं को कुछ घटकों से भी बाहर निकलने दिया जा सकता है जो एक हैंग से भी बदतर है। प्रत्येक प्रविष्टि का अपना विशिष्ट मुद्दा है, जिसे किसी भी तरह से अन्य ब्रांडों या मॉडल मुद्दों से संबंधित नहीं माना जाता है।
old_timer
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.