Add a new generic fuzz target for the 'pcie-pci-bridge' device. This target uses a Q35 machine with a multi-level PCI hierarchy to exercise the bridge's functionality. This is made possible by the preceding change to handle unimplemented BARs during fuzzing.
--- This new target significantly improves code coverage for the pcie-pci-bridge implementation. The baseline coverage shown below was generated by running all existing fuzz targets with the oss-fuzz corpus. === Component: hw/pci === ------------------------------------------------------------------------------- File New Target Baseline Change ------------------------------------------------------------------------------- shpc.c 359/511 (70.3%) 0/511 (0.0%) +359 pci_bridge.c 255/304 (83.9%) 12/304 (3.9%) +243 pcie.c 390/774 (50.4%) 160/774 (20.7%) +230 pcie_aer.c 119/524 (22.7%) 38/524 (7.3%) +81 pci.c 1154/2069 (55.8%) 1084/2069 (52.4%) +70 pcie_port.c 58/119 (48.7%) 17/119 (14.3%) +41 pci.h 86/132 (65.2%) 81/132 (61.4%) +5 === Component: hw/pci-bridge === ------------------------------------------------------------------------------- File New Target Baseline Change ------------------------------------------------------------------------------- pcie_root_port.c 86/127 (67.7%) 13/127 (10.2%) +73 pcie_pci_bridge.c 62/94 (66.0%) 20/94 (21.3%) +42 gen_pcie_root_port.c 45/66 (68.2%) 19/66 (28.8%) +26 Signed-off-by: Navid Emamdoost <[email protected]> --- tests/qtest/fuzz/generic_fuzz_configs.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/qtest/fuzz/generic_fuzz_configs.h b/tests/qtest/fuzz/generic_fuzz_configs.h index ef0ad95712..e025f57a3e 100644 --- a/tests/qtest/fuzz/generic_fuzz_configs.h +++ b/tests/qtest/fuzz/generic_fuzz_configs.h @@ -247,6 +247,14 @@ const generic_fuzz_config predefined_configs[] = { .args = "-machine q35 -nodefaults " "-parallel file:/dev/null", .objects = "parallel*", + },{ + .name = "pcie-pci-bridge", + .args = "-machine q35 -nodefaults " + "-device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=true,addr=0x2 " + "-device pcie-pci-bridge,id=pci.2,bus=pci.1,addr=0x0 " + "-netdev user,id=net0 " + "-device e1000,netdev=net0,id=nic0,bus=pci.2,addr=0x3", + .objects = "pci* shpc*" } }; -- 2.52.0.158.g65b55ccf14-goog
