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 <navidem@google.com>
---
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