1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
mistranslation: 0.991
instruction: 0.835
device: 0.834
semantic: 0.820
other: 0.737
graphic: 0.642
assembly: 0.569
network: 0.458
socket: 0.416
KVM: 0.281
boot: 0.278
vnc: 0.277
PXB devices
release: 4c41341af76cfc85b5a6c0f87de4838672ab9f89
qdev_device_add() will search for the "closest" bus possible, and bail out early if that bus is a root bus. pxb devices are considered root buses and so if you either
1. Add a PCI device on the QEMU command line *after* a pxb device, or
2. Add an integrated PCI device (like a watchdog)
#1: -device pxb-pcie,id=cxl.0,bus=pcie.0,bus_nr=52 -device ahci,id=sata0,addr=0x8
#2: -watchdog i6300esb -device pxb-pcie,id=cxl.0,bus=pcie.0,bus_nr=52
The PXB will get selected as the bus (instead of the real root bus) and this will cause an assertion failure with the message like "qemu-system-x86_64: -device ahci,id=sata0,addr=0x8: PCI: Only PCI/PCIe bridges can be plugged into pxb-pcie"
I think this is relatively solvable in the code base by determining if a bus is an expander, and skipping it if so. However, I wonder if it makes more sense to just allow expanders to have endpoint devices.
I accidentally double submitted this, and this one has the wrong description. Please close and use
#1900919 instead.
|