मेरे पास एक लिनक्स डिवाइस ड्राइवर है जो किसी डिवाइस पर इंटरफेस करता है, सिद्धांत रूप में, 64-बिट पते का उपयोग करके डीएमए कर सकता है। मैं यह देखना चाहता हूं कि यह वास्तव में काम करता है।फोर्स लिनक्स केवल 4 जी से अधिक स्मृति का उपयोग करने के लिए?
क्या कोई आसान तरीका है कि मैं एक लिनक्स मशीन को भौतिक पता 4 जी के नीचे किसी भी स्मृति का उपयोग न करने के लिए मजबूर कर सकता हूं? यह ठीक है अगर कर्नेल छवि कम स्मृति में है; मैं सिर्फ एक ऐसी स्थिति को मजबूर करने में सक्षम होना चाहता हूं जहां मैं अपने सभी गतिशील आवंटित बफर को जानता हूं, और मेरे लिए आवंटित कोई भी कर्नेल या उपयोगकर्ता बफर 32 बिट्स में एड्रेसेबल नहीं हैं। यह एक छोटी सी बलवान शक्ति है, लेकिन मैं जो भी सोच सकता हूं उससे कहीं अधिक व्यापक होगा।
यह मुझे (1) हार्डवेयर को पकड़ने में मदद कर सकता है जो सही ढंग से कॉन्फ़िगर नहीं किया गया था या पूर्ण पते (या केवल सादा टूटा हुआ) के साथ लोड किया गया था (2) बाउंस बफर के आकस्मिक और अनावश्यक उपयोग (क्योंकि वहां कहीं भी नहीं है उछाल)।
स्पष्टीकरण: मैं x86_64 चला रहा हूं, इसलिए मुझे पुराने 32-बिट एड्रेसिंग समस्याओं के बारे में परवाह नहीं है। मैं बस परीक्षण करना चाहता हूं कि एक ड्राइवर 64-बिट भौतिक पते का उपयोग कर बफरों के साथ सही ढंग से इंटरफ़ेस कर सकता है।
ऐसा लगता है कि मुझे जो चाहिए वह बहुत करीब है। दो चेतावनी हैं: पहला, memmap = nn $ ss कर्नेल को स्मृति-मैप किए गए डिवाइस पढ़ने से रोक सकता है, जिसमें पीसीआई/पीसीआई बस पर सबकुछ शामिल है। चारों ओर काम किया जाना चाहिए। दूसरा, मेरे पास बूट पर आवश्यक स्मृति को रोकने का कोई तरीका नहीं है लेकिन फिर डीएमए बफर के रूप में पुनर्नवीनीकरण से मुक्त (जैसे initrd छवि) को मुक्त किया गया है। अभी भी एक उपयोगी उत्तर, धन्यवाद। –