A study of the Linux kernel PCI subsystem with QEMU

The Linux PCI subsystem is one of the most significant subsystems of the Linux kernel. In this article, we introduce the usage of QEMU to emulate different PCI/PCIe configurations to help study the Linux PCI subsystem. This ability facilitates Linux administrators or developers, to study, debug and develop the Linux kernel, as it is much easier to customize the PCI/PCIe configuration with QEMU. For instance, in conjunction with SeaBIOS source code, it will be much easier to study PCI initialization and the probing process. In addition, it is also considerably faster to reboot a QEMU/KVM virtual machine compared to rebooting a baremetal server.