summary refs log tree commit diff stats
path: root/results/scraper/launchpad-without-comments/1900919
blob: bbc487806adab9c81df3f68631b0d74d3eb37fe8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PXB selected as root bus incorrectly

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.