qemu 支持的主版以Intel 440FX PMC(PCI and Memory Controller)为北桥芯片,PIIX(PCI ISA Xcelerator)为南桥芯片构成相应的芯片组。
440FX PMC的基本结构图如下所示:
北桥芯片PMC用于连接主板上的高速设备,向上提供了连接处理器的Host总线接口,可以连接多个处理器,向下则主要提供了连接内存DRAM的接口和连接PCI总线系统的PCI总线接口,通过该PCI root port扩展出整个PCI设备树,包括PIIX南桥芯片。
qemu的sysbus所模拟的总线就是上图中的host bus。 host bus向上连接cpu,向下连接北桥芯片, 北桥芯片提供内存控制器和host bridge功能, host bridge是一个pci bridge,下面连接pci根总线, pci根总线通过南桥芯片连接isa总线用于兼容老式设备。
今天主要介绍sysbus的实现。
在qemu初始化的时候首先创建cpu,cpu创建的过程就会创建host总线,在创建设备的时候如果没有指定bus,就会将设备挂在到sysbus总线。具体调动栈为
qdev_creat