ኢንቴል-ሎጎ

intel OPAE FPGA Linux Device Driver Architecture

ኢንቴል-OPAE-FPGA-ሊኑክስ-መሣሪያ-አሽከርካሪ-አርክቴክቸር-ምርት

OPAE Intel FPGA ሊኑክስ ሾፌር አርክቴክቸር

የOPAE Intel FPGA ሾፌር የ FPGA አፋጣኞችን ለማዋቀር፣ ለመቁጠር፣ ለመክፈት እና ለመድረስ የተጠቃሚ ቦታ መተግበሪያዎችን ኢንቴል FPGA መፍትሄዎችን በተገጠመላቸው መድረኮች ላይ ያቀርባል እና እንደ FPGA መልሶ ማዋቀር፣ የሃይል አስተዳደር እና ቨርችዋል የመሳሰሉ የስርአት-ደረጃ አስተዳደር ተግባራትን ያስችላል።

የሃርድዌር አርክቴክቸር

ከስርዓተ ክወናው ነጥብ view፣ የ FPGA ሃርድዌር እንደ መደበኛ PCIe መሣሪያ ሆኖ ይታያል። የ FPGA መሣሪያ ማህደረ ትውስታ አስቀድሞ የተወሰነ የውሂብ መዋቅር (የመሣሪያ ባህሪ ዝርዝር) በመጠቀም ይደራጃል። በሚከተለው ምስል ላይ እንደሚታየው በFPGA መሳሪያ የሚደገፉ ባህሪያት በእነዚህ የመረጃ አወቃቀሮች ተጋልጠዋል።

FPGA PCIe መሣሪያ

intel-OPAE-FPGA-Linux-መሣሪያ-ሹፌር-ሥነ-ሕንጻ-ምስል- (1)

ሾፌሩ PCIe SR-IOVን ይደግፋል Virtual Functions (VFs) ይህም የግለሰብ ማፍጠኛዎችን ወደ ምናባዊ ማሽኖች ለመመደብ ሊያገለግል ይችላል።

ኢንቴል ኮርፖሬሽን. መብቱ በህግ የተጠበቀ ነው. ኢንቴል፣ የኢንቴል አርማ እና ሌሎች የኢንቴል ምልክቶች የኢንቴል ኮርፖሬሽን ወይም የስርጭቱ የንግድ ምልክቶች ናቸው። ኢንቴል የኤፍፒጂኤ እና ሴሚኮንዳክተር ምርቶቹን አፈጻጸም በIntel መደበኛ ዋስትና መሰረት ለአሁኑ ዝርዝር መግለጫዎች ዋስትና ይሰጣል ነገርግን በማንኛውም ጊዜ ያለምንም ማስታወቂያ በማናቸውም ምርቶች እና አገልግሎቶች ላይ ለውጦችን የማድረግ መብቱ የተጠበቀ ነው። ኢንቴል በዚህ ውስጥ የተገለጸውን ማንኛውንም መረጃ፣ ምርት ወይም አገልግሎት ከመተግበሩ ወይም ከመጠቀሙ የተነሳ ምንም አይነት ሃላፊነት ወይም ተጠያቂነት አይወስድም። የኢንቴል ደንበኞች በማናቸውም የታተመ መረጃ ላይ ከመታመንዎ በፊት እና ለምርቶች ወይም አገልግሎቶች ትእዛዝ ከማስቀመጥዎ በፊት የቅርብ ጊዜውን የመሳሪያ ዝርዝሮችን እንዲያገኙ ይመከራሉ።

ሌሎች ስሞች እና የንግድ ምልክቶች እንደ የሌሎች ንብረት ሊጠየቁ ይችላሉ።

ምናባዊ FPGA PCIe መሣሪያ

intel-OPAE-FPGA-Linux-መሣሪያ-ሹፌር-ሥነ-ሕንጻ-ምስል- (2)

የFPGA አስተዳደር ሞተር (ኤፍኤምኢ)
የ FPGA አስተዳደር ሞተር የኃይል እና የሙቀት አስተዳደርን ፣ የስህተት ዘገባዎችን ፣ መልሶ ማዋቀርን ፣ የአፈፃፀም ሪፖርት እና ሌሎች የመሠረተ ልማት ተግባራትን ያከናውናል ። እያንዳንዱ FPGA አንድ ኤፍኤምኢ አለው፣ እሱም ሁልጊዜ በአካላዊ ተግባር (PF) በኩል ይገኛል። የተጠቃሚ ቦታ አፕሊኬሽኖች ክፍት()ን በመጠቀም ለኤፍኤምኢ ልዩ መዳረሻን ሊያገኙ እና እንደ ልዩ ተጠቃሚ (ስር) ቅርብ () በመጠቀም ሊለቁት ይችላሉ።

ወደብ
ወደብ በስታቲስቲክ FPGA ጨርቅ (የFPGA በይነገጽ አስተዳዳሪ (FIM)) እና በከፊል እንደገና ሊዋቀር የሚችል የፍጥነት መቆጣጠሪያ ተግባር (AF) መካከል ያለውን በይነገጽ ይወክላል። ወደቡ ከሶፍትዌር ወደ አፋጣኝ ያለውን ግንኙነት ይቆጣጠራል እና እንደ ዳግም ማስጀመር እና ማረም ያሉ ባህሪያትን ያጋልጣል። የ PCIe መሣሪያ ብዙ ወደቦች ሊኖሩት ይችላል፣ እና እያንዳንዱ ወደብ በኤፍኤምኤ መሳሪያው ላይ FPGA_FME_PORT_ASSIGN ioctl በመጠቀም በመመደብ በቪኤፍ ሊጋለጥ ይችላል።

የፍጥነት መቆጣጠሪያ ተግባር (ኤኤፍ) ክፍል

  • የፈጣን ተግባር (ኤኤፍ) ክፍል ከወደብ ጋር ተያይዟል እና 256K MMIO ክልልን ለአፋጣኝ-ተኮር የቁጥጥር መመዝገቢያዎች ያጋልጣል።
  • የተጠቃሚ ቦታ አፕሊኬሽኖች በፖርት መሳሪያው ላይ ክፍት()ን በመጠቀም ወደብ የተያያዘውን የAFU ብቸኛ መዳረሻ ማግኘት ይችላሉ እና ቅርብ()ን በመጠቀም ይልቀቁት።
  • የተጠቃሚ ቦታ አፕሊኬሽኖች ኤምኤምፒ() አፋጣኝ MMIO ክልሎችንም ይችላሉ።

ከፊል ዳግም ማዋቀር
ከዚህ በላይ እንደተገለፀው የፍጥነት መጨመሪያዎች በከፊል የፍጥነት መቆጣጠሪያ ተግባር (ኤኤፍ) እንደገና በማዋቀር ሊዋቀሩ ይችላሉ። file. የፍጥነት መቆጣጠሪያ ተግባር (ኤኤፍ) የተፈጠረ መሆን አለበት ለትክክለኛው FIM እና ለታለመው የማይንቀሳቀስ ክልል (ወደብ) የFPGA; ያለበለዚያ ፣ እንደገና የማዋቀር ክዋኔው አይሳካም እና ምናልባትም የስርዓት አለመረጋጋት ያስከትላል። ይህ ተኳሃኝነት በ AF ርዕስ ላይ የተመለከተውን የበይነገጽ መታወቂያ በ sysfs በኩል በኤፍኤምኢ ከተጋለጠው የበይነገጽ መታወቂያ ጋር በማነፃፀር ማረጋገጥ ይቻላል። ይህ ቼክ አብዛኛው ጊዜ በተጠቃሚ ቦታ የሚደረገው ዳግም ማዋቀር IOCTL ከመደወል በፊት ነው።

ማስታወሻ፡-
በአሁኑ ጊዜ፣ ማንኛውም የሶፍትዌር ፕሮግራም FPGAን፣ በምናባዊ አስተናጋጅ ውስጥ የሚሰሩትን ጨምሮ፣ በከፊል እንደገና ማዋቀር ከመሞከርዎ በፊት መዘጋት አለበት። እርምጃዎቹ እንደሚከተለው ይሆናሉ-

  1. ሾፌሩን ከእንግዳው ያውርዱ
  2. ቪኤፍን ከእንግዳው ይንቀሉት
  3. SR-IOVን አሰናክል
  4. ከፊል ዳግም ማዋቀርን ያከናውኑ
  5. SR-IOVን አንቃ
  6. ቪኤፍን ከእንግዳው ጋር ይሰኩት
  7. በእንግዳው ውስጥ ሾፌሩን ይጫኑ

FPGA ምናባዊነት
በVM ውስጥ ከሚሰሩ አፕሊኬሽኖች አፋጣኝ ማግኘትን ለማንቃት የየAFU ወደብ የሚከተሉትን ደረጃዎች በመጠቀም ለቪኤፍ መመደብ አለበት።

  1. PF በነባሪነት ሁሉንም የ AFU ወደቦች በባለቤትነት ይይዛል። ለቪኤፍ ዳግም መመደብ የሚያስፈልገው ማንኛውም ወደብ መጀመሪያ ከPF በ FPGA_FME_PORT_RELEASE ioctl በFME መሳሪያ በኩል መልቀቅ አለበት።
  2. አንዴ N ports ከPF ከተለቀቁ፣ ከዚህ በታች ያለው ትዕዛዝ SRIOV እና VFs ለማንቃት ስራ ላይ ሊውል ይችላል። እያንዳንዱ ቪኤፍ ከኤፉዩ ጋር አንድ ወደብ ብቻ ነው ያለው። አስተጋባ N> PCI_DEVICE_PATH/sriov_numvfs
  3. በቪኤፍዎች ወደ ቪኤምኤስ ይለፉ።
  4. በቪኤፍ ስር ያለው AFU በVM ውስጥ ካሉ መተግበሪያዎች (በቪኤፍ ውስጥ ያለውን ተመሳሳይ አሽከርካሪ በመጠቀም) ተደራሽ ነው።

ማስታወሻ፡-
FME ለቪኤፍ ሊመደብ አይችልም፣ ስለዚህ PR እና ሌሎች የአስተዳደር ተግባራት በPF በኩል ብቻ ይገኛሉ።

የአሽከርካሪዎች ድርጅት

PCIe ሞዱል መሣሪያ ሾፌር

የአሽከርካሪዎች ድርጅት

intel-OPAE-FPGA-Linux-መሣሪያ-ሹፌር-ሥነ-ሕንጻ-ምስል- (3)

የ FPGA መሳሪያዎች እንደ መደበኛ PCIe መሳሪያዎች ይታያሉ; ስለዚህ የFPGA PCIe መሳሪያ ሾፌር (intel-FPGA-PCI.ko) ሁልጊዜ አንድ FPGA PCIe PF ወይም VF ከተገኘ በኋላ ይጫናል። ይህ አሽከርካሪ በአሽከርካሪ አርክቴክቸር ውስጥ የመሠረተ ልማት ሚና ይጫወታል። እሱ፡-

  • የFPGA መያዣ መሳሪያን እንደ የባህሪ መሳሪያዎች ወላጅ ይፈጥራል።
  • የባህሪ መሳሪያዎችን እና ንዑስ ባህሪያቶቻቸውን ለማግኘት እና በእቃ መያዢያ መሳሪያው ስር የመድረክ መሳሪያዎችን ለመፍጠር በ PCIe መሳሪያ BAR ማህደረ ትውስታ ውስጥ በተተገበረው የመሣሪያ ባህሪ ዝርዝር ውስጥ ያልፋል።
  • SR-IOVን ይደግፋል።
  • የባህሪ መሳሪያ መሠረተ ልማትን ያስተዋውቃል፣ ይህም ክንዋኔዎችን ለንዑስ ባህሪያት አብስትራክት የሚያደርግ እና የተለመዱ ተግባራትን ለመሳሪያ ነጂዎች የሚያጋልጥ ነው።

PCIe ሞዱል መሣሪያ ነጂ ተግባራት

  • የ PCIe ግኝትን፣ የመሣሪያ ቆጠራን እና የባህሪ ግኝትን ይዟል።
  • ለወላጅ መሣሪያ፣ ለFPGA አስተዳደር ሞተር (ኤፍኤምኢ) እና ወደብ የsysfs ማውጫዎችን ይፈጥራል።
  • የሊኑክስ ከርነል የየመድረክ ሞጁሉን ሾፌሮች እንዲጭን በማድረግ የመድረክን ነጂ አጋጣሚዎች ይፈጥራል።

የኤፍኤምኢ መድረክ ሞዱል መሣሪያ ሾፌር

  • የኃይል እና የሙቀት አስተዳደር, የስህተት ሪፖርት, የአፈፃፀም ሪፖርት እና ሌሎች የመሠረተ ልማት ተግባራት. እነዚህን ተግባራት በFME ሾፌር በተጋለጡ በ sysfs በይነገጽ ማግኘት ይችላሉ።
  • ከፊል ዳግም ማዋቀር። የFME ሹፌር የ FPGA ስራ አስኪያጅን ይመዘግባል በ PR ንዑስ-ባህሪ ጅምር ወቅት; አንዴ ከእርስዎ FPGA_FME_PORT_PR ioctl ከተቀበለ በኋላ የቢትስትራክተሩን ከፊል መልሶ ማዋቀርን ወደ ተሰጠው ወደብ ለማጠናቀቅ ከ FPGA አስተዳዳሪ የጋራ በይነገጽ ተግባርን ይጠራል።
  • ለምናባዊነት ወደብ አስተዳደር። የFME አሽከርካሪው የተሰጠውን ወደብ ከ PF የሚለቀቀውን ሁለት ioctls, FPGA_FME_PORT_RELEASE ያስተዋውቃል; እና FPGA_FME_PORT_ASSIGN፣ ይህም ወደቡን ለPF መልሶ ይመድባል። ፖርቱ ከ PF ከተለቀቀ በኋላ በ PCIe ሾፌር በተሰጡት የ SR-IOV መገናኛዎች በኩል ለቪኤፍ ሊመደብ ይችላል. ለበለጠ መረጃ፣ "FPGA Virtualization" የሚለውን ይመልከቱ።

የኤፍኤምኢ መድረክ ሞጁል መሳሪያ ነጂ ተግባራት

  • የFME ቁምፊ መሳሪያ መስቀለኛ መንገድን ይፈጥራል።
  • FME sysfs ይፈጥራል files እና FME sysfs ተግባራዊ ያደርጋል file መለዋወጫዎች.
  • የFME የግል ባህሪ ንዑስ ነጂዎችን ተግባራዊ ያደርጋል።
  • የFME የግል ባህሪ ንዑስ ነጂዎች፡-
    • የኤፍኤምኢ ራስጌ
    • የሙቀት አስተዳደር
    • የኃይል አስተዳደር
    • ዓለም አቀፍ ስህተት
    • ከፊል ዳግም ማዋቀር
    • ዓለም አቀፍ አፈጻጸም

ወደብ መድረክ ሞጁል መሣሪያ ሾፌር
ከኤፍኤምኢ ሾፌር ጋር በሚመሳሰል መልኩ የ FPGA ወደብ (እና AFU) ሾፌር (intel-fpga-afu. ko) የፖርት መድረክ መሳሪያ ከተፈጠረ በኋላ ይጣራል። የዚህ ሞጁል ዋና ተግባር በፖርት ላይ መሰረታዊ ዳግም ማስጀመር ቁጥጥርን፣ AFU MMIO ክልል ወደ ውጭ መላክ፣ የዲኤምኤ ቋት ካርታ አገልግሎት፣ UMsg(1) ማሳወቂያ እና የርቀት ማረም ተግባራትን ጨምሮ የግለሰብ አፋጣኞችን ለመድረስ የተጠቃሚ ቦታ መተግበሪያዎችን በይነገጽ ማቅረብ ነው። ከላይ ይመልከቱ).

UMsg የሚደገፈው በAcceleration Stack for Intel Xeon® Processor ከ Integrated FPGA ጋር ብቻ ነው።

ወደብ መድረክ ሞዱል መሣሪያ ነጂ ተግባራት

  • የፖርት ቁምፊ መሳሪያ መስቀለኛ መንገድን ይፈጥራል።
  • ወደብ sysfs ይፈጥራል files እና Port sysfsን ተግባራዊ ያደርጋል file መለዋወጫዎች.
  • ወደብ የግል ባህሪ ንዑስ ነጂዎችን ተግባራዊ ያደርጋል።
  • የወደብ የግል ባህሪ ንዑስ አሽከርካሪዎች፡-
    • ወደብ ራስጌ
    • AFU
    • የወደብ ስህተት
    • ዩኤምኤስጂ(2)
    • ሲግናል መታ ያድርጉ

የመተግበሪያ FPGA መሣሪያ ቆጠራ
ይህ ክፍል አፕሊኬሽኖች የ FPGA መሣሪያን ከ sysfs ተዋረድ በ /sys/class/fpga እንዴት እንደሚዘረዝሩ ያስተዋውቃል። በ exampከዚህ በታች፣ ሁለት ኢንቴል FPGA መሣሪያዎች በአስተናጋጁ ውስጥ ተጭነዋል። እያንዳንዱ የ FPGA መሳሪያ አንድ ኤፍኤምኢ እና ሁለት ወደቦች (AFUs) አለው። ለእያንዳንዱ የ FPGA መሣሪያ፣ የመሣሪያ ማውጫ በ/sys/class/fpga ተፈጥሯል፡-

/sys/ክፍል/fpga/intel-fpga-dev.0
/sys/ክፍል/fpga/intel-fpga-dev.1

እያንዳንዱ መስቀለኛ መንገድ አንድ ኤፍኤምኢ እና ሁለት ወደቦች (AFUs) እንደ ልጅ መሣሪያዎች አሉት።
/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/

ሁሉንም የእቃ መያዢያ መሳሪያዎችን በተከታታይ ቁጥር እሰጣለሁ፣ ጄ በተከታታይ የኤፍኤምኢዎችን ቁጥር እና k ሁሉንም ወደቦች በተከታታይ ቁጥር እሰጣለሁ።

ለ ioctl() እና ኤምኤምፕ() ጥቅም ላይ የዋሉት የመሳሪያ አንጓዎች በሚከተሉት ሊጠቀሱ ይችላሉ፡-
/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
};
የማይንቀሳቀስ መዋቅር idr fpga_ids[FPGA_ID_MAX];
መዋቅር fpga_chardev_info {
const ቻር * ስም;
dev_t ዴቭት;
};
መዋቅር fpga_chardev_info fpga_chrdevs[] = {
{ .ስም = FPGA_FEATURE_DEV_FME }፣
{ .ስም = FPGA_FEATURE_DEV_PORT }፣
};
የማይንቀሳቀስ መዋቅር ክፍል * 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
};
የ cci_drvdata መዋቅር
int መሣሪያ_መታወቂያ;
የመዋቅር መሳሪያ * fme_dev;
መዋቅር mutex መቆለፊያ;
struct list_head port_dev_list;
int የተለቀቀው_ፖርት_ቁጥር;
መዋቅር ዝርዝር_ዋና ክልሎች;
};
መዋቅር ግንባታ_ባህሪ_devs_መረጃ {
መዋቅር pci_dev * pdev;
ባዶ __iomem * ioaddr;
ባዶ __ iomem * ioend;
int current_bar;
ባዶ __iomem *pfme_hdr;
የተዋቀረ መሳሪያ *parent_dev;
የመሣሪያ ስርዓት_መሣሪያ * ባህሪ_dev;
};

የመቁጠሪያ ፍሰት

  • ccidrv_init()
    • idr_init()ን በመጠቀም fpga_idsን ያስጀምሩ።
    • alloc_chrdev_region () በመጠቀም fpga_chrdevs[i] ን ያስጀምሩ።
    • class_create() በመጠቀም fpga_class አስጀምር።
    • pci_register_driver (& cci_pci_driver);
  • cci_pci_probe()
    • PCI መሣሪያውን አንቃ፣ ወደ ክልሎቹ እንዲደርስ ጠይቅ፣ PCI master mode አዘጋጅ እና DMA አዋቅር።
  • cci_pci_የፍጠር_ባህሪ_devs() build_info_alloc_and_init()
    • የመዋቅር ግንባታ_feature_devs_info ይመድቡ፣ ያስጀምሩት።
      .parent_dev የFME እና Port sysfs ማውጫዎችን ወደያዘው የወላጅ sysfs ማውጫ (intel-fpga-dev.id) ተቀናብሯል።
  • የመተንተን_ባህሪ_ዝርዝር()
    • ኤፍኤምኢን፣ ወደቡን እና የግል ባህሪያቸውን ለማግኘት የBAR0 መሳሪያ ባህሪ ዝርዝርን ይራመዱ።
  • የትንተና_ባህሪ() ትንሳኤ_ባህሪ_አፉስ() parse_feature_fme()
    • FME ሲያጋጥም፡-
  • የግንባታ_መረጃ_ፍጠር_dev()
    • በBuild_feature_devs_info.feature_dev ውስጥ በማስቀመጥ ለFME የመሳሪያ ስርዓት ይመድቡ።
    • feature_dev.id የተጀመረው idr_alloc(fpga_ids[FME_ID]፣
    • ባህሪ_dev.parent_feature_devs_info.parent_devን ለመገንባት ተዋቅሯል።
    • በባህሪ_dev.resource ውስጥ የተደራጁ የመዋቅር ሀብቶችን ይመድቡ።
  • የመዋቅር_ፕላትፎርም_ውሂብ ይመድቡ፣ ያስጀምሩት እና ጠቋሚን በባህሪ_dev.dev.platform_ውሂብ ውስጥ ያከማቹ።
    • የባህሪ_ምሳሌ() build_info_add_ንዑስ_ባህሪ()
    • ባህሪ_dev.resource[FME_FEATURE_ID_HEADER]ን አስጀምር።
    • ባህሪ_መድረክ_ውሂብ_አክል()
    • የባህሪ_ፕላትፎርም_ዳታ።features[FME_FEATURE_ID_HEADER]ን አስጀምር፣ ሁሉም ነገር ከ.fops በስተቀር።
  • የትንተና_ባህሪ() የመተንተን_ባህሪ_አፉስ() የትንቢት_ባህሪ_ወደብ()
    • ወደብ ሲገናኝ፡-
  • የግንባታ_መረጃ_ፍጠር_dev()
    • በBuild_feature_devs_info.feature_dev ውስጥ በማጠራቀም የመድረክ መሣሪያን ለፖርቱ መድቡ።
    • feature_dev.id የተጀመረው በ idr_alloc(fpga_ids[PORT_ID])፣
    • ባህሪ_dev.parent_feature_devs_info.parent_devን ለመገንባት ተዋቅሯል።
    • በባህሪ_dev.resource ውስጥ የተደራረበ የመዋቅር ሀብት ይመድቡ።
    • የመዋቅር_ፕላትፎርም_ውሂብ ይመድቡ፣ ያስጀምሩት እና ጠቋሚን በባህሪ_dev.dev.platform_ውሂብ ውስጥ ያከማቹ።
  • የግንባታ_መረጃ_ኮሚት_ዴቭ()
    • በ cci_drvdata.port_dev_list ውስጥ ያሉ የወደብ ዝርዝር ውስጥ የ struct feature_platform_data.node ለፖርት አክል
  • የባህሪ_ምሳሌ() build_info_add_ንዑስ_ባህሪ()
    • ባህሪ_dev.resource[PORT_FEATURE_ID_HEADER]ን አስጀምር።
  • ባህሪ_መድረክ_ውሂብ_አክል()
    • የባህሪ_ፕላትፎርም_ዳታ።features[PORT_FEATURE_ID_HEADER]ን አስጀምር፣ ሁሉም ነገር ከ.fops በስተቀር።
  • የትንተና_ባህሪ() የትንተና_ባህሪ_አፉስ
    • AFU ሲያጋጥመው፡-
  • የባህሪ_ምሳሌ() build_info_add_ንዑስ_ባህሪ()
    • ባህሪ_dev.resource[PORT_FEATURE_ID_UAFU]ን አስጀምር።
  • ባህሪ_መድረክ_ውሂብ_አክል()
    • ባህሪ_platform_data.features[PORT_FEATURE_ID_UAFU]ን አስጀምር፣ ሁሉም ነገር ከ.ፎፕ በስተቀር።
  • የትንተና_ባህሪ() የመተንተን_ባህሪ_የግል
    • የFME የግል ባህሪ ሲያጋጥም፡-
  • የባህሪ_ምሳሌ() build_info_add_ንዑስ_ባህሪ()
    • ባህሪ_dev.resource[መታወቂያ] አስጀምር።
  • ባህሪ_መድረክ_ውሂብ_አክል()
    • ባህሪ_platform_data.features[መታወቂያ] አስጀምር፣ ሁሉም ነገር ግን .fops።
  • የትንተና_ባህሪ() የትንታኔ_ባህሪ_የግል () የትንታኔ_ባህሪ_ወደብ_የግል()
  • የወደብ የግል ባህሪ ሲያጋጥመው፡ * create_feature_intance () build_info_add_sub_feature () * ባህሪ_dev.resource[መታወቂያ] አስጀምር። * የባህሪ_መድረክ_ውሂብ_አክል() የባህሪ_ፕላትፎርም_ውሂብ።features[መታወቂያ]፣ ሁሉም ነገር ግን ከ.ፎፕስ በስተቀር።
  • ወደቦች_ከኤፍሜ_()
    • ነጂው በአካላዊ ተግባር (PF) ላይ ከተጫነ፡-
  • በFME ራስጌ ላይ በተገለፀው እያንዳንዱ ወደብ ላይ የ parse_feature_list() ፍሰትን ያሂዱ።
  • በራስጌው ውስጥ በእያንዳንዱ ወደብ ግቤት ውስጥ የተጠቀሰውን ባር ይጠቀሙ።

የኤፍኤምኢ መድረክ መሣሪያ ማስጀመር
ይህ ክፍል የበለጠ ይሰጣልview በ intel-fpga-fme.ko የተከናወነው የFME መሣሪያ ጅምር የኮድ ፍሰት። ዋናዎቹ የመረጃ አወቃቀሮች እና ተግባራት ከፍ ያሉ ናቸው. ይህ ክፍል መቼ ነው መከተል የተሻለ ነው viewተጓዳኝ ምንጭ ኮድ (fme-main.c)።

የኤፍኤምኢ መድረክ የመሣሪያ ውሂብ አወቃቀሮች

መዋቅር ባህሪ_ops {
int (* init) (የመዋቅር መድረክ_መሣሪያ * pdev ፣ መዋቅራዊ ባህሪ * ባህሪ);
int (* uinit) (የመዋቅር platform_device * pdev, መዋቅር ባህሪ * ባህሪ);
ረጅም (* ioctl) (የመዋቅር መድረክ_መሣሪያ *pdev፣ የተዋቀረ ባህሪ * ባህሪ፣
ያልተፈረመ int cmd, ያልተፈረመ ረጅም አርግ);
int (* ሙከራ) (የመዋቅር መድረክ_መሣሪያ * pdev ፣ መዋቅራዊ ባህሪ * ባህሪ);
};
መዋቅር ባህሪ {
const ቻር * ስም;
int resource_index;
ባዶ __iomem * ioaddr;
struct feature_ops * ops;
};
የባህሪ_መድረክ_ውሂብ {
የመዋቅር ዝርዝር_ራስ አንጓ;
መዋቅር mutex መቆለፊያ;
ያልተፈረመ ረጅም dev_status;
መዋቅር ሲዲቭ ሲዲቭ;
struct platform_device * dev;
ያልተፈረመ የ disable_count;
ባዶ * የግል;
int ቁጥር;
int (* config_port) (struct platform_device *, u32, bool);
የመድረክ_መሣሪያ *(*fpga_ለእያንዳንዱ_ወደብ)(የመሠረተ ልማት_መሣሪያ *፣
ባዶ * ፣ int (* ግጥሚያ) (የመዋቅር መድረክ_መሣሪያ * ፣ ባዶ *)); መዋቅር
የባህሪ ባህሪያት[0];
};
የተስተካከለ_ነገር {
int መታወቂያ;
const struct attribute_group ** attr_groups;
የመዋቅር መሳሪያ * fme_dev;
የመዋቅር ዝርዝር_ራስ አንጓ;
መዋቅር ዝርዝር_ዋና ልጆች;
መዋቅር kobject kobj;
};
መዋቅር fpga_fme {
u8 port_id;
u64 pr_err;
የመዋቅር መሳሪያ * dev_err;
struct perf_ነገር * perf_dev;
struct feature_platform_data *pdata;
};

የኤፍኤምኢ መድረክ መሣሪያ ማስጀመር ፍሰት

የኤፍኤምኢ ማስጀመሪያ ፍሰትintel-OPAE-FPGA-Linux-መሣሪያ-ሹፌር-ሥነ-ሕንጻ-ምስል- (4)

  • fme_probe() fme_dev_init()
    • መዋቅር fpga_fme ያስጀምሩ እና በባህሪ_ፕላትፎርም_ዳታ.የግል መስክ ውስጥ ያከማቹ።
  • fme_probe () fpga_dev_feature_init () ባህሪ_ምሳሌ_init()
    • struct feature_opsን በባህሪ_ፕላትፎርም_ውሂብ ውስጥ ያስቀምጡ።ለእያንዳንዱ ሰው የተሞላ ባህሪ ባህሪያት።
    • የፈተናውን ተግባር, ካለ, ከስትራክቱ ይደውሉ.
    • የ init ተግባርን ከመዋቅሩ ይደውሉ።
  • fme_probe() fpga_register_dev_ops()
    • መዋቅርን በመመዝገብ የFME ቁምፊ መሳሪያ መስቀለኛ መንገድ ይፍጠሩ file_ኦፕሬሽኖች።

ወደብ መድረክ መሣሪያ ማስጀመር
ይህ ክፍል የበለጠ ይሰጣልview በ intel-fpga-afu.ko የሚሰራ የወደብ መሳሪያ ማስጀመሪያ የኮድ ፍሰት። ዋናዎቹ የመረጃ አወቃቀሮች እና ተግባራት ተብራርተዋል. ይህ ክፍል መቼ ነው መከተል የተሻለ ነው viewተጓዳኝ ምንጭ ኮድ (afu.c)።

ወደብ መድረክ የመሣሪያ ውሂብ አወቃቀሮች

መዋቅር ባህሪ_ops {
int (* init) (የመዋቅር መድረክ_መሣሪያ * pdev ፣ መዋቅራዊ ባህሪ * ባህሪ);
int (* uinit) (የመዋቅር platform_device * pdev, መዋቅር ባህሪ * ባህሪ);
ረጅም (* ioctl) (የመዋቅር መድረክ_መሣሪያ *pdev፣ የተዋቀረ ባህሪ * ባህሪ፣
ያልተፈረመ int cmd, ያልተፈረመ ረጅም አርግ);
int (* ሙከራ) (የመዋቅር መድረክ_መሣሪያ * pdev ፣ መዋቅራዊ ባህሪ * ባህሪ);
};
መዋቅር ባህሪ {
const ቻር * ስም;
int resource_index;
ባዶ __iomem * ioaddr;
struct feature_ops * ops;
};
የባህሪ_መድረክ_ውሂብ {
የመዋቅር ዝርዝር_ራስ አንጓ;
መዋቅር mutex መቆለፊያ;
ያልተፈረመ ረጅም dev_status;
መዋቅር ሲዲቭ ሲዲቭ;
struct platform_device * dev;
ያልተፈረመ የ disable_count;
ባዶ * የግል;
int ቁጥር;
int (* config_port) (struct platform_device *, u32, bool);
የመድረክ_መሣሪያ *(*fpga_ለእያንዳንዱ_ወደብ)(የመሠረተ ልማት_መሣሪያ *፣
ባዶ * ፣ int (* ግጥሚያ) (የመዋቅር መድረክ_መሣሪያ * ፣ ባዶ *));
የመዋቅር ባህሪ ባህሪያት[0];
};
መዋቅር fpga_afu_ክልል {
u32 ኢንዴክስ;
u32 ባንዲራዎች;
u64 መጠን;
u64 ማካካሻ;
u64 phys;
የመዋቅር ዝርዝር_ራስ አንጓ;
};
መዋቅር fpga_afu_dma_ክልል {
u64 user_addr;
u64 ርዝመት;
u64 iova;
መዋቅር ገጽ ** ገጾች;
የተዋቀረ rb_node node;
ቡል በጥቅም ላይ መዋል;
};
መዋቅር fpga_afu {
u64 ክልል_cur_offset;
int num_ክልሎች;
u8 num_umsgs;
መዋቅር ዝርዝር_ዋና ክልሎች;
መዋቅር rb_root dma_ክልሎች;
struct feature_platform_data *pdata;
};

የወደብ መድረክ መሣሪያ ማስጀመር ፍሰት

ወደብ ማስጀመር ፍሰትintel-OPAE-FPGA-Linux-መሣሪያ-ሹፌር-ሥነ-ሕንጻ-ምስል- (5)

  • afu_probe() afu_dev_init()
    • የfpga_afu መዋቅርን ያስጀምሩ እና በባህሪ_ፕላትፎርም_ዳታ.የግል መስክ ውስጥ ያከማቹ።
  • afu_probe() fpga_dev_feature_init() ባህሪ_ምሳሌ_init()
    • struct feature_opsን በባህሪ_ፕላትፎርም_ውሂብ ውስጥ ያስቀምጡ።ለእያንዳንዱ ሰው የተሞላ ባህሪ ባህሪያት።
    • የፈተናውን ተግባር, ካለ, ከስትራክቱ ይደውሉ.
    • የ init ተግባርን ከመዋቅሩ ይደውሉ።
  • afu_probe() fpga_register_dev_ops()
    • መዋቅርን በመመዝገብ የፖርት ቁምፊ መሳሪያ መስቀለኛ መንገድ ይፍጠሩ file_ኦፕሬሽኖች።

FME IOCTLs
ክፍት ላይ የሚጠሩ IOCTLs file ገላጭ ለ/dev/intel-fpga-fme.j FPGA_GET_API_VERSION—የአሁኑን ስሪት እንደ ኢንቲጀር ይመልሱ፣ ከ0 ጀምሮ።

FPGA_CHECK_EXTENSION - በአሁኑ ጊዜ አይደገፍም።

FPGA_FME_PORT_RELEASE—arg ለ፡ ጠቋሚ ነው።

መዋቅር fpga_fme_port_መለቀቅ {
__u32 argsz; // ውስጥ፡ የመጠን (የ fpga_fme_port_release መዋቅር)
__u32 ባንዲራዎች; // ውስጥ፡ 0 መሆን አለበት።
__u32 port_id; // ውስጥ፡ ወደብ መታወቂያ (ከ0) ለመልቀቅ።
};

FPGA_FME_PORT_ASSIGN—arg ለ፡ ጠቋሚ ነው።

መዋቅር fpga_fme_port_assign {
__u32 argsz; // ውስጥ፡ የመጠን (የ fpga_fme_port_assign መዋቅር)
__u32 ባንዲራዎች; // ውስጥ፡ 0 መሆን አለበት።
__u32 port_id; // ውስጥ፡ ወደብ መታወቂያ (ከ0) ለመመደብ። (መሆን አለበት።
ቀደም ሲል በFPGA_FME_PORT_RELEASE የተለቀቀ)
};

FPGA_FME_PORT_PR—arg ለ፡ ጠቋሚ ነው።

መዋቅር fpga_fme_port_pr {
__u32 argsz; // ውስጥ፡ የመጠን (የ fpga_fme_port_pr መዋቅር)
__u32 ባንዲራዎች; // ውስጥ፡ 0 መሆን አለበት።
__u32 port_id; // ውስጥ፡ የወደብ መታወቂያ (ከ0)
__u32 ቋት_መጠን; // ውስጥ፡ የቢትስትሬድ ቋት መጠን በባይት። 4-ባይት መሆን አለበት።
የተስተካከለ።
__u64 ቋት_አድራሻ; // ውስጥ፡ የቢትስትሪም ቋት የሂደት አድራሻ
__u64 ሁኔታ; // ውጪ፡ የስህተት ሁኔታ (bitmask)
};

ወደብ IOCTLs
ክፍት ላይ የሚጠሩ IOCTLs file ገላጭ ለ/dev/intel-fpga-port.k FPGA_GET_API_VERSION—የአሁኑን ስሪት እንደ ኢንቲጀር ይመልሱ ከ 0. FPGA_CHECK_EXTENSION—በአሁኑ ጊዜ አይደገፍም።

FPGA_PORT_GET_INFO—አርግ ለ፡ ጠቋሚ ነው።

መዋቅር fpga_port_መረጃ {
__u32 argsz; // ውስጥ፡ የመጠን (የ fpga_port_info መዋቅር)
__u32 ባንዲራዎች; // ይወጣል፡ 0 ይመልሳል
__u32 ቁጥር_ክልሎች; // ውጪ፡ የMMIO ክልሎች ብዛት፣ 2 (1 ለ AFU እና 1 ለ
STP)
__u32 num_umsgs; // ውጪ፡ በሃርድዌር የሚደገፉ የUMsg ብዛት
};

FPGA_PORT_GET_REGION_INFO—arg ለ፡ ጠቋሚ ነው።

መዋቅር fpga_port_ክልል_መረጃ {
__u32 argsz; // በ: የመጠን (የ fpga_port_ክልል_መረጃ መዋቅር)
__u32 ባንዲራዎች; // ውጪ፡ (ቢትማስክ) {FPGA_REGION_READ፣ FPGA_REGION_WRITE፣
FPGA_REGION_MMAP }
__u32 ኢንዴክስ; // በ፡ FPGA_PORT_INDEX_UAFU ወይም FPGA_PORT_INDEX_STP
__u32 ንጣፍ; // ውስጥ፡ 0 መሆን አለበት።
__u64 መጠን; // ውጪ፡ የMMIO ክልል መጠን በባይት
__u64 ማካካሻ; // ውጪ፡ ከመሣሪያው መጀመሪያ ጀምሮ የMMIO ክልል ማካካሻ fd
};

FPGA_PORT_DMA_MAP—arg ለ፡ ጠቋሚ ነው።
መዋቅር fpga_port_dma_map {
__u32 argsz; // ውስጥ፡ የመጠን (የ fpga_port_dma_map መዋቅር)
__u32 ባንዲራዎች; // ውስጥ: መሆን አለበት 0 __u64 user_addr; // ውስጥ: ሂደት ምናባዊ
አድራሻ. በገጽ መመሳሰል አለበት።
__u64 ርዝመት; // በ: በባይት ውስጥ የካርታ ስራ ርዝመት. የገጽ ብዜት መሆን አለበት።
መጠን.
__u64 iova; // ውጪ፡ IO ምናባዊ አድራሻ};

FPGA_PORT_DMA_UNMAP—arg ለ፡ ጠቋሚ ነው።
መዋቅር fpga_port_dma_unmap {
__u32 argsz; // ውስጥ፡ የመጠን (የ fpga_port_dma_unmap መዋቅር)
__u32 ባንዲራዎች; // ውስጥ፡ 0 መሆን አለበት።
__u64 iova; // ውስጥ፡ IO ምናባዊ አድራሻ በቀድሞው የተመለሰ
FPGA_PORT_DMA_MAP};

  • FPGA_PORT_RESET—arg NULL መሆን አለበት።
  • FPGA_PORT_UMSG_ENABLE—አርግ ባዶ መሆን አለበት።
  • FPGA_PORT_UMSG_DISABLE—አርግስ ባዶ መሆን አለበት።

FPGA_PORT_UMSG_SET_MODE—አርግ ለ፡ ጠቋሚ ነው።

መዋቅር fpga_port_umsg_cfg {
__u32 argsz; // ውስጥ፡ የመጠን (የ 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 ከሆነ፣ ማንኛውም የቀድሞ ክልል እንደ “ጥቅም ላይ ነው” የሚል ምልክት አልተደረገበትም።
  • አርግ ጠቋሚ ነው፡-
    መዋቅር fpga_port_umsg_base_addr {
    • u32 argsz; // ውስጥ፡ የመጠን (የ fpga_port_umsg_base_addr መዋቅር)
    • u32 ባንዲራዎች; // ውስጥ፡ 0 መሆን አለበት።
    • u64 iova; // በ፡ IO ምናባዊ አድራሻ ከFPGA_PORT_DMA_MAP። };

ማስታወሻ፡-

  • የወደብ ስህተቶቹን ለማጽዳት የአሁኑን ስህተቶች ትክክለኛውን ቢትማስክ መጻፍ አለብዎት, ለምሳሌample, ድመት ስህተቶች> ግልጽ
  • UMsg የሚደገፈው በAcceleration Stack for Intel Xeon Processor ከ Integrated FPGA ጋር ብቻ ነው።

sysfs Files

FME ራስጌ sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/

sysfs file mmio መስክ ዓይነት መዳረሻ
ports_num fme_header.capability.num_ports አስርዮሽ int ተነባቢ-ብቻ
መሸጎጫ_መጠን fme_header.capability.cache_size አስርዮሽ int ተነባቢ-ብቻ
ስሪት fme_header.capability.fabric_verid አስርዮሽ int ተነባቢ-ብቻ
ሶኬት_መታወቂያ fme_header.capability.socket_id አስርዮሽ int ተነባቢ-ብቻ
bitstream_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 አስርዮሽ int ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ
ደረጃ 2 thermal.threshold.tmp_thshold2 አስርዮሽ int ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ
የመነሻ_ጉዞ thermal.threshold.therm_trip_thshold አስርዮሽ int ተነባቢ-ብቻ
ደረጃ 1_ ደርሷል thermal.threshold.thshold1_ሁኔታ አስርዮሽ int ተነባቢ-ብቻ
ደረጃ 2_ ደርሷል thermal.threshold.thshold2_ሁኔታ አስርዮሽ int ተነባቢ-ብቻ
ገደብ 1_ፖሊሲ ሙቀት. threshold.thshold_policy አስርዮሽ int ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ
የሙቀት መጠን thermal.rdsensor_fm1.fpga_temp አስርዮሽ int ተነባቢ-ብቻ

FME የኃይል አስተዳደር sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/power_mgmt/

sysfs file mmio መስክ ዓይነት መዳረሻ
ተበላ power.status.pwr_የተበላ ሄክስ uint64_t ተነባቢ-ብቻ
ደረጃ 1 የሃይል.መጠን.መጠን1 ሄክስ uint64_t ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ
ደረጃ 2 የሃይል.መጠን.መጠን2 ሄክስ uint64_t ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ
ገደብ1_ሁኔታ ኃይል.threshold.threshold1_ሁኔታ አስርዮሽ ያልተፈረመ ተነባቢ-ብቻ
ገደብ2_ሁኔታ ኃይል.threshold.threshold2_ሁኔታ አስርዮሽ ያልተፈረመ ተነባቢ-ብቻ
rtl power.status.fpga_latency_ሪፖርት አስርዮሽ ያልተፈረመ ተነባቢ-ብቻ

የኤፍኤምኢ ዓለም አቀፍ ስህተት sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/ስህተት/

sysfs file mmio መስክ ዓይነት መዳረሻ
pcie0_ስህተት gerror.pcie0_እርር ሄክስ uint64_t አንብብ-ፃፍ
pcie1_ስህተት gerror.pcie1_እርር ሄክስ uint64_t አንብብ-ፃፍ
መርፌ_ስህተት gerror.ras_error_inj ሄክስ uint64_t አንብብ-ፃፍ

intel-fpga-dev.i/intel-fpga-fme.j/errors/fme-ስህተት/

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_ስህተትን፣ next_ስህተትን ያጸዳል። የተለያዩ uint64_t ጻፍ-ብቻ

ማስታወሻ፡-
የኤፍኤምኢ ስህተቶቹን ለማፅዳት የአሁኑን ስህተቶች ትክክለኛውን ቢትማስክ መፃፍ አለቦት፣ ለምሳሌample ድመት ስህተቶች> ግልጽ.

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-ባይት ተነባቢ-ብቻ

የኤፍኤምኢ ግሎባል አፈጻጸም sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/dperf/ሰዓት

sysfs file mmio መስክ ዓይነት መዳረሻ
ሰዓት gperf.clk.afu_interf_ሰዓት ሄክስ uint64_t ተነባቢ-ብቻ

intel-fpga-dev.i/intel-fpga-fme.j/dperf/cache/ (ለኢንቴል Xeon ሲፒዩ ከFPGAs ጋር ለ Acceleration Stack የሚሰራ አይደለም)

sysfs file mmio መስክ ዓይነት መዳረሻ
ቀዝቅዝ gperf.ch_ctl.freeze አስርዮሽ int አንብብ-ፃፍ
አንብብ_መታ 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 ተነባቢ-ብቻ
የውሂብ_ፃፍ_ወደብ_ውዝግብ gperf.CACHE_DATA_WR_PORT_CONTEN ሄክስ uint64_t ተነባቢ-ብቻ
tagየወደብ_ውዝግብ_ይፃፍ gperf.CACHE_TAG_WR_PORT_CONTEN ሄክስ uint64_t ተነባቢ-ብቻ

intel-fpga-dev.i/intel-fpga-fme.j/dperf/iommu/ (ለኢንቴል Xeon ሲፒዩ ከFPGAs ጋር ለ Acceleration Stack የሚሰራ አይደለም)

sysfs file mmio መስክ ዓይነት መዳረሻ
ቀዝቅዝ gperf.vtd_ctl.freeze አስርዮሽ int ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ

intel-fpga-dev.i/intel-fpga-fme.j/dperf/iommu/afuk/ (ለኢንቴል Xeon ሲፒዩ ከFPGAs ጋር ለ Acceleration Stack የሚሰራ አይደለም)

sysfs file mmio መስክ ዓይነት መዳረሻ
የንባብ_ግብይት gperf.VTD_AFU0_MEM_RD_TRANS ሄክስ uint64_t ተነባቢ-ብቻ
ግብይት_ፃፍ gperf.VTD_AFU0_MEM_WR_TRANS ሄክስ uint64_t ተነባቢ-ብቻ
tlb_አንብብ_መታ gperf.VTD_AFU0_TLB_RD_HIT ሄክስ uint64_t ተነባቢ-ብቻ
tlb_ጻፍ_መታ gperf.VTD_AFU0_TLB_WR_HIT ሄክስ uint64_t ተነባቢ-ብቻ

intel-fpga-dev.i/intel-fpga-fme.j/dperf/ጨርቅ/

sysfs file mmio መስክ ዓይነት መዳረሻ
ማንቃት gperf.fab_ctl.(ነቅቷል) አስርዮሽ int ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ
ቀዝቅዝ gperf.fab_ctl.freeze አስርዮሽ int ተጠቃሚ፡ ተነባቢ-ብቻ ስር፡ አንብብ-ጻፍ
pcie0_አንብብ gperf.FAB_PCIE0_RD ሄክስ uint64_t ተነባቢ-ብቻ
pcie0_ጻፍ gperf.FAB_PCIE0_WR ሄክስ uint64_t ተነባቢ-ብቻ
pcie1_አንብብ gperf.FAB_PCIE1_RD ሄክስ uint64_t ተነባቢ-ብቻ
pcie1_ጻፍ gperf.FAB_PCIE1_WR ሄክስ uint64_t ተነባቢ-ብቻ
አንብብ gperf.FAB_UPI_RD ሄክስ uint64_t ተነባቢ-ብቻ
upi_ጻፍ 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_ጻፍ gperf.FAB_PCIE0_WR ሄክስ uint64_t ተነባቢ-ብቻ
pcie1_አንብብ gperf.FAB_PCIE1_RD ሄክስ uint64_t ተነባቢ-ብቻ
pcie1_ጻፍ gperf.FAB_PCIE1_WR ሄክስ uint64_t ተነባቢ-ብቻ
አንብብ gperf.FAB_UPI_RD ሄክስ uint64_t ተነባቢ-ብቻ
upi_ጻፍ 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 አስርዮሽ int ተነባቢ-ብቻ
ltr port_header.control.latency_tolerance አስርዮሽ int ተነባቢ-ብቻ

ወደብ AFU ራስጌ sysfs files
intel-fpga-dev.i/intel-fpga-port.k/

sysfs file mmio መስክ ዓይነት መዳረሻ
አፉ_ኢድ 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_ስህተት ሄክስ uint64_t ተነባቢ-ብቻ
መጀመሪያ_የተበላሸ_req perror.malreq ሄክስ 16-ባይት ተነባቢ-ብቻ
ግልጽ ሽብር (ሁሉም ስህተቶች) የተለያዩ uint64_t ጻፍ-ብቻ

ማስታወሻ፡-
የወደብ ስህተቶቹን ለማፅዳት የአሁኑን ስህተቶች ትክክለኛ ቢትማስክ መፃፍ አለቦት፣ ለምሳሌample ድመት ስህተቶች> ግልጽ.

የክለሳ ታሪክ

የሰነድ ሥሪት ለውጦች
2017.10.02 የመጀመሪያ ልቀት።

OPAE Intel FPGA ሊኑክስ ሾፌር አርክቴክቸር መመሪያ

ሰነዶች / መርጃዎች

intel OPAE FPGA Linux Device Driver Architecture [pdf] የተጠቃሚ መመሪያ
OPAE FPGA ሊኑክስ ሾፌር አርክቴክቸር፣ OPAE FPGA፣ Linux Device Driver Architecture፣ የአሽከርካሪ አርክቴክቸር፣ አርክቴክቸር

ዋቢዎች

አስተያየት ይስጡ

የኢሜል አድራሻዎ አይታተምም። አስፈላጊ መስኮች ምልክት ተደርጎባቸዋል *