PCIE Controller ========================= .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`Architecture ` * :ref:`HW : ` * :ref:`SW : ` * :ref:`Applications & Libraries ` * :ref:`Kernel & Driver modules ` * :ref:`Use case ` * :ref:`Driver Development ` * :ref:`Custom build of driver modules ` * :ref:`Load custom built driver modules ` * :ref:`Init path ` * :ref:`Control path ` * :ref:`Data path ` * :ref:`Contexts ` * :ref:`Threads ` * :ref:`Timers ` * :ref:`Interrupts ` * :ref:`Data Structures ` * :ref:`FAQs ` * :ref:`Reference links ` .. _FreebsdDeviceDriver_pcie_controller_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow * About pcie controller .. _FreebsdDeviceDriver_pcie_controller_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _FreebsdDeviceDriver_pcie_controller_step3: .. tab-set:: .. tab-item:: Version Info =============================== ======================================= # Version =============================== ======================================= Freebsd 14.1.0 =============================== ======================================= .. _FreebsdDeviceDriver_pcie_controller_step4: .. tab-set:: .. tab-item:: Architecture * Architecture .. _FreebsdDeviceDriver_pcie_controller_step5: .. tab-set:: .. tab-item:: HW .. code-block:: c test:~$ pciconf -lv | grep -A3 -B4 hostb .. _FreebsdDeviceDriver_pcie_controller_step6: .. tab-set:: .. tab-item:: SW .. _FreebsdDeviceDriver_pcie_controller_step7: .. tab-set:: .. tab-item:: Applications & Libraries .. code-block:: c test:~$ pciconf -lv .. _FreebsdDeviceDriver_pcie_controller_step8: .. tab-set:: .. tab-item:: Kernel & Driver modules * No driver modules are available , which is part of kernel image .. code-block:: c Source code path : /usr/src/sys/dev/pci pci.c device_probe() -> calling the pci probe function pci_probe() -> probe the pci controller pci_attach() -> function finding how many slot is connected pci_print_child() -> printing the connected client device from teh each slot device_get_children() -> calling the device driver for each client device .. _FreebsdDeviceDriver_pcie_controller_step9: .. tab-set:: .. tab-item:: Use case .. code-block:: c test:~$ .. _FreebsdDeviceDriver_pcie_controller_step10: .. tab-set:: .. tab-item:: Driver Development .. _FreebsdDeviceDriver_pcie_controller_step11: .. tab-set:: .. tab-item:: Custom build of driver modules * No driver modules are available , which is part of kernel image. But to add the changes in pci driver, go to the below path .. code-block:: c test:~$ cd /usr/src/sys/dev/pci * Add the changes .. code-block:: c test:~$ cd /usr/src .. code-block:: c test:~$ make -j8 buildkernel -DNO_CLEAN KERNCONF=MYTEST .. _FreebsdDeviceDriver_pcie_controller_step12: .. tab-set:: .. tab-item:: Load custom built driver modules * No driver modules are available , which is part of kernel image .. _FreebsdDeviceDriver_pcie_controller_step13: .. tab-set:: .. tab-item:: Init path .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step14: .. tab-set:: .. tab-item:: Control path .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step15: .. tab-set:: .. tab-item:: Data path .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step16: .. tab-set:: .. tab-item:: Contexts .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step17: .. tab-set:: .. tab-item:: Threads .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step18: .. tab-set:: .. tab-item:: Timers .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step19: .. tab-set:: .. tab-item:: Interrupts .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step20: .. tab-set:: .. tab-item:: Data Structures .. code-block:: test:~$ .. _FreebsdDeviceDriver_pcie_controller_step21: .. tab-set:: .. tab-item:: FAQs .. code-block:: c test:~$ .. _FreebsdDeviceDriver_pcie_controller_step22: .. tab-set:: .. tab-item:: Reference links * `PCI Devices `_ * `FreeBSD Manual Page - PCI(4) `_ * `FreeBSD Manual Page - pciconf `_