intel OPAE FPGA லினக்ஸ் சாதன இயக்கி கட்டமைப்பு
OPAE இன்டெல் FPGA லினக்ஸ் சாதன இயக்கி கட்டமைப்பு
OPAE Intel FPGA இயக்கி, Intel FPGA தீர்வுகளுடன் கூடிய தளங்களில் FPGA முடுக்கிகளை உள்ளமைக்கவும், கணக்கிடவும், திறக்கவும் மற்றும் அணுகவும் பயனர்-வெளி பயன்பாடுகளுக்கு இடைமுகங்களை வழங்குகிறது மற்றும் FPGA மறுகட்டமைப்பு, ஆற்றல் மேலாண்மை மற்றும் மெய்நிகராக்கம் போன்ற கணினி-நிலை மேலாண்மை செயல்பாடுகளை செயல்படுத்துகிறது.
வன்பொருள் கட்டிடக்கலை
OS இன் புள்ளியில் இருந்து view, FPGA வன்பொருள் வழக்கமான PCIe சாதனமாகத் தோன்றும். FPGA சாதன நினைவகம் முன் வரையறுக்கப்பட்ட தரவு கட்டமைப்பைப் பயன்படுத்தி ஒழுங்கமைக்கப்பட்டுள்ளது (சாதன அம்ச பட்டியல்). பின்வரும் படத்தில் கீழே விளக்கப்பட்டுள்ளபடி, FPGA சாதனத்தால் ஆதரிக்கப்படும் அம்சங்கள் இந்தத் தரவு கட்டமைப்புகள் மூலம் வெளிப்படுத்தப்படுகின்றன:
FPGA PCIe சாதனம்
மெய்நிகர் செயல்பாடுகளை (VFs) உருவாக்க இயக்கி PCIe SR-IOV ஐ ஆதரிக்கிறது, இது மெய்நிகர் இயந்திரங்களுக்கு தனிப்பட்ட முடுக்கிகளை ஒதுக்க பயன்படுகிறது.
இன்டெல் கார்ப்பரேஷன். அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டவை. இன்டெல், இன்டெல் லோகோ மற்றும் பிற இன்டெல் குறிகள் இன்டெல் கார்ப்பரேஷன் அல்லது அதன் துணை நிறுவனங்களின் வர்த்தக முத்திரைகள். இன்டெல் அதன் FPGA மற்றும் செமிகண்டக்டர் தயாரிப்புகளின் செயல்திறனை இன்டெல்லின் நிலையான உத்தரவாதத்தின்படி தற்போதைய விவரக்குறிப்புகளுக்கு உத்தரவாதம் செய்கிறது, ஆனால் எந்த நேரத்திலும் அறிவிப்பு இல்லாமல் எந்த தயாரிப்புகளிலும் சேவைகளிலும் மாற்றங்களைச் செய்வதற்கான உரிமையை கொண்டுள்ளது. Intel எழுத்துப்பூர்வமாக ஒப்புக்கொண்டதைத் தவிர, இங்கு விவரிக்கப்பட்டுள்ள எந்தவொரு தகவல், தயாரிப்பு அல்லது சேவையின் பயன்பாடு அல்லது பயன்பாட்டிலிருந்து எழும் எந்தப் பொறுப்பு அல்லது பொறுப்பையும் இன்டெல் ஏற்காது. Intel வாடிக்கையாளர்கள் வெளியிடப்பட்ட எந்த தகவலையும் நம்புவதற்கு முன் மற்றும் தயாரிப்புகள் அல்லது சேவைகளுக்கான ஆர்டர்களை வழங்குவதற்கு முன்பு சாதன விவரக்குறிப்புகளின் சமீபத்திய பதிப்பைப் பெற அறிவுறுத்தப்படுகிறார்கள்.
பிற பெயர்கள் மற்றும் பிராண்டுகள் மற்றவர்களின் சொத்தாக உரிமை கோரப்படலாம்.
மெய்நிகராக்கப்பட்ட FPGA PCIe சாதனம்
FPGA மேலாண்மை இயந்திரம் (FME)
FPGA மேலாண்மை இயந்திரம் சக்தி மற்றும் வெப்ப மேலாண்மை, பிழை அறிக்கையிடல், மறுகட்டமைப்பு, செயல்திறன் அறிக்கை மற்றும் பிற உள்கட்டமைப்பு செயல்பாடுகளை செய்கிறது. ஒவ்வொரு FPGA க்கும் ஒரு FME உள்ளது, இது எப்போதும் உடல் செயல்பாடு (PF) மூலம் அணுகப்படுகிறது. பயனர்-வெளி பயன்பாடுகள் திறந்த() ஐப் பயன்படுத்தி FMEக்கான பிரத்யேக அணுகலைப் பெறலாம், மேலும் அதை ஒரு சலுகை பெற்ற பயனராக (ரூட்) Close() பயன்படுத்தி வெளியிடலாம்.
துறைமுகம்
ஒரு போர்ட் நிலையான FPGA துணி ("FPGA இடைமுக மேலாளர் (FIM)") மற்றும் ஒரு முடுக்கி செயல்பாடு (AF) கொண்ட பகுதியளவு மறுகட்டமைக்கக்கூடிய பகுதி ஆகியவற்றுக்கு இடையேயான இடைமுகத்தைக் குறிக்கிறது. மென்பொருளிலிருந்து முடுக்கிக்கான தொடர்பை போர்ட் கட்டுப்படுத்துகிறது மற்றும் மீட்டமைத்தல் மற்றும் பிழைத்திருத்தம் போன்ற அம்சங்களை வெளிப்படுத்துகிறது. ஒரு PCIe சாதனம் பல போர்ட்களைக் கொண்டிருக்கலாம், மேலும் FME சாதனத்தில் FPGA_FME_PORT_ASSIGN ioctl ஐப் பயன்படுத்தி ஒவ்வொரு போர்ட்டையும் VF மூலம் வெளிப்படுத்தலாம்.
முடுக்கி செயல்பாடு (AF) அலகு
- ஒரு முடுக்கி செயல்பாடு (AF) அலகு ஒரு துறைமுகத்துடன் இணைக்கப்பட்டுள்ளது மற்றும் முடுக்கி-குறிப்பிட்ட கட்டுப்பாட்டுப் பதிவேடுகளுக்குப் பயன்படுத்தப்படும் 256K MMIO பகுதியை வெளிப்படுத்துகிறது.
- போர்ட் சாதனத்தில் திறந்த() ஐப் பயன்படுத்தி, போர்ட்டுடன் இணைக்கப்பட்ட AFUக்கான பிரத்யேக அணுகலைப் பயனர்-இட பயன்பாடுகள் பெறலாம், மேலும் அதை Close() பயன்படுத்தி வெளியிடலாம்.
- பயனர்-இட பயன்பாடுகள் எம்எம்ஏபி() முடுக்கி MMIO பகுதிகளையும் செய்யலாம்.
பகுதி மறுசீரமைப்பு
மேலே குறிப்பிட்டுள்ளபடி, ஒரு முடுக்கி செயல்பாட்டின் (AF) பகுதி மறுகட்டமைப்பின் மூலம் முடுக்கிகளை மறுகட்டமைக்க முடியும். file. முடுக்கி செயல்பாடு (AF) FPGA இன் சரியான FIM மற்றும் இலக்கு நிலையான பகுதிக்கு (போர்ட்) உருவாக்கப்பட்டிருக்க வேண்டும்; இல்லையெனில், மறுசீரமைப்பு செயல்பாடு தோல்வியடையும் மற்றும் கணினி உறுதியற்ற தன்மையை ஏற்படுத்தும். sysfs மூலம் FME ஆல் வெளிப்படுத்தப்பட்ட இடைமுக ஐடியுடன் AF தலைப்பில் குறிப்பிடப்பட்டுள்ள இடைமுக ஐடியை ஒப்பிடுவதன் மூலம் இந்த இணக்கத்தன்மையை சரிபார்க்கலாம். இந்தச் சரிபார்ப்பு பொதுவாக IOCTL ஐ மறுகட்டமைப்பிற்கு அழைப்பதற்கு முன் பயனர் இடத்தால் செய்யப்படுகிறது.
குறிப்பு:
தற்போது, FPGA ஐ அணுகும் எந்த மென்பொருள் நிரலும், மெய்நிகராக்கப்பட்ட ஹோஸ்டில் இயங்குவது உட்பட, பகுதி மறுகட்டமைப்பை முயற்சிக்கும் முன் மூடப்பட வேண்டும். படிகள் இருக்கும்:
- விருந்தினரிடமிருந்து டிரைவரை இறக்கவும்
- விருந்தினரிடமிருந்து VF ஐ துண்டிக்கவும்
- SR-IOV ஐ முடக்கு
- பகுதி மறுகட்டமைப்பைச் செய்யவும்
- SR-IOV ஐ இயக்கு
- விருந்தினருக்கு VF ஐ இணைக்கவும்
- விருந்தினரில் டிரைவரை ஏற்றவும்
FPGA மெய்நிகராக்கம்
VM இல் இயங்கும் பயன்பாடுகளிலிருந்து முடுக்கியை அணுகுவதை இயக்க, பின்வரும் படிகளைப் பயன்படுத்தி அந்தந்த AFU இன் போர்ட்டை VFக்கு ஒதுக்க வேண்டும்:
- முன்னிருப்பாக அனைத்து AFU போர்ட்களையும் PF கொண்டுள்ளது. VFக்கு மறுஒதுக்கீடு செய்ய வேண்டிய எந்த போர்ட்டும் முதலில் FME சாதனத்தில் FPGA_FME_PORT_RELEASE ioctl மூலம் PF இலிருந்து விடுவிக்கப்பட வேண்டும்.
- PF இலிருந்து N போர்ட்கள் வெளியிடப்பட்டதும், SRIOV மற்றும் VFகளை இயக்க கீழே உள்ள கட்டளையைப் பயன்படுத்தலாம். ஒவ்வொரு VFக்கும் AFU உடன் ஒரே ஒரு போர்ட் மட்டுமே உள்ளது. எதிரொலி N > PCI_DEVICE_PATH/sriov_numvfs
- VFகள் வழியாக VMகளுக்கு அனுப்பவும்.
- VF இன் கீழ் AFU ஆனது VM இல் உள்ள பயன்பாடுகளில் இருந்து அணுகக்கூடியது (VF இன் உள்ளே அதே இயக்கியைப் பயன்படுத்தி).
குறிப்பு:
ஒரு FME ஐ VFக்கு ஒதுக்க முடியாது, எனவே PR மற்றும் பிற மேலாண்மை செயல்பாடுகள் PF மூலம் மட்டுமே கிடைக்கும்.
ஓட்டுனர் அமைப்பு
PCIe தொகுதி சாதன இயக்கி
ஓட்டுனர் அமைப்பு
FPGA சாதனங்கள் வழக்கமான PCIe சாதனங்களாகத் தோன்றும்; எனவே, FPGA PCIe சாதன இயக்கி (intel-FPGA-PCI.ko) எப்போதும் FPGA PCIe PF அல்லது VF கண்டறியப்பட்டவுடன் முதலில் ஏற்றப்படும். இயக்கி கட்டமைப்பில் இந்த இயக்கி ஒரு உள்கட்டமைப்பு பாத்திரத்தை வகிக்கிறது. இது:
- அம்ச சாதனங்களின் பெற்றோராக FPGA கொள்கலன் சாதனத்தை உருவாக்குகிறது.
- PCIe சாதனம் BAR நினைவகத்தில் செயல்படுத்தப்படும் சாதன அம்சப் பட்டியல் வழியாகச் சென்று, அம்ச சாதனங்கள் மற்றும் அவற்றின் துணை அம்சங்களைக் கண்டறியவும் மற்றும் கொள்கலன் சாதனத்தின் கீழ் அவற்றுக்கான இயங்குதள சாதனங்களை உருவாக்கவும்.
- SR-IOV ஐ ஆதரிக்கிறது.
- அம்ச சாதன உள்கட்டமைப்பை அறிமுகப்படுத்துகிறது, இது துணை அம்சங்களுக்கான செயல்பாடுகளை சுருக்கவும் மற்றும் அம்ச சாதன இயக்கிகளுக்கு பொதுவான செயல்பாடுகளை வெளிப்படுத்துகிறது.
PCIe தொகுதி சாதன இயக்கி செயல்பாடுகள்
- PCIe கண்டுபிடிப்பு, சாதனக் கணக்கீடு மற்றும் அம்சக் கண்டுபிடிப்பு ஆகியவற்றைக் கொண்டுள்ளது.
- பெற்றோர் சாதனம், FPGA மேலாண்மை இயந்திரம் (FME) மற்றும் போர்ட் ஆகியவற்றிற்கான sysfs கோப்பகங்களை உருவாக்குகிறது.
- இயங்குதள இயக்கி நிகழ்வுகளை உருவாக்குகிறது, இதனால் லினக்ஸ் கர்னல் அந்தந்த இயங்குதள தொகுதி இயக்கிகளை ஏற்றுகிறது.
FME பிளாட்ஃபார்ம் தொகுதி சாதன இயக்கி
- சக்தி மற்றும் வெப்ப மேலாண்மை, பிழை அறிக்கையிடல், செயல்திறன் அறிக்கை மற்றும் பிற உள்கட்டமைப்பு செயல்பாடுகள். FME இயக்கி மூலம் வெளிப்படுத்தப்படும் sysfs இடைமுகங்கள் வழியாக இந்த செயல்பாடுகளை நீங்கள் அணுகலாம்.
- பகுதி மறுசீரமைப்பு. FME இயக்கி PR துணை அம்ச துவக்கத்தின் போது FPGA மேலாளரை பதிவு செய்கிறது; அது உங்களிடமிருந்து FPGA_FME_PORT_PR ioctl ஐப் பெற்றவுடன், கொடுக்கப்பட்ட போர்ட்டில் பிட்ஸ்ட்ரீமின் பகுதியளவு மறுகட்டமைப்பை முடிக்க FPGA மேலாளரிடமிருந்து பொதுவான இடைமுகச் செயல்பாட்டை அது செயல்படுத்துகிறது.
- மெய்நிகராக்கத்திற்கான துறைமுக மேலாண்மை. FME இயக்கி இரண்டு ioctls ஐ அறிமுகப்படுத்துகிறது, FPGA_FME_PORT_RELEASE, இது PF இலிருந்து கொடுக்கப்பட்ட போர்ட்டை வெளியிடுகிறது; மற்றும் FPGA_FME_PORT_ASSIGN, போர்ட்டை மீண்டும் PFக்கு ஒதுக்குகிறது. PF இலிருந்து போர்ட் விடுவிக்கப்பட்டதும், PCIe இயக்கி வழங்கிய SR-IOV இடைமுகங்கள் மூலம் அதை VFக்கு ஒதுக்கலாம். மேலும் தகவலுக்கு, "FPGA மெய்நிகராக்கம்" ஐப் பார்க்கவும்.
FME இயங்குதள தொகுதி சாதன இயக்கி செயல்பாடுகள்
- FME எழுத்து சாதன முனையை உருவாக்குகிறது.
- FME sysfs ஐ உருவாக்குகிறது files மற்றும் FME sysfs ஐ செயல்படுத்துகிறது file அணுகல்கள்.
- FME தனியார் அம்ச துணை இயக்கிகளை செயல்படுத்துகிறது.
- FME தனியார் அம்ச துணை இயக்கிகள்:
- FME தலைப்பு
- வெப்ப மேலாண்மை
- சக்தி மேலாண்மை
- உலகளாவிய பிழை
- பகுதி மறுசீரமைப்பு
- உலகளாவிய செயல்திறன்
போர்ட் பிளாட்ஃபார்ம் தொகுதி சாதன இயக்கி
FME இயக்கியைப் போலவே, போர்ட் இயங்குதள சாதனம் உருவாக்கப்பட்டவுடன் FPGA போர்ட் (மற்றும் AFU) இயக்கி (intel-fpga-afu. ko) ஆய்வு செய்யப்படுகிறது. இந்த தொகுதியின் முக்கிய செயல்பாடு, போர்ட், AFU MMIO பிராந்திய ஏற்றுமதி, DMA இடையக மேப்பிங் சேவை, UMsg(1) அறிவிப்பு மற்றும் தொலைநிலை பிழைத்திருத்தச் செயல்பாடுகள் (Port, AFU MMIO Region Export, DMA buffer Mapping Service) உள்ளிட்ட தனிப்பட்ட முடுக்கிகளை அணுகுவதற்கு பயனர்-வெளி பயன்பாடுகளுக்கான இடைமுகத்தை வழங்குவதாகும். மேலே பார்க்கவும்).
ஒருங்கிணைந்த FPGA உடன் Intel Xeon® செயலிக்கான ஆக்சிலரேஷன் ஸ்டேக் மூலம் மட்டுமே UMsg ஆதரிக்கப்படுகிறது.
போர்ட் பிளாட்ஃபார்ம் தொகுதி சாதன இயக்கி செயல்பாடுகள்
- போர்ட் கேரக்டர் சாதன முனையை உருவாக்குகிறது.
- Port sysfs ஐ உருவாக்குகிறது files மற்றும் Port sysfs ஐ செயல்படுத்துகிறது file அணுகல்கள்.
- போர்ட் தனியார் அம்ச துணை இயக்கிகளை செயல்படுத்துகிறது.
- போர்ட் தனியார் அம்ச துணை இயக்கிகள்:
- போர்ட் தலைப்பு
- AFU
- துறைமுகப் பிழை
- UMsg(2)
- சிக்னல் தட்டு
விண்ணப்ப FPGA சாதனக் கணக்கீடு
/sys/class/fpga இன் கீழ் sysfs படிநிலையிலிருந்து FPGA சாதனத்தை பயன்பாடுகள் எவ்வாறு கணக்கிடுகின்றன என்பதை இந்தப் பிரிவு அறிமுகப்படுத்துகிறது. முன்னாள்ampகீழே, இரண்டு Intel FPGA சாதனங்கள் ஹோஸ்டில் நிறுவப்பட்டுள்ளன. ஒவ்வொரு FPGA சாதனத்திலும் ஒரு FME மற்றும் இரண்டு போர்ட்கள் (AFUs) உள்ளன. ஒவ்வொரு FPGA சாதனத்திற்கும், /sys/class/fpga கீழ் ஒரு சாதன அடைவு உருவாக்கப்படுகிறது:
/sys/class/fpga/intel-fpga-dev.0
/sys/class/fpga/intel-fpga-dev.1
ஒவ்வொரு முனையிலும் ஒரு FME மற்றும் இரண்டு போர்ட்கள் (AFUகள்) குழந்தை சாதனங்களாக உள்ளன:
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-port.0
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-port.1
/sys/class/fpga/intel-fpga-dev.1/intel-fpga-fme.1
/sys/class/fpga/intel-fpga-dev.1/intel-fpga-port.2
/sys/class/fpga/intel-fpga-dev.1/intel-fpga-port.3
பொதுவாக, FME/Port sysfs இடைமுகங்கள் பின்வருமாறு பெயரிடப்பட்டுள்ளன:
/sys/class/fpga/intel-fpga-dev.i/intel-fpga-fme.j/
/sys/class/fpga/intel-fpga-dev.i/intel-fpga-port.k/
நான் அனைத்து கொள்கலன் சாதனங்களையும் தொடர்ச்சியாக எண்ணுகிறேன், ஜே தொடர்ச்சியாக FME களை எண்ணுகிறேன் மற்றும் k தொடர்ந்து அனைத்து துறைமுகங்களையும் எண்ணுகிறேன்.
ioctl() மற்றும் mmap() க்கு பயன்படுத்தப்படும் சாதன முனைகளை இதன் மூலம் குறிப்பிடலாம்:
/dev/intel-fpga-fme.j
/dev/intel-fpga-port.k
PCIe இயக்கி கணக்கீடு
இந்த பகுதி ஒரு ஓவர் கொடுக்கிறதுview intel-fpga-pci.ko ஆல் செய்யப்படும் சாதனக் கணக்கீட்டிற்கான குறியீடு ஓட்டம். முக்கிய தரவு கட்டமைப்புகள் மற்றும் செயல்பாடுகள் முன்னிலைப்படுத்தப்பட்டுள்ளன. இந்த பகுதி எப்போது சிறப்பாக பின்பற்றப்படுகிறது viewஅதனுடன் உள்ள மூலக் குறியீட்டை (pcie.c)
கணக்கெடுப்பு தரவு கட்டமைப்புகள்
enum fpga_id_type {
PARENT_ID,
FME_ID,
PORT_ID,
FPGA_ID_MAX
};
நிலையான struct idr fpga_ids[FPGA_ID_MAX];
struct fpga_chardev_info {
கான்ஸ்ட் சார் *பெயர்;
dev_t devt;
};
struct fpga_chardev_info fpga_chrdevs[] = {
{ .name = FPGA_FEATURE_DEV_FME },
{ .name = FPGA_FEATURE_DEV_PORT},
};
நிலையான struct வகுப்பு *fpga_class;
நிலையான அமைப்பு pci_device_id cci_pcie_id_tbl[] = {
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_RCiEP0_MCP),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_VF_MCP),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_RCiEP0_SKX_P),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_VF_SKX_P),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_RCiEP0_DCP),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_VF_DCP),},
{0,}
};
நிலையான அமைப்பு pci_driver cci_pci_driver = {
.பெயர் = DRV_NAME,
.id_table = cci_pcie_id_tbl,
.probe = cci_pci_probe,
.நீக்கு = cci_pci_remove,
.sriov_configure = cci_pci_sriov_configure
};
struct cci_drvdata {
int device_id;
struct சாதனம் *fme_dev;
struct mutex பூட்டு;
struct list_head port_dev_list;
int released_port_num;
struct list_head பகுதிகள்;
};
struct build_feature_devs_info {
struct pci_dev *pdev;
void __iomem *ioaddr;
void __iomem *ioend;
முழு எண்ணாக தற்போதைய_பட்டி;
void __iomem *pfme_hdr;
struct device *parent_dev;
struct platform_device *feature_dev;
};
கணக்கெடுப்பு ஓட்டம்
- ccidrv_init()
- idr_init() ஐப் பயன்படுத்தி fpga_idகளை துவக்கவும்.
- alloc_chrdev_region() ஐப் பயன்படுத்தி fpga_chrdevs[i].devt ஐத் தொடங்கவும்.
- class_create() ஐப் பயன்படுத்தி fpga_class ஐ துவக்கவும்.
- pci_register_driver(&cci_pci_driver);
- cci_pci_probe()
- PCI சாதனத்தை இயக்கவும், அதன் பகுதிகளுக்கான அணுகலைக் கோரவும், PCI முதன்மை பயன்முறையை அமைக்கவும் மற்றும் DMA ஐ உள்ளமைக்கவும்.
- cci_pci_create_feature_devs() build_info_alloc_and_init()
- ஒரு struct build_feature_devs_info ஐ ஒதுக்கி, அதை துவக்கவும்.
.parent_dev ஆனது FME மற்றும் Port sysfs கோப்பகங்களைக் கொண்ட பெற்றோர் sysfs கோப்பகத்திற்கு (intel-fpga-dev.id) அமைக்கப்பட்டுள்ளது.
- ஒரு struct build_feature_devs_info ஐ ஒதுக்கி, அதை துவக்கவும்.
- parse_feature_list()
- FME, துறைமுகம் மற்றும் அவற்றின் தனிப்பட்ட அம்சங்களைக் கண்டறிய BAR0 சாதனத்தின் அம்சப் பட்டியலைப் பார்க்கவும்.
- parse_feature() parse_feature_afus() parse_feature_fme()
- ஒரு FME எதிர்கொள்ளும் போது:
- build_info_create_dev()
- FMEக்கு பிளாட்ஃபார்ம் சாதனத்தை ஒதுக்கவும், build_feature_devs_info.feature_dev இல் சேமிக்கவும்.
- feature_dev.id ஆனது idr_alloc(fpga_ids[FME_ID] இன் விளைவாக துவக்கப்பட்டது,
- feature_dev.parent ஆனது build_feature_devs_info.parent_dev என அமைக்கப்பட்டுள்ளது.
- அம்சம்_dev.resource இல் struct ஆதாரங்களின் வரிசையை ஒதுக்கவும்.
- ஒரு struct feature_platform_dataவை ஒதுக்கி, அதை துவக்கி, Feature_dev.dev.platform_data இல் ஒரு சுட்டியைச் சேமிக்கவும்
- create_feature_instance() build_info_add_sub_feature()
- Feature_dev.resource[FME_FEATURE_ID_HEADER] ஐத் தொடங்கவும்.
- feature_platform_data_add()
- Feature_platform_data.features[FME_FEATURE_ID_HEADER], .fops தவிர அனைத்தையும் துவக்கவும்.
- parse_feature() parse_feature_afus() parse_feature_port()
- ஒரு துறைமுகம் சந்திக்கும் போது:
- build_info_create_dev()
- build_feature_devs_info.feature_dev இல் சேமித்து, போர்ட்டுக்கான இயங்குதள சாதனத்தை ஒதுக்கவும்.
- feature_dev.id ஆனது idr_alloc (fpga_ids[PORT_ID]) இன் விளைவாக துவக்கப்பட்டது,
- feature_dev.parent ஆனது build_feature_devs_info.parent_dev என அமைக்கப்பட்டுள்ளது.
- Feature_dev.resource இல் struct ஆதாரத்தின் வரிசையை ஒதுக்கவும்.
- ஒரு struct feature_platform_dataவை ஒதுக்கி, அதை துவக்கி, Feature_dev.dev.platform_data இல் ஒரு சுட்டியைச் சேமிக்கவும்
- build_info_commit_dev()
- struct cci_drvdata.port_dev_list இல் உள்ள போர்ட்களின் பட்டியலில் போர்ட்டுக்கான struct feature_platform_data.node ஐ சேர்க்கவும்
- create_feature_instance() build_info_add_sub_feature()
- Feature_dev.resource[PORT_FEATURE_ID_HEADER] ஐத் தொடங்கவும்.
- feature_platform_data_add()
- Feature_platform_data.features[PORT_FEATURE_ID_HEADER], .fops தவிர அனைத்தையும் துவக்கவும்.
- parse_feature() parse_feature_afus() parse_feature_port_uafu()
- AFU சந்திக்கும் போது:
- create_feature_instance() build_info_add_sub_feature()
- Feature_dev.resource[PORT_FEATURE_ID_UAFU] ஐத் தொடங்கவும்.
- feature_platform_data_add()
- Feature_platform_data.features[PORT_FEATURE_ID_UAFU], .fops தவிர அனைத்தையும் துவக்கவும்.
- parse_feature() parse_feature_private() parse_feature_fme_private()
- ஒரு FME தனிப்பட்ட அம்சத்தை எதிர்கொள்ளும்போது:
- create_feature_instance() build_info_add_sub_feature()
- Feature_dev.resource[id] ஐத் தொடங்கவும்.
- feature_platform_data_add()
- Feature_platform_data.features[id], .fops தவிர அனைத்தையும் துவக்கவும்.
- parse_feature() parse_feature_private() parse_feature_port_private()
- போர்ட் தனிப்பட்ட அம்சம் எதிர்கொள்ளப்படும் போது: * create_feature_instance() build_info_add_sub_feature() * feature_dev.resource[id] ஐ துவக்கவும். * feature_platform_data_add() feature_platform_data.features[id], .fops தவிர அனைத்தையும் துவக்கவும்.
- parse_ports_from_fme()
- இயக்கி இயற்பியல் செயல்பாட்டில் (PF) ஏற்றப்பட்டிருந்தால்:
- FME தலைப்பில் விவரிக்கப்பட்டுள்ள ஒவ்வொரு போர்ட்டிலும் parse_feature_list() ஓட்டத்தை இயக்கவும்.
- தலைப்பில் உள்ள ஒவ்வொரு போர்ட் உள்ளீட்டிலும் குறிப்பிடப்பட்டுள்ள BAR ஐப் பயன்படுத்தவும்.
FME பிளாட்ஃபார்ம் சாதனத்தின் துவக்கம்
இந்த பகுதி ஒரு ஓவர் கொடுக்கிறதுview intel-fpga-fme.ko ஆல் செய்யப்படும் FME சாதன துவக்கத்திற்கான குறியீடு ஓட்டம். முக்கிய தரவு கட்டமைப்புகள் மற்றும் செயல்பாடுகள் உயர்த்தப்பட்டுள்ளன. இந்த பகுதி எப்போது சிறப்பாக பின்பற்றப்படுகிறது viewஅதனுடன் உள்ள மூலக் குறியீட்டை (fme-main.c)
FME இயங்குதள சாதன தரவு கட்டமைப்புகள்
struct feature_ops {
int (*init)(struct platform_device *pdev, struct அம்சம் *அம்சம்);
int (*uinit)(struct platform_device *pdev, struct அம்சம் *அம்சம்);
நீண்ட (*ioctl)(struct platform_device *pdev, struct அம்சம் *அம்சம்,
கையொப்பமிடப்படாத int cmd, கையொப்பமிடப்படாத நீண்ட arg);
int (*test)(struct platform_device *pdev, struct அம்சம் *அம்சம்);
};
கட்டமைப்பு அம்சம் {
கான்ஸ்ட் சார் *பெயர்;
int resource_index;
void __iomem *ioaddr;
struct feature_ops *ops;
};
கட்டமைப்பு அம்சம்_பிளாட்ஃபார்ம்_டேட்டா {
struct list_head node;
struct mutex பூட்டு;
கையொப்பமிடப்படாத நீண்ட dev_status;
struct cdev cdev;
struct platform_device *dev;
கையொப்பமிடப்படாத எண்ணை disable_count;
void * தனியார்;
முழு எண்;
int (*config_port)(struct platform_device *, u32, bool);
struct platform_device *(*fpga_for_each_port)(struct platform_device *,
void *, int (* match)(struct platform_device *, void *)); கட்டமைக்க
அம்ச அம்சங்கள்[0];
};
struct perf_object {
முழு ஐடி;
const struct attribute_group **attr_groups;
struct சாதனம் *fme_dev;
struct list_head node;
struct list_head குழந்தைகள்;
struct kobject kobj;
};
struct fpga_fme {
u8 port_id;
u64 pr_err;
struct சாதனம் *dev_err;
struct perf_object *perf_dev;
struct feature_platform_data *pdata;
};
FME பிளாட்ஃபார்ம் சாதனத்தின் துவக்க ஓட்டம்
FME துவக்க ஓட்டம்
- fme_probe() fme_dev_init()
- ஒரு struct fpga_fme ஐ துவக்கி அதை feature_platform_data.private புலத்தில் சேமிக்கவும்.
- fme_probe() fpga_dev_feature_init() feature_instance_init()
- ஒவ்வொரு மக்கள்தொகை கொண்ட அம்சத்திற்கும், feature_platform_data.features இல் ஒரு struct feature_ops ஐச் சேமிக்கவும்.
- சோதனை செயல்பாடு ஏதேனும் இருந்தால், struct இலிருந்து அழைக்கவும்.
- struct இலிருந்து init செயல்பாட்டை அழைக்கவும்.
- fme_probe() fpga_register_dev_ops()
- ஒரு கட்டமைப்பைப் பதிவுசெய்து, FME எழுத்துக்குறி சாதன முனையை உருவாக்கவும் file_செயல்பாடுகள்.
போர்ட் பிளாட்ஃபார்ம் சாதன துவக்கம்
இந்த பகுதி ஒரு ஓவர் கொடுக்கிறதுview intel-fpga-afu.ko மூலம் போர்ட் சாதன துவக்கத்திற்கான குறியீடு ஓட்டம். முக்கிய தரவு கட்டமைப்புகள் மற்றும் செயல்பாடுகள் முன்னிலைப்படுத்தப்பட்டுள்ளன. இந்த பகுதி எப்போது சிறப்பாக பின்பற்றப்படுகிறது viewஅதனுடன் உள்ள மூலக் குறியீடு (afu.c)
போர்ட் பிளாட்ஃபார்ம் சாதன தரவு கட்டமைப்புகள்
struct feature_ops {
int (*init)(struct platform_device *pdev, struct அம்சம் *அம்சம்);
int (*uinit)(struct platform_device *pdev, struct அம்சம் *அம்சம்);
நீண்ட (*ioctl)(struct platform_device *pdev, struct அம்சம் *அம்சம்,
கையொப்பமிடப்படாத int cmd, கையொப்பமிடப்படாத நீண்ட arg);
int (*test)(struct platform_device *pdev, struct அம்சம் *அம்சம்);
};
கட்டமைப்பு அம்சம் {
கான்ஸ்ட் சார் *பெயர்;
int resource_index;
void __iomem *ioaddr;
struct feature_ops *ops;
};
கட்டமைப்பு அம்சம்_பிளாட்ஃபார்ம்_டேட்டா {
struct list_head node;
struct mutex பூட்டு;
கையொப்பமிடப்படாத நீண்ட dev_status;
struct cdev cdev;
struct platform_device *dev;
கையொப்பமிடப்படாத எண்ணை disable_count;
void * தனியார்;
முழு எண்;
int (*config_port)(struct platform_device *, u32, bool);
struct platform_device *(*fpga_for_each_port)(struct platform_device *,
void *, int (* match)(struct platform_device *, void *));
கட்டமைப்பு அம்சங்கள்[0];
};
struct fpga_afu_region {
u32 இன்டெக்ஸ்;
u32 கொடிகள்;
u64 அளவு;
u64 ஆஃப்செட்;
u64 இயற்பியல்;
struct list_head node;
};
struct fpga_afu_dma_region {
u64 user_addr;
u64 நீளம்;
u64 அயோவா;
struct பக்கம் ** பக்கங்கள்;
struct rb_node முனை;
பூல் in_use;
};
struct fpga_afu {
u64 region_cur_offset;
int num_regions;
u8 num_umsgs;
struct list_head பகுதிகள்;
rb_root dma_regions கட்டமைக்கவும்;
struct feature_platform_data *pdata;
};
போர்ட் பிளாட்ஃபார்ம் சாதன துவக்க ஓட்டம்
துறைமுக துவக்க ஓட்டம்
- afu_probe() afu_dev_init()
- ஒரு struct fpga_afu ஐ துவக்கி அதை feature_platform_data.private புலத்தில் சேமிக்கவும்.
- afu_probe() fpga_dev_feature_init() feature_instance_init()
- ஒவ்வொரு மக்கள்தொகை கொண்ட அம்சத்திற்கும், feature_platform_data.features இல் ஒரு struct feature_ops ஐச் சேமிக்கவும்.
- சோதனை செயல்பாடு ஏதேனும் இருந்தால், struct இலிருந்து அழைக்கவும்.
- struct இலிருந்து init செயல்பாட்டை அழைக்கவும்.
- afu_probe() fpga_register_dev_ops()
- போர்ட் கேரக்டர் சாதன முனையை உருவாக்கி, ஒரு struct ஐ பதிவு செய்யவும் file_செயல்பாடுகள்.
FME IOCTLகள்
திறந்த நிலையில் அழைக்கப்படும் IOCTLகள் file /dev/intel-fpga-fme.j க்கு விளக்கமளிக்கும்
FPGA_CHECK_EXTENSION—தற்போது ஆதரிக்கப்படவில்லை.
FPGA_FME_PORT_RELEASE—arg என்பது ஒரு சுட்டி:
struct fpga_fme_port_release {
__u32 argsz; // இல்: sizeof(struct fpga_fme_port_release)
__u32 கொடிகள்; // இல்: 0 ஆக இருக்க வேண்டும்
__u32 port_id; // இல்: போர்ட் ஐடி (0 இலிருந்து) வெளியிட.
};
FPGA_FME_PORT_ASSIGN—arg என்பது ஒரு சுட்டி:
struct fpga_fme_port_assign {
__u32 argsz; // இல்: sizeof(struct fpga_fme_port_assign)
__u32 கொடிகள்; // இல்: 0 ஆக இருக்க வேண்டும்
__u32 port_id; // இல்: போர்ட் ஐடி (0 இலிருந்து) ஒதுக்க. (இருந்திருக்க வேண்டும்
முன்பு FPGA_FME_PORT_RELEASE ஆல் வெளியிடப்பட்டது)
};
FPGA_FME_PORT_PR—arg என்பது ஒரு சுட்டி:
struct fpga_fme_port_pr {
__u32 argsz; // இல்: sizeof(struct fpga_fme_port_pr)
__u32 கொடிகள்; // இல்: 0 ஆக இருக்க வேண்டும்
__u32 port_id; // இல்: போர்ட் ஐடி (0 இலிருந்து)
__u32 தாங்கல்_அளவு; // இல்: பைட்டுகளில் பிட்ஸ்ட்ரீம் இடையகத்தின் அளவு. 4-பைட் இருக்க வேண்டும்
சீரமைக்கப்பட்டது.
__u64 இடையக_முகவரி; // இல்: பிட்ஸ்ட்ரீம் இடையகத்தின் செயல்முறை முகவரி
__u64 நிலை; // வெளியே: பிழை நிலை (பிட்மாஸ்க்)
};
போர்ட் IOCTLகள்
திறந்த நிலையில் அழைக்கப்படும் IOCTLகள் file /dev/intel-fpga-port.k க்கான விளக்கம்
FPGA_PORT_GET_INFO—arg என்பது ஒரு சுட்டி:
struct fpga_port_info {
__u32 argsz; // இல்: sizeof(struct fpga_port_info)
__u32 கொடிகள்; // வெளியே: 0 ஐ வழங்குகிறது
__u32 num_regions; // வெளியே: MMIO பகுதிகளின் எண்ணிக்கை, 2 (AFUக்கு 1 மற்றும் 1 க்கு
STP)
__u32 num_umsgs; // வெளியே: வன்பொருளால் ஆதரிக்கப்படும் UMsgகளின் எண்ணிக்கை
};
FPGA_PORT_GET_REGION_INFO—arg என்பது ஒரு சுட்டி:
கட்டமைப்பு fpga_port_region_info {
__u32 argsz; // இல்: sizeof(struct fpga_port_region_info)
__u32 கொடிகள்; // வெளியே: (பிட்மாஸ்க்) { FPGA_REGION_READ, FPGA_REGION_WRITE,
FPGA_REGION_MMAP }
__u32 குறியீடு; // இல்: FPGA_PORT_INDEX_UAFU அல்லது FPGA_PORT_INDEX_STP
__u32 திணிப்பு; // இல்: 0 ஆக இருக்க வேண்டும்
__u64 அளவு; // வெளியே: MMIO பகுதியின் அளவு பைட்டுகளில்
__u64 ஆஃப்செட்; // வெளியே: சாதனம் fd இன் தொடக்கத்திலிருந்து MMIO பகுதியின் ஆஃப்செட்
};
FPGA_PORT_DMA_MAP—arg என்பது ஒரு சுட்டி:
struct fpga_port_dma_map {
__u32 argsz; // இல்: sizeof(struct fpga_port_dma_map)
__u32 கொடிகள்; // இல்: 0 __u64 user_addr ஆக இருக்க வேண்டும்; // இல்: மெய்நிகர் செயல்முறை
முகவரி. பக்கம் சீரமைக்கப்பட வேண்டும்.
__u64 நீளம்; // இல்: பைட்டுகளில் மேப்பிங்கின் நீளம். பக்கத்தின் பல மடங்கு இருக்க வேண்டும்
அளவு.
__u64 அயோவா; // வெளியே: IO மெய்நிகர் முகவரி };
FPGA_PORT_DMA_UNMAP—arg என்பது ஒரு சுட்டி:
struct fpga_port_dma_unmap {
__u32 argsz; // இல்: sizeof(struct fpga_port_dma_unmap)
__u32 கொடிகள்; // இல்: 0 ஆக இருக்க வேண்டும்
__u64 அயோவா; // இல்: IO மெய்நிகர் முகவரி முந்தையது மூலம் திரும்பியது
FPGA_PORT_DMA_MAP };
- FPGA_PORT_RESET—arg கண்டிப்பாக NULL ஆக இருக்க வேண்டும்.
- FPGA_PORT_UMSG_ENABLE—arg கண்டிப்பாக NULL ஆக இருக்க வேண்டும்.
- FPGA_PORT_UMSG_DISABLE—args கண்டிப்பாக NULL ஆக இருக்க வேண்டும்.
FPGA_PORT_UMSG_SET_MODE—arg என்பது ஒரு சுட்டி:
கட்டமைப்பு fpga_port_umsg_cfg {
__u32 argsz; // in: sizeof(struct fpga_port_umsg_cfg)
__u32 கொடிகள்; // இல்: 0 ஆக இருக்க வேண்டும்
__u32 குறிப்பு_பிட்மேப்; // இல்: UMsg குறிப்பு பயன்முறை பிட்மேப். UMsg கள் எவை என்பதைக் குறிக்கிறது
செயல்படுத்தப்பட்டது.
};
FPGA_PORT_UMSG_SET_BASE_ADDR—
- இந்த ioctl ஐ வழங்குவதற்கு முன் UMsg முடக்கப்பட்டிருக்க வேண்டும்.
- iova புலமானது அனைத்து UMsg களுக்கும் (num_umsgs * PAGE_SIZE) போதுமான அளவு இடையகமாக இருக்க வேண்டும்.
- டிரைவரின் இடையக நிர்வாகத்தால் இடையகமானது "பயன்பாட்டில் உள்ளது" எனக் குறிக்கப்பட்டுள்ளது.
- iova NULL எனில், எந்த முந்தைய பகுதியும் "பயன்பாட்டில்" எனக் குறிக்கப்படவில்லை.
- arg என்பது ஒரு சுட்டி:
struct fpga_port_umsg_base_addr {- u32 argsz; // இல்: sizeof(struct fpga_port_umsg_base_addr)
- u32 கொடிகள்; // இல்: 0 ஆக இருக்க வேண்டும்
- u64 அயோவா; // இல்: FPGA_PORT_DMA_MAP இலிருந்து IO மெய்நிகர் முகவரி. };
குறிப்பு:
- போர்ட் பிழைகளை அழிக்க, தற்போதைய பிழைகளின் சரியான பிட்மாஸ்க்கை நீங்கள் எழுத வேண்டும்ample, cat errors > clear
- ஒருங்கிணைந்த FPGA உடன் Intel Xeon செயலிக்கான Acceleration Stack மூலம் மட்டுமே UMsg ஆதரிக்கப்படுகிறது.
sysfs Files
FME தலைப்பு sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/
sysfs file | mmio புலம் | வகை | அணுகல் |
துறைமுகங்கள்_எண் | fme_header.capability.num_ports | தசம எண்ணாக | படிக்க மட்டும் |
கேச்_அளவு | fme_header.capability.cache_size | தசம எண்ணாக | படிக்க மட்டும் |
பதிப்பு | fme_header.capability.fabric_verid | தசம எண்ணாக | படிக்க மட்டும் |
சாக்கெட்_ஐடி | fme_header.capability.socket_id | தசம எண்ணாக | படிக்க மட்டும் |
பிட்ஸ்ட்ரீம்_ஐடி | fme_header.bitstream_id | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
பிட்ஸ்ட்ரீம்_மெட்டாடேட்டா | fme_header.bitstream_md | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
FME வெப்ப மேலாண்மை sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/thermal_mgmt/
sysfs file | mmio புலம் | வகை | அணுகல் |
வாசல் 1 | thermal.threshold.tmp_thshold1 | தசம எண்ணாக | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
வாசல் 2 | thermal.threshold.tmp_thshold2 | தசம எண்ணாக | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
வாசல்_பயணம் | thermal.threshold.therm_trip_thshold | தசம எண்ணாக | படிக்க மட்டும் |
வாசல்1_அடைந்தது | thermal.threshold.thshold1_status | தசம எண்ணாக | படிக்க மட்டும் |
வாசல்2_அடைந்தது | thermal.threshold.thshold2_status | தசம எண்ணாக | படிக்க மட்டும் |
வாசல்1_கொள்கை | வெப்ப. வாசல்.thshold_policy | தசம எண்ணாக | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
வெப்பநிலை | thermal.rdsensor_fm1.fpga_temp | தசம எண்ணாக | படிக்க மட்டும் |
FME பவர் மேனேஜ்மென்ட் sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/power_mgmt/
sysfs file | mmio புலம் | வகை | அணுகல் |
நுகரப்படும் | power.status.pwr_consumed | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
வாசல் 1 | சக்தி.வாசல்.வாசல்1 | ஹெக்ஸ் uint64_t | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
வாசல் 2 | சக்தி.வாசல்.வாசல்2 | ஹெக்ஸ் uint64_t | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
வாசல்1_நிலை | power.threshold.threshold1_status | தசம கையொப்பமிடப்படவில்லை | படிக்க மட்டும் |
வாசல்2_நிலை | power.threshold.threshold2_status | தசம கையொப்பமிடப்படவில்லை | படிக்க மட்டும் |
rtl | power.status.fpga_latency_report | தசம கையொப்பமிடப்படவில்லை | படிக்க மட்டும் |
FME குளோபல் பிழை sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/errors/
sysfs file | mmio புலம் | வகை | அணுகல் |
pcie0_பிழைகள் | gerror.pcie0_err | ஹெக்ஸ் uint64_t | படிக்க-எழுத |
pcie1_பிழைகள் | gerror.pcie1_err | ஹெக்ஸ் uint64_t | படிக்க-எழுத |
ஊசி_பிழை | gerror.ras_error_inj | ஹெக்ஸ் uint64_t | படிக்க-எழுத |
intel-fpga-dev.i/intel-fpga-fme.j/errors/fme-errors/
sysfs file | mmio புலம் | வகை | அணுகல் |
பிழைகள் | gerror.fme_err | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
முதல்_பிழை | gerror.fme_first_err.err_reg_status | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
அடுத்த_பிழை | gerror.fme_next_err.err_reg_status | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
தெளிவானது | பிழைகள், first_error, next_error ஆகியவற்றை அழிக்கிறது | பல்வேறு uint64_t | எழுத-மட்டும் |
குறிப்பு:
FME பிழைகளை அழிக்க, தற்போதைய பிழைகளின் சரியான பிட்மாஸ்க்கை நீங்கள் எழுத வேண்டும்ampபூனை பிழைகள் > தெளிவானது.
FME பகுதி மறுசீரமைப்பு sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/pr/
sysfs file | mmio புலம் | வகை | அணுகல் |
இடைமுகம்_ஐடி | pr.fme_pr_intfc_id0_h, pr.fme_pre_intfc_id0_l | ஹெக்ஸ் 16-பைட் | படிக்க மட்டும் |
FME உலகளாவிய செயல்திறன் sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/dperf/clock
sysfs file | mmio புலம் | வகை | அணுகல் |
கடிகாரம் | gperf.clk.afu_interf_clock | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/cache/ (FPGAகளுடன் Intel Xeon CPUக்கான முடுக்க அடுக்கிற்கு செல்லுபடியாகாது)
sysfs file | mmio புலம் | வகை | அணுகல் |
உறையும் | gperf.ch_ctl.freeze | தசம எண்ணாக | படிக்க-எழுத |
படிக்க_வெற்றி | gperf.CACHE_RD_HIT | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
படிக்க_மிஸ் | gperf.CACHE_RD_MISS | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
எழுத_வெற்றி | gperf.CACHE_WR_HIT | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
எழுத_தவறி | gperf.CACHE_WR_MISS | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
பிடி_கோரிக்கை | gperf.CACHE_HOLD_REQ | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
tx_req_stall | gperf.CACHE_TX_REQ_STALL | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
sysfs file | mmio புலம் | வகை | அணுகல் |
rx_req_stall | gperf.CACHE_RX_REQ_STALL | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
data_write_port_contention | gperf.CACHE_DATA_WR_PORT_CONTEN | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
tag_write_port_contention | gperf.CACHE_TAG_WR_PORT_CONTEN | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/iommu/ (FPGAகளுடன் Intel Xeon CPUக்கான முடுக்க அடுக்கிற்கு செல்லுபடியாகாது)
sysfs file | mmio புலம் | வகை | அணுகல் |
உறையும் | gperf.vtd_ctl.freeze | தசம எண்ணாக | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/iommu/afuk/ (FPGAகளுடன் Intel Xeon CPUக்கான முடுக்க அடுக்கிற்கு செல்லுபடியாகாது)
sysfs file | mmio புலம் | வகை | அணுகல் |
படிக்க_பரிவர்த்தனை | gperf.VTD_AFU0_MEM_RD_TRANS | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
எழுதும்_பரிவர்த்தனை | gperf.VTD_AFU0_MEM_WR_TRANS | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
tlb_read_hit | gperf.VTD_AFU0_TLB_RD_HIT | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
tlb_write_hit | gperf.VTD_AFU0_TLB_WR_HIT | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/fabric/
sysfs file | mmio புலம் | வகை | அணுகல் |
செயல்படுத்த | gperf.fab_ctl.(இயக்கப்பட்டது) | தசம எண்ணாக | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
உறையும் | gperf.fab_ctl.freeze | தசம எண்ணாக | பயனர்: படிக்க-மட்டும் ரூட்: படிக்க-எழுது |
pcie0_படிக்க | gperf.FAB_PCIE0_RD | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
pcie0_write | gperf.FAB_PCIE0_WR | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
pcie1_படிக்க | gperf.FAB_PCIE1_RD | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
pcie1_write | gperf.FAB_PCIE1_WR | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
upi_read | gperf.FAB_UPI_RD | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
upi_write | gperf.FAB_UPI_WR | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
intel-fpga-ev.i/intel-fpga/fme.j/dperf/fabric/portk/
sysfs file | mmio புலம் | வகை | அணுகல் |
pcie0_படிக்க | gperf.FAB_PCIE0_RD | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
pcie0_write | gperf.FAB_PCIE0_WR | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
pcie1_படிக்க | gperf.FAB_PCIE1_RD | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
pcie1_write | gperf.FAB_PCIE1_WR | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
upi_read | gperf.FAB_UPI_RD | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
upi_write | gperf.FAB_UPI_WR | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
போர்ட் ஹெடர் sysfs files
intel-fpga-dev.i/intel-fpga-port.k/
sysfs file | mmio புலம் | வகை | அணுகல் |
id | port_header.capability.port_number | தசம எண்ணாக | படிக்க மட்டும் |
லெட்டர் | port_header.control.latency_tolerance | தசம எண்ணாக | படிக்க மட்டும் |
போர்ட் AFU தலைப்பு sysfs files
intel-fpga-dev.i/intel-fpga-port.k/
sysfs file | mmio புலம் | வகை | அணுகல் |
afu_id | afu_header.guid | ஹெக்ஸ் 16-பைட் | படிக்க மட்டும் |
போர்ட் பிழை sysfs files
intel-fpga-dev.i/intel-fpga-port.k/errors/
sysfs file | mmio புலம் | வகை | அணுகல் |
பிழைகள் | perror.port_error | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
முதல்_பிழை | perror.port_first_error | ஹெக்ஸ் uint64_t | படிக்க மட்டும் |
முதல்_தவறான_req | perror.malreq | ஹெக்ஸ் 16-பைட் | படிக்க மட்டும் |
தெளிவானது | தவறு.(அனைத்து பிழைகளும்) | பல்வேறு uint64_t | எழுத-மட்டும் |
குறிப்பு:
போர்ட் பிழைகளை அழிக்க, தற்போதைய பிழைகளின் சரியான பிட்மாஸ்க்கை நீங்கள் எழுத வேண்டும்ampபூனை பிழைகள் > தெளிவானது.
மீள்பார்வை வரலாறு
ஆவணப் பதிப்பு | மாற்றங்கள் |
2017.10.02 | ஆரம்ப வெளியீடு. |
OPAE இன்டெல் FPGA லினக்ஸ் சாதன இயக்கி கட்டமைப்பு வழிகாட்டி
ஆவணங்கள் / ஆதாரங்கள்
![]() |
intel OPAE FPGA லினக்ஸ் சாதன இயக்கி கட்டமைப்பு [pdf] பயனர் வழிகாட்டி OPAE FPGA லினக்ஸ் டிவைஸ் டிரைவர் ஆர்கிடெக்சர், OPAE FPGA, லினக்ஸ் டிவைஸ் டிரைவர் ஆர்கிடெக்சர், டிரைவர் ஆர்கிடெக்சர், ஆர்கிடெக்சர் |