2009-12-01 11 views
12

मैं या तो एक कर्नेल मोड कॉल की तलाश में हूं जिसे मैं ड्राइवर, उपयोगकर्तालैंड उपयोगिता, या एक सिस्टम कॉल से कर सकता हूं जो कर्नेल से पीसीआई बस को देखने के लिए कहेंगे और या तो पूरी तरह से अपना प्रारंभिक पुन: चलाएगा, या प्रारंभ करें एक विशिष्ट उपकरण। विशेष रूप से, मुझे बूट के बाद बस में जोड़े गए डिवाइस को पहचानने के लिए कर्नेल की आवश्यकता होती है और फिर उसके पता स्थान, बाधा, और अन्य कॉन्फ़िगरेशन पैरामीटर कॉन्फ़िगर करें, और आखिरकार डिवाइस को सक्षम करें ताकि मैं इसके लिए ड्राइवर लोड कर सकूं (जब तक यह सब नहीं ड्राइवर लोड के हिस्से के रूप में होता है)।क्या लिनक्स कर्नेल से अपने पीसीआई प्रारंभिक कोड को फिर से चलाने के लिए पूछने का कोई तरीका है?

मैं इसके लिए 2.4.x श्रृंखला कर्नेल पर फंस गया हूं, और वर्तमान में 2.4.20 के साथ काम कर रहा हूं, लेकिन यह महत्वपूर्ण होने पर 2.4.37 पर जा रहा है। डिस्ट्रो एक रैम डिस्क में चल रहे Red Hat 7.3 को छीन लिया गया है, लेकिन मैं यह काम करने के लिए जो भी टूल्स की आवश्यकता है (जब तक वे 2.4 श्रृंखला के साथ अच्छा खेलते हैं) जोड़ सकते हैं।

यदि कुछ पृष्ठभूमि स्पष्ट करने में मदद करेगी कि मैं क्या करने की कोशिश कर रहा हूं: एक ठंडे बूट से, एक बार लिनक्स में मैं एक एफपीजीए प्रोग्राम करने के लिए जीपीआईओ का उपयोग करता हूं। एक बार प्रोग्राम किए जाने वाले एफपीजीए का एक हिस्सा, एक साधारण पीसीआई डिवाइस लागू करता है। वर्तमान में, एफपीजीए प्रोग्रामिंग के बाद, मैं सिस्टम को रीबूट करता हूं और लिनक्स आने के बाद डिवाइस को पहचानता है और इसके लिए ड्राइवर लोड करता है। कि रिबूट की आवश्यकता होगी, के

इसके बजाय, मैं बस पीसीआई डिवाइस खोजने के लिए ऊपर (मैं कर्नेल बजाय पूछने का, अपने आप ही पीसीआई डिवाइस खोजने के लिए कॉन्फ़िगर किया है बूट के दौरान जो कुछ भी यह करता है करने के लिए कर्नेल पूछना चाहेंगे उस जानकारी के लिए BIOS, इसलिए BIOS को इस डिवाइस के बारे में जानने की आवश्यकता नहीं होगी (मुझे आशा है))।

मेरा मानना ​​है कि लिनक्स प्रोग्राम किए जाने के बाद डिवाइस को देखने में सक्षम है लेकिन रीबूट से पहले, क्योंकि scanpci प्रोग्राम के बाद डिवाइस दिखाएगा, जैसा कि lspci -H 1 होगा। मुझे इसे /proc/pci में कॉन्फ़िगर करने और सक्षम करने के लिए बस एक तरीका चाहिए।

+2

आपको "बहन" साइट पर जाना चाहिए: http://serverfault.com/ और वहां से पूछें। यह कोडिंग से संबंधित समस्याओं के लिए है, आपकी सटीक समस्या sysadmin से अधिक प्रतीत होती है ताकि वे आपको तेज़ी से/बेहतर मदद कर सकें। – Stan

उत्तर

2

http://www.linuxjournal.com/article/5633 सुझाव देता है कि आपको pcihpfs का उपयोग करके 2.4 कर्नेल के साथ ऐसा करने में सक्षम होना चाहिए।

यदि यह काम नहीं कर रहा है, तो शायद ड्राइवर हॉटप्लग का समर्थन नहीं करता है?

3

यदि आप पीसीआई स्कैन को फिर से प्राप्त करने के बारे में नहीं समझते हैं तो आप केएक्सईसी के साथ रीबूट तेज कर सकते हैं। यदि आप पहले से नहीं हैं, तो आप इसे एलकेएमएल पर पूछ सकते हैं।

मॉड्यूल को उतारने/पुनः लोड करने में मदद नहीं करता है, है ना?

1

यदि आप उपयोग में रहते हैं तो अन्य पीसीआई उपकरणों के पते को फिर से कॉन्फ़िगर किया गया है, तो यह शायद सिस्टम को क्रैश करेगा।

नया कार्ड कॉन्फ़िगर करने का एक बेहतर तरीका होगा। यदि आपके कर्नेल को कार्डस डिवाइस के लिए समर्थन है, तो यह पहले से ही जानता है कि एक नए डाले गए पीसीआई डिवाइस को कॉन्फ़िगर कैसे करें (जो कि कार्डबस है)। आपको बस यह पता लगाने की आवश्यकता है कि कर्नेल को यह कैसे करना है ...

कर्नेल मॉड्यूल के लिए ऐसा करना संभव होना चाहिए। यहां तक ​​कि यदि आप अंतर्निहित हॉटप्लग कोड नहीं प्राप्त कर सकते हैं, तो आपको pci_bus_write_config_dword() और मित्रों को कॉल का उपयोग करके पीसीआई संसाधन सेट करने में सक्षम होना चाहिए। शायद कुछ आईआरक्यू रूटिंग सेटअप भी करने के लिए है।

2

यह नीचे दिया गया आदेश उपयोगकर्ता को रूट हब को पूरा करने में मदद करेगा।

echo "1" > /sys/class/pci_bus/0000\:00/rescan 
संबंधित मुद्दे

 संबंधित मुद्दे