Skip to content

Commit

Permalink
platforms/qemu: Add slot table entries for a PCIe switch
Browse files Browse the repository at this point in the history
Add a more complex slot table example to the Qemu platform. A more complex
PCIe topology in qemu is useful for testing and it's simple enough to
serve as an good example of how to use the slot table construction macros.

Test in Qemu with:

./qemu-system-ppc64 -machine powernv -nographic -m 2G  \
-bios ./skiboot.lid -kernel ./vmlinux -initrd ./petitfs \
-device x3130-upstream,id=sw0_up,bus=pcie.2 \
	-device xio3130-downstream,id=sw0_down0,chassis=1,slot=0,bus=sw0_up,addr=0 \
		-drive file=./disk1.img,format=raw,if=none,id=nvme1 \
		-device nvme,drive=nvme1,bus=sw0_down0,serial=1 \
	-device xio3130-downstream,id=sw0_down1,chassis=1,slot=1,bus=sw0_up,addr=1 \
	-device xio3130-downstream,id=sw0_down2,chassis=1,slot=2,bus=sw0_up,addr=2 \
		-device e1000e,bus=sw0_down2

Results in:

PHB#0002:00:00.0 [ROOT] 1014 04c1 R:00 C:060400 B:01..05 SLOT=pcie.2
PHB#0002:01:00.0 [SWUP] 104c 8232 R:02 C:060400 B:02..05 SLOT=sw0_up
PHB#0002:02:00.0 [SWDN] 104c 8233 R:01 C:060400 B:03..03 SLOT=sw0_down0
PHB#0002:03:00.0 [EP  ] 8086 5845 R:02 C:010802 (  mass-storage) LOC_CODE=sw0_down0
PHB#0002:02:01.0 [SWDN] 104c 8233 R:01 C:060400 B:04..04 SLOT=sw0_down1
PHB#0002:02:02.0 [SWDN] 104c 8233 R:01 C:060400 B:05..05 SLOT=sw0_down2
PHB#0002:05:00.0 [EP  ] 8086 10d3 R:00 C:020000 (      ethernet) LOC_CODE=sw0_down2

Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
  • Loading branch information
oohal committed Nov 14, 2019
1 parent 1ed21a8 commit 83a92e3
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions platforms/qemu/qemu.c
Expand Up @@ -12,15 +12,24 @@ static bool bt_device_present;

ST_PLUGGABLE(qemu_slot0, "pcie.0");
ST_PLUGGABLE(qemu_slot1, "pcie.1");
ST_PLUGGABLE(qemu_slot2, "pcie.2");

static const struct slot_table_entry qemu_sw_down[] = {
SW_PLUGGABLE("sw0_down0", 0x0),
SW_BUILTIN ("sw0_down1", 0x1),
SW_PLUGGABLE("sw0_down2", 0x2),
{ .etype = st_end },
};
ST_BUILTIN_DEV(qemu_sw_up, "sw0_up", .children = qemu_sw_down);
ST_BUILTIN_DEV(qemu_sw_root, "pcie.2", .children = qemu_sw_up);

ST_PLUGGABLE(qemu_slot3, "pcie.3");
ST_PLUGGABLE(qemu_slot4, "pcie.4");
ST_PLUGGABLE(qemu_slot5, "pcie.5");

static const struct slot_table_entry qemu_phb_table[] = {
ST_PHB_ENTRY(0, 0, qemu_slot0),
ST_PHB_ENTRY(0, 1, qemu_slot1),
ST_PHB_ENTRY(0, 2, qemu_slot2),
ST_PHB_ENTRY(0, 2, qemu_sw_root),
ST_PHB_ENTRY(0, 3, qemu_slot3),
ST_PHB_ENTRY(0, 4, qemu_slot4),
ST_PHB_ENTRY(0, 5, qemu_slot5),
Expand Down

0 comments on commit 83a92e3

Please sign in to comment.