क्या PCIe हॉटप्लग वास्तव में अभ्यास में काम करता है?


20

मैं /security/109199/is-physical-security-less-important-now-for-securing-a-server?soredirect=1#comment194327_10919999 की टिप्पणियों में चर्चा में आ गया हूं

प्रश्न सरल है। क्या किसी को PCIe कार्ड के सफलतापूर्वक हॉटप्लगिंग का अनुभव है? क्या इसके लिए विशेष मदरबोर्ड और कार्ड की आवश्यकता होती है, या क्या इसे सभी उपभोक्ता हार्डवेयर पर काम करना चाहिए?


1
इसका उत्तर दो गुना होना चाहिए। हार्डवेयर और सॉफ्टवेयर (इसके ड्राइवर) दोनों को हॉट-प्लगिंग का समर्थन करना चाहिए।
जिप्सी

मुझे नहीं पता कि क्या यह मदद करता है, लेकिन मैंने पहले gpu को प्रभावित किए बिना kvm विंडोज़ मशीन से दूसरे पास-थ्रू GPU को सफलतापूर्वक हटा दिया (स्क्रीन बस एक सेकंड के लिए फ़्लिकर की गई)।
feedc0de

जवाबों:


43

मैं पीसीआई-एक्सप्रेस हार्डवेयर डिजाइन करता था जिसे हार्डवेयर और सॉफ्टवेयर में पूर्ण हॉट-प्लग समर्थन की आवश्यकता होती थी, और यह निश्चित रूप से संभव है, लेकिन यह काफी शामिल है और इसके लिए व्यापक सॉफ्टवेयर समर्थन की आवश्यकता होती है - हार्डवेयर वास्तव में काफी सरल है। मुझे हार्डवेयर डिजाइन करना था, फिर फाइबर और तांबे पर गर्म-प्लगिंग मनमाने PCIe उपकरणों के लिए BIOS (UEFI) और कर्नेल (लिनक्स) समर्थन को लागू करें।

सॉफ़्टवेयर के दृष्टिकोण से, किसी को यह याद रखना चाहिए कि PCIe PCI सॉफ्टवेयर मॉडल के साथ जारी है, जिसमें बस, डिवाइस, फ़ंक्शन एड्रेसिंग की अवधारणाएं शामिल हैं। जब PCI बस को एन्यूमरेट किया जाता है, तो इसे चौड़ाई-पहली खोज के रूप में किया जाता है: PCI बस टोपोलॉजी tldp.org से

पीसीआई गणन आमतौर पर दो बार किया जाता है। सबसे पहले, आपका BIOS (UEFI या अन्यथा) यह करेगा, यह पता लगाने के लिए कि वर्तमान में और उन्हें कितनी स्मृति की आवश्यकता है। यह डेटा होस्ट ओएस पर पारित किया जा सकता है, जो इसे इस रूप में ले सकता है, लेकिन लिनक्स और विंडोज अक्सर अपनी खुद की गणना प्रक्रिया भी करते हैं। लिनक्स पर, यह कोर पीसीआई सबसिस्टम के माध्यम से किया जाता है, जो बस की खोज करता है, यदि डिवाइस की आईडी के आधार पर आवश्यक हो तो कोई भी क्वर्क लागू करता है, और फिर एक ड्राइवर को लोड करता है जिसके पास इसके जांच कार्य में एक मेल आईडी है। एक PCI डिवाइस ID'd है इसके संयोजन के माध्यम से Vendor ID (16-बिट्स, जैसे Intel 0x8086 है) और डिवाइस ID (एक और 16-बिट्स) - सबसे आम इंटरनेट स्रोत यहां है: http://pcidatabase.com /

कस्टम सॉफ्टवेयर का हिस्सा इस एन्यूमरेशन प्रक्रिया के दौरान आता है और आपको पीसीआई बस नंबरों से आगे आरक्षित करना चाहिए , और संभावित भविष्य के उपकरणों के लिए मेमोरी सेगमेंट - इसे कभी-कभी ' बस पैडिंग ' कहा जाता है । यह भविष्य में बस को फिर से संवारने की आवश्यकता से बचा जाता है जो अक्सर सिस्टम को बाधित किए बिना नहीं किया जा सकता है। पीसीआई उपकरण में BARs ( आधार पता रजिस्टर होता है) जो मेजबान से अनुरोध करता है कि डिवाइस को कितने और किस प्रकार (मेमोरी या आई / ओ स्पेस) मेमोरी की आवश्यकता है - यही कारण है कि आपको आईएसए जैसे जंपर्स की आवश्यकता नहीं है :) इसी तरह, लिनक्स कर्नेल पीसीआई हॉटप्लग को पीसीआई के माध्यम से लागू करता है चालक। विंडोज संस्करण के आधार पर अलग-अलग चीजें करता है - पुराने संस्करण (मुझे लगता है कि XP) कुछ भी BIOS को अनदेखा करता है जो कहता है और यह स्वयं की जांच करता है। नए संस्करण, मेरा मानना ​​है कि होस्ट फ़र्मवेयर (BIOS / EFI) द्वारा उपलब्ध कराए गए ACPI DSDT के प्रति अधिक सम्मानजनक है और यह जानकारी सम्मिलित करेगा।

यह बहुत शामिल लग सकता है और यह है! लेकिन याद रखें कि ExpressCard स्लॉट के साथ कोई भी लैपटॉप / डिवाइस (जो PCIe को लागू करता है क्योंकि आपके पास USB-only ExpressCards हो सकता है) को यह करना होगा, हालांकि आम तौर पर पैडिंग बहुत सरल है - सिर्फ एक बस। मेरा पुराना हार्डवेयर एक PCIe स्विच हुआ करता था जिसके पीछे एक और 8 उपकरण थे, इसलिए पैडिंग कुछ अधिक जटिल हो गई।

हार्डवेयर के दृष्टिकोण से, यह बहुत आसान है। कार्ड के GND पिन पहले संपर्क बनाते हैं, और हम कनेक्शन बनाने के बाद पावर को अनुक्रमित करने के लिए कार्ड पर LTC या इसी तरह का एक हॉट-स्वैग कंट्रोलर IC लगाते हैं। इस बिंदु पर, ऑन-बोर्ड ASIC या FPGA यह पावर-अप अनुक्रम शुरू करता है, और इसके PCI एक्सप्रेस लिंक के लिंक-प्रशिक्षण का प्रयास करने लगता है। माना कि मेजबान हॉट-प्लगिंग और PCI एक्सप्रेस SLTCAP / SLTCTRL का समर्थन करता हैरजिस्टर (कल्पना में: पीसीआई एक्सप्रेस स्लॉट क्षमता रजिस्टर, पीसीआई एक्सप्रेस स्लॉट कंट्रोल रजिस्टर। इसके लिए 1 और 2 भी है - दो रजिस्टरों में विभाजित करने के लिए पर्याप्त बिट्स)। पोर्ट गर्म-प्लग सक्षम है यह इंगित करने के लिए पोर्ट को कॉन्फ़िगर किया गया था, सॉफ्टवेयर नए डिवाइस को एन्यूमरेट करना शुरू कर सकता है। स्लॉट स्थिति (SLTSTA, PCI एक्सप्रेस स्लॉट स्टेटस रजिस्टर) रजिस्टर में बिट्स होते हैं, जो लक्ष्य डिवाइस बिजली दोष, यांत्रिक रिलीज कुंडी, और निश्चित रूप से उपस्थिति का पता लगा सकते हैं + उपस्थिति बदल गई है।

उपर्युक्त रजिस्टर 'PCI (एक्सप्रेस) कॉन्फ़िगरेशन स्पेस' में स्थित हैं, जो प्रत्येक संभावित bdf (बस: डिवाइस: फ़ंक्शन) के लिए आवंटित मेमोरी मैप (PCIe के लिए 4K) का एक छोटा क्षेत्र है। वास्तविक रजिस्टर आम तौर पर परिधीय उपकरण पर रहते हैं।

होस्ट पक्ष पर, हम PRSNT1 # / PRSNT2 # का उपयोग साधारण डीसी सिग्नलों के रूप में कर सकते हैं जो एक पावर स्विच IC की क्षमता को फीड करते हैं, या एक चिप के लिए GPIO पर चलते हैं या एक IRQ का कारण बनता है और SW- हे को ट्रिगर करते हैं, कुछ डाला गया , जाओ इसे खोजो और इसे कॉन्फ़िगर करो! ' दिनचर्या।

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

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

व्यवहार में, आप इस तकनीक का उपयोग कभी भी करते हैं जब आप किसी कंप्यूटर से PCIe ExpressCard निकालते / डालते हैं। इसके अतिरिक्त, उच्च-प्रदर्शन वाले ब्लेड सिस्टम (दूरसंचार या अन्यथा) नियमित रूप से इस तकनीक का उपयोग करते हैं।

अंतिम टिप्पणी - आधार स्पेस से जुड़ी पीडीएफ को बचाएं, पीसीआई-एसआईजी आमतौर पर उस के लिए रुपये लेते हैं :)


2
और पीसीआई उपकरण के रूप में काम करने वाले अपेक्षाकृत सस्ते FPGA (जैसे साइक्लोन IV GX) के साथ सुरक्षा चर्चा को बंद करने के लिए, आपकी मेजबान मशीन की जाती है - FPGA जो भी DMA क्रिया चाहती है वह कर सकती है।
क्रुनाल देसाई

महान व्याख्या। जब एक हॉट-प्लग सक्षम PCIe कार्ड स्वैप हो जाता है तो क्या होता है? एक तरफ, ओएस को PCIe टोपोलॉजी को फिर से दोहराना चाहिए , यह देखते हुए कि एक नया उपकरण डाला गया था (यह BARs / बसों की मात्रा का अनुमान नहीं लगा सकता है जो नए सम्मिलित डिवाइस द्वारा अनुरोध किया जा सकता है), लेकिन दूसरी तरफ - सिस्टम में फिर से
एन्युमरेट करना

2
हाँ, यह मुश्किल हो जाता है। इसलिए एक उदाहरण के रूप में एक्सप्रेसकार्ड (ईसी) का उपयोग करते हुए, मैंने एक तरीका यह किया कि एक डिवाइस को जोड़ने के लिए कई प्रकार के उपकरणों का समर्थन करने के लिए बूस की संख्या को 'पैड' किया जाए; एक साधारण ईसी स्लॉट के साथ अधिकांश BIOS बस एक बस नंबर द्वारा पैड करते हैं (हमने उस स्लॉट का उपयोग कई PCIe उपकरणों के विस्तार के लिए किया है)। इसी तरह, आप विभिन्न प्रकार के उपकरणों का समर्थन करने के लिए वहाँ एक श्रुतिभेदी पता सीमा के साथ IRQ के साथ मेमोरी पैड को 'पैड' कर सकते हैं। ओएस (ACPI के साथ / बिना) तब वह क्या कर सकता है। यह वास्तव में "सरल" है, लेकिन एक आधुनिक मशीन में SW परतों की जटिलताएं इसे कठिन बनाती हैं।
क्रुणाल देसाई

क्या PCIe एन्यूमरेशन वास्तव में गहराई-पहली खोज नहीं है? आधार और सीमा रजिस्टर इस तरह स्थापित किए जाते हैं कि किसी दिए गए पोर्ट के नीचे के सभी उपकरणों को अगले पोर्ट पर जाने से पहले गणना की जानी चाहिए।
अलेक्स.फोन्निच

8

बशर्ते पावर स्टेट मॉनिटरिंग कनेक्शन अपस्ट्रीम स्विच द्वारा कनेक्टर से अवगत कराया गया हो, और प्लग करने योग्य इकाई ने इन पिनों को उजागर किया है और उन्हें ठीक से उपयोग करने के लिए कॉन्फ़िगर किया गया है और (जिप्पी नोट्स के रूप में) सॉफ्टवेयर हॉटप्लग इवेंट का पता लगा सकता है और ठीक से प्रतिक्रिया दे सकता है, जवाब हां है।

आम तौर पर, इस क्षमता का उपयोग मुख्य रूप से सर्वर खेतों और डेटा सेंटरों में हॉटप्लगिंग के लिए किया जाता है। मुझे यकीन नहीं है कि उपभोक्ता उपकरण पूरी तरह से हॉटप्लग सक्षम होंगे (यह है, मुझे समझ में आता है, विनिर्देश में वैकल्पिक)।

ध्यान रखें कि हॉटप्लग का समर्थन करने के लिए आवश्यक हार्डवेयर प्रदान करना पैसा खर्च करता है (हालांकि बहुमत PCIe समापन बिंदु के भीतर है, इसे अभी भी स्थापित करना है, आमतौर पर एक एप्रोम के माध्यम से), यह आमतौर पर एक मूल्य संवेदनशील बाजार में पेश नहीं किया जाएगा।

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

इस जटिलता के बिना, पीसीआई सबसिस्टम एक बार (सिस्टम रीसेट पर) स्कैन किया जाता है और स्थिर रहता है; और प्रयास की आवश्यकता नहीं है।

यहां PCIe v3.0 बेस स्पेस , पेज 514, हॉट प्लग सपोर्ट पर सेक्शन 6.7 है। एक PCIe कार्ड का एक उदाहरण जो हॉट-प्लग का समर्थन करता है, यहाँ देखा जा सकता है, जो कि iocrest के सौजन्य से है । यह स्पष्ट रूप से देखा जा सकता है कि छोटे कनेक्टर का पता लगाया जाता है: 2-पोर्ट SATA III (6G) PCI-e कंट्रोलर कार्ड, Marvell 88SE9120 चिपसेट

हालांकि इस Axxon कार्ड पर, छोटे ट्रेस को स्पष्ट रूप से आसन्न के लिए रूट किया जा सकता है। अकेले भौतिक स्तर पर, यह कार्ड हॉट-प्लग का समर्थन नहीं कर सकता: MAP / 950 1 RS232 सीरियल पोर्ट I / O कार्ड के लिए PCI एक्सप्रेस (PCIe)


2

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

पूरे सुरक्षा मानकों की तरह बहुत कुछ। आधा (<-hyperbole?) EE लेबल हमारे पास है जिससे आप संगतता का दावा कर सकते हैं, आपके पास परीक्षण किए गए सब कुछ होने के बिना। चूंकि हॉटप्लग सामान जीवन के लिए खतरा नहीं है, इसलिए मैं कल्पना नहीं कर सकता कि लोग इसके बारे में अधिक सख्त हैं।

मैंने, एक के लिए, कभी भी इसे आज़माया नहीं है और जैसा कि मेरे क्लीवो लैपटॉप ने डेस्कटॉप को मेरे घर से पूरी तरह से निकाल दिया है, मैं इसे आज़माने के बारे में नहीं हूँ, क्योंकि मेरे लैपटॉप में GPU मॉड्यूल का दावा है कि कोई हॉटप्लग क्षमता नहीं है और यह बिना महंगा भी है डेव जोन्स और एक विस्फोट GPU के vid के लिए $ $ $ मिल रहा है।


1

हाँ यह काम करता है। मैं इसे एक राउटर चेसिस लाइनकार्ड (10+ PCIe युक्त डिवाइस) को हॉटप्लग करने में सक्षम था। चेसिस में 16 हॉटप्लग-सक्षम कार्ड हैं। किसी भी कार्ड को दूसरे कार्डों पर ट्रैफ़िक संचालन को प्रभावित किए बिना रन टाइम पर बेतरतीब ढंग से अंदर या बाहर प्लग किया जा सकता है।

इसे काम करने की जटिलता सीपीयू पर्यावरण पर निर्भर करती है। एक एम्बेडेड सीपीयू पर, काम केवल स्थैतिक संसाधनों के नक्शे को स्थापित करना है और पीसीआई उपकरणों को संलग्न और अलग करके कनेक्शन परिवर्तन की घटनाओं को संभालना है। X86 पर, यह त्रुटि हैंडलिंग और BIOS / OS इंटरैक्शन में जटिलता के कारण बहुत अधिक शामिल है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.