From: Yanteng Si <siyanteng01@gmail.com> Date: Fri, 12 Nov 2021 02:21:00 +0000 (+0800) Subject: docs/zh_CN: add pci-iov-howto translation X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=d5b78edb5898613470a4f2928d4e474cd91e8832;p=linux.git docs/zh_CN: add pci-iov-howto translation Translate .../PCI/pci-iov-howto.rst into Chinese. Signed-off-by: Yanteng Si <siyanteng@loongson.cn> Reviewed-by: Alex Shi <alexs@kernel.org> Link: https://lore.kernel.org/r/4c67e3a0ab6c8fe12b97adb924f079d7425d40c5.1636683482.git.siyanteng@loongson.cn Signed-off-by: Jonathan Corbet <corbet@lwn.net> --- diff --git a/Documentation/translations/zh_CN/PCI/index.rst b/Documentation/translations/zh_CN/PCI/index.rst index d3bb2af773708..67860b7e5ac7b 100644 --- a/Documentation/translations/zh_CN/PCI/index.rst +++ b/Documentation/translations/zh_CN/PCI/index.rst @@ -23,10 +23,11 @@ Linux PCIæ»çº¿åç³»ç» pci pciebus-howto + pci-iov-howto Todolist: - pci-iov-howto + msi-howto sysfs-pci acpi-info diff --git a/Documentation/translations/zh_CN/PCI/pci-iov-howto.rst b/Documentation/translations/zh_CN/PCI/pci-iov-howto.rst new file mode 100644 index 0000000000000..fbc83dfdcead0 --- /dev/null +++ b/Documentation/translations/zh_CN/PCI/pci-iov-howto.rst @@ -0,0 +1,170 @@ +.. SPDX-License-Identifier: GPL-2.0 +.. include:: <isonum.txt> +.. include:: ../disclaimer-zh_CN.rst + +:Original: Documentation/PCI/pci-iov-howto.rst + +:ç¿»è¯: + + å¸å»¶è ¾ Yanteng Si <siyanteng@loongson.cn> + +:æ ¡è¯: + + + +.. _cn_pci-iov-howto: + +========================== +PCI Express I/O èæåæå +========================== + +:çæ: |copy| 2009 Intel Corporation +:ä½è : - Yu Zhao <yu.zhao@intel.com> + - Donald Dutile <ddutile@redhat.com> + +æ¦è¿° +==== + +ä»ä¹æ¯SR-IOV +------------ + +åæ ¹I/Oèæåï¼SR-IOVï¼æ¯ä¸ç§PCI Expressæ©å±åè½ï¼å®ä½¿ä¸ä¸ªç©çè®¾å¤æ¾ç¤ºä¸ºå¤ä¸ª +èæè®¾å¤ãç©ç设å¤è¢«ç§°ä¸ºç©çåè½ï¼PFï¼ï¼èèæè®¾å¤è¢«ç§°ä¸ºèæåè½ï¼VFï¼ãVFçå +é å¯ä»¥ç±PFéè¿å°è£ å¨è¯¥åè½ä¸çå¯åå¨å¨ææ§å¶ãé»è®¤æ åµä¸ï¼è¯¥åè½æªè¢«å¯ç¨ï¼PF表 +ç°ä¸ºä¼ ç»çPCIe设å¤ã䏿¦å¼å¯ï¼æ¯ä¸ªVFçPCIé 置空é´é½å¯ä»¥éè¿èªå·±çæ»çº¿ã设å¤å +åè½ç¼å·ï¼è·¯ç±IDï¼æ¥è®¿é®ãè䏿¯ä¸ªVF乿PCIå å空é´ï¼ç¨äºæ å°å ¶å¯åå¨éãVF设 +å¤é©±å¨ç¨åºå¯¹å¯åå¨éè¿è¡æä½ï¼è¿æ ·å®å°±å¯ä»¥åæ¥åè½ï¼å¹¶ä½ä¸ºä¸ä¸ªçæ£çç°æPCIè®¾å¤ +åºç°ã + +ä½¿ç¨æå +======== + +æææ ·æè½å¯ç¨SR-IOVåè½ +------------------------ + +æå¤ç§æ¹æ³å¯ç¨äºSR-IOVçå¯ç¨ãå¨ç¬¬ä¸ç§æ¹æ³ä¸ï¼è®¾å¤é©±å¨ï¼PF驱å¨ï¼å°éè¿SR-IOV +æ ¸å¿æä¾çAPIæ§å¶åè½çå¯ç¨åç¦ç¨ãå¦æç¡¬ä»¶å ·æSR-IOVè½åï¼å è½½å ¶PF驱å¨å¨å°å¯ +ç¨å®åä¸PFç¸å ³çææVFãä¸äºPF驱å¨éè¦è®¾ç½®ä¸ä¸ªæ¨¡ååæ°ï¼ä»¥ç¡®å®è¦å¯ç¨çVFçæ°éã +å¨ç¬¬äºç§æ¹æ³ä¸ï¼å¯¹sysfsæä»¶sriov_numvfsçåå ¥å°å¯ç¨åç¦ç¨ä¸PCIe PFç¸å ³çVFã +è¿ç§æ¹æ³å®ç°äºæ¯ä¸ªPFçVFå¯ç¨/ç¦ç¨å¼ï¼è第ä¸ç§æ¹æ³åéç¨äºåä¸è®¾å¤çææPFãæ¤å¤ï¼ +PCI SRIOVæ ¸å¿æ¯æç¡®ä¿å¯ç¨/ç¦ç¨æä½æ¯ææçï¼ä»¥åå°å䏿£æ¥å¨å¤ä¸ªé©±å¨ç¨åºä¸çé +å¤ï¼ä¾å¦ï¼å¦æå¯ç¨VFï¼æ£æ¥numvfs == 0ï¼ç¡®ä¿numvfs <= totalvfsã +第äºç§æ¹æ³æ¯å¯¹æ°ç/æªæ¥çVF设å¤çæ¨èæ¹æ³ã + +æææ ·æè½ä½¿ç¨èæåè½ +---------------------- + +å¨å æ ¸ä¸ï¼VF被è§ä¸ºçææçPCI设å¤ï¼æä»¥å®ä»¬åºè¯¥è½å¤ä»¥ä¸çæ£çPCI设å¤ç¸åçæ¹å¼ +å·¥ä½ãVFéè¦ç设å¤é©±å¨ä¸æ®éPCI设å¤ç驱å¨ç¸åã + +å¼åè æå +========== + +SR-IOV API +---------- + +ç¨æ¥å¼å¯SR-IOVåè½: + +(a) 对äºç¬¬ä¸ç§æ¹æ³ï¼å¨é©±å¨ç¨åºä¸:: + + int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn); + +nr_virtfn'æ¯è¦å¯ç¨çVFçç¼å·ã + +(b) 对äºç¬¬äºç§æ¹æ³ï¼ä»sysfs:: + + echo 'nr_virtfn' > \ + /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs + +ç¨æ¥å ³éSR-IOVåè½: + +(a) 对äºç¬¬ä¸ç§æ¹æ³ï¼å¨é©±å¨ç¨åºä¸:: + + void pci_disable_sriov(struct pci_dev *dev); + +(b) 对äºç¬¬äºç§æ¹æ³ï¼ä»sysfs:: + + echo 0 > \ + /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs + +è¦æ³éè¿ä¸»æºä¸çå ¼å®¹é©±å¨å¯ç¨èªå¨æ¢æµVFï¼å¨å¯ç¨SR-IOVåè½ä¹åè¿è¡ä¸é¢çå½ä»¤ãè¿ +æ¯é»è®¤çè¡ä¸ºã +:: + + echo 1 > \ + /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_drivers_autoprobe + +è¦ç¦æ¢ä¸»æºä¸çå ¼å®¹é©±å¨èªå¨æ¢æµVFï¼è¯·å¨å¯ç¨SR-IOVåè½ä¹åè¿è¡ä»¥ä¸å½ä»¤ãæ´æ°è¿ä¸ª +å ¥å£ä¸ä¼å½±åå·²ç»è¢«æ¢æµçVFã +:: + + echo 0 > \ + /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_drivers_autoprobe + +ç¨ä¾ +---- + +ä¸é¢çä»£ç æ¼ç¤ºäºSR-IOV APIçç¨æ³ +:: + + static int dev_probe(struct pci_dev *dev, const struct pci_device_id *id) + { + pci_enable_sriov(dev, NR_VIRTFN); + + ... + + return 0; + } + + static void dev_remove(struct pci_dev *dev) + { + pci_disable_sriov(dev); + + ... + } + + static int dev_suspend(struct pci_dev *dev, pm_message_t state) + { + ... + + return 0; + } + + static int dev_resume(struct pci_dev *dev) + { + ... + + return 0; + } + + static void dev_shutdown(struct pci_dev *dev) + { + ... + } + + static int dev_sriov_configure(struct pci_dev *dev, int numvfs) + { + if (numvfs > 0) { + ... + pci_enable_sriov(dev, numvfs); + ... + return numvfs; + } + if (numvfs == 0) { + .... + pci_disable_sriov(dev); + ... + return 0; + } + } + + static struct pci_driver dev_driver = { + .name = "SR-IOV Physical Function driver", + .id_table = dev_id_table, + .probe = dev_probe, + .remove = dev_remove, + .suspend = dev_suspend, + .resume = dev_resume, + .shutdown = dev_shutdown, + .sriov_configure = dev_sriov_configure, + };