)]}'
{".zuul.yaml":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"35cd6bbac1543a9bd7b14a54ceb3168b3b029faa","unresolved":false,"context_lines":[{"line_number":96,"context_line":"- job:"},{"line_number":97,"context_line":"    name: cyborg-tempest-centos-10-stream"},{"line_number":98,"context_line":"    parent: cyborg-tempest-base"},{"line_number":99,"context_line":"    nodeset: devstack-single-node-centos-10-stream"},{"line_number":100,"context_line":"    description: |"},{"line_number":101,"context_line":"      Cyborg devstack tempest tests job on CentOS Stream 10."},{"line_number":102,"context_line":"    voting: false"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"26041b7c_fcfa1a48","line":99,"updated":"2026-07-03 13:51:44.000000000","message":"The new non-voting job sets nodeset: devstack-single-node-centos-10-stream, which must be defined in openstack/devstack\u0027s Zuul config for the job to be usable. This could not be verified from this environment.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: If the nodeset is not (yet) defined in the current openstack/devstack, Zuul raises a configuration error and the CentOS Stream 10 coverage this patch adds never runs -- zero coverage while appearing to add some.\n\n**Suggestion**:\nConfirm devstack-single-node-centos-10-stream exists in openstack/devstack (it mirrors the existing devstack-single-node-centos-9-stream). If absent, land it upstream first or reuse an existing centos nodeset. The job is non-voting so it will not block merge, but resolve this before relying on the signal.","commit_id":"52ff52ec79c360e063999443291215026e175ebd"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"d03067c0aa431032befda7f4728055870f7fbc9f","unresolved":true,"context_lines":[{"line_number":94,"context_line":"    parent: cyborg-multinode-tempest"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"- job:"},{"line_number":97,"context_line":"    name: cyborg-tempest-centos-10-stream"},{"line_number":98,"context_line":"    parent: cyborg-tempest-base"},{"line_number":99,"context_line":"    nodeset: devstack-single-node-centos-10-stream"},{"line_number":100,"context_line":"    description: |"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"4a5449d8_19b6a984","line":97,"range":{"start_line":97,"start_character":3,"end_line":97,"end_character":41},"updated":"2026-07-06 07:30:05.000000000","message":"Do we want to run this job as a periodic or experimental job?","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7767b263cf0e076784f9957db68fcf8118071a5c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    parent: cyborg-multinode-tempest"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"- job:"},{"line_number":97,"context_line":"    name: cyborg-tempest-centos-10-stream"},{"line_number":98,"context_line":"    parent: cyborg-tempest-base"},{"line_number":99,"context_line":"    nodeset: devstack-single-node-centos-10-stream"},{"line_number":100,"context_line":"    description: |"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"211de77d_6d2cf74b","line":97,"range":{"start_line":97,"start_character":3,"end_line":97,"end_character":41},"in_reply_to":"4a5449d8_19b6a984","updated":"2026-07-08 11:01:36.000000000","message":"Done","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63ed5ee97bf19ba9e2c0bd8c268401cdcbf7a627","unresolved":true,"context_lines":[{"line_number":99,"context_line":"    nodeset: devstack-single-node-centos-10-stream"},{"line_number":100,"context_line":"    description: |"},{"line_number":101,"context_line":"      Cyborg devstack tempest tests job on CentOS Stream 10."},{"line_number":102,"context_line":"    voting: false"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"- job:"},{"line_number":105,"context_line":"    name: cyborg-tempest-ipv6"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"41ddfb71_d1e293a9","line":102,"range":{"start_line":102,"start_character":3,"end_line":102,"end_character":17},"updated":"2026-07-06 13:59:09.000000000","message":"we can drop this if we move it","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"a6247a9f16ab6a147c89a2e9588c7a67992706f0","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    nodeset: devstack-single-node-centos-10-stream"},{"line_number":100,"context_line":"    description: |"},{"line_number":101,"context_line":"      Cyborg devstack tempest tests job on CentOS Stream 10."},{"line_number":102,"context_line":"    voting: false"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"- job:"},{"line_number":105,"context_line":"    name: cyborg-tempest-ipv6"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"c07922ba_63fb74e4","line":102,"range":{"start_line":102,"start_character":3,"end_line":102,"end_character":17},"in_reply_to":"41ddfb71_d1e293a9","updated":"2026-07-08 05:22:23.000000000","message":"Done","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63ed5ee97bf19ba9e2c0bd8c268401cdcbf7a627","unresolved":true,"context_lines":[{"line_number":124,"context_line":"      jobs:"},{"line_number":125,"context_line":"        - cyborg-tempest-py3"},{"line_number":126,"context_line":"        - cyborg-tempest-ipv6"},{"line_number":127,"context_line":"        - cyborg-tempest-centos-10-stream"},{"line_number":128,"context_line":"        - cyborg-grenade"},{"line_number":129,"context_line":"        - cyborg-grenade-skip-level-always"},{"line_number":130,"context_line":"    gate:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"b7f4cad8_dff8b478","line":127,"range":{"start_line":127,"start_character":6,"end_line":127,"end_character":41},"updated":"2026-07-06 13:59:09.000000000","message":"lets put this in the weekly line instead and add it to experimental for manual triggering","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"a6247a9f16ab6a147c89a2e9588c7a67992706f0","unresolved":false,"context_lines":[{"line_number":124,"context_line":"      jobs:"},{"line_number":125,"context_line":"        - cyborg-tempest-py3"},{"line_number":126,"context_line":"        - cyborg-tempest-ipv6"},{"line_number":127,"context_line":"        - cyborg-tempest-centos-10-stream"},{"line_number":128,"context_line":"        - cyborg-grenade"},{"line_number":129,"context_line":"        - cyborg-grenade-skip-level-always"},{"line_number":130,"context_line":"    gate:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"a75c5fb8_31bb6dfa","line":127,"range":{"start_line":127,"start_character":6,"end_line":127,"end_character":41},"in_reply_to":"b7f4cad8_dff8b478","updated":"2026-07-08 05:22:23.000000000","message":"Marked as resolved.","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"ef37b9ea766cf2a1c544d16b7d8943306738954f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"593a3113_74a42a23","updated":"2026-07-03 11:09:13.000000000","message":"Not ready for review.","commit_id":"260f3c34e0b2a5de9be8448d3501b60ba4641ee8"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7d7235ca4bae4280908d350ec497ec9764c0c50c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1abfefa7_31f49207","updated":"2026-07-03 11:30:48.000000000","message":"recheck","commit_id":"260f3c34e0b2a5de9be8448d3501b60ba4641ee8"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"1c06816f45bc42586ae431e67680f9f16556f9a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2bc100ce_5aef696b","updated":"2026-07-03 13:37:37.000000000","message":"recheck","commit_id":"52ff52ec79c360e063999443291215026e175ebd"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7880fed30244955dbbe7d1a571901731c649d99e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8cd4a6c5_aef54698","updated":"2026-07-06 07:43:54.000000000","message":"teim-ci: auto","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"0df061cf3a459f3f6c31e3fa7f60e5ef83c3e90d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8ea6c010_f64cc477","updated":"2026-07-08 10:14:11.000000000","message":"check experimental","commit_id":"7fe176914627a92007a2fee7d9a22291edb1899f"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"8e686c5a761d524bf76c07abf490da8265acc34f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d3c59580_47e8f9ce","updated":"2026-07-08 06:31:38.000000000","message":"check experimental","commit_id":"7fe176914627a92007a2fee7d9a22291edb1899f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7767b263cf0e076784f9957db68fcf8118071a5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ad7a3988_2f00f55b","updated":"2026-07-08 11:01:36.000000000","message":"lets wait for the recheck but overall this looks good.","commit_id":"7fe176914627a92007a2fee7d9a22291edb1899f"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"8bb42be5346e821d639c5bfc87c2f9806eaa0134","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f67cfbbf_08e66730","updated":"2026-07-08 11:11:49.000000000","message":"needs more fixes on lint side.","commit_id":"7fe176914627a92007a2fee7d9a22291edb1899f"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"a02c6ba988b70a0ddb1e3ba165c8330b802f4f47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6ef8758b_1a042dc1","updated":"2026-07-08 12:01:55.000000000","message":"check experimental","commit_id":"1131895021fc7090804683f6f25e4011f4686160"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"a38413a018debdab543410f6948e9692ca6baaf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d905246a_917bdcc1","updated":"2026-07-09 05:55:09.000000000","message":"check experimental","commit_id":"1131895021fc7090804683f6f25e4011f4686160"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"82c478e76142004ad28ec9d12ea4e01b31c6f74d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6eab90ec_953e50fe","updated":"2026-07-08 14:11:26.000000000","message":"check experimental mirror issue","commit_id":"1131895021fc7090804683f6f25e4011f4686160"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"71bb208579b75c301e1a8972613fee167061d215","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"84446c39_267c966c","updated":"2026-07-09 05:54:47.000000000","message":"recheck","commit_id":"1131895021fc7090804683f6f25e4011f4686160"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9990f5dad238c0b39385b41e180be12cb76dc10b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"264a68e2_902b6ba0","updated":"2026-07-09 10:32:00.000000000","message":"recheck https://review.opendev.org/c/openstack/cyborg/+/995867 merged","commit_id":"1131895021fc7090804683f6f25e4011f4686160"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"57922cf5c0d38eab98838cb15b99665215d503d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d5ea0c98_8c17cd96","updated":"2026-07-09 12:56:24.000000000","message":"Yes, it is a great addition to perform linting on pci-sim code. Sean will add a zuul job in followup to run these linters in CI.","commit_id":"c5236122308e40fd6786dfb926b632ec86d52518"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"6c80477d52544116d89bb2fbf23de69adc31522a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"dee2ff4b_a58826d6","updated":"2026-07-09 12:51:09.000000000","message":"changes lgtm","commit_id":"c5236122308e40fd6786dfb926b632ec86d52518"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3c7efeb09572421e656fb37a40561db65b064e90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5239e82b_af99e6b7","updated":"2026-07-09 11:36:25.000000000","message":"check experimental","commit_id":"c5236122308e40fd6786dfb926b632ec86d52518"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"322a89208d8a65fb5ee98fdea1942b3e6616eba0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"08f80cf8_7cde0a64","updated":"2026-07-09 12:56:31.000000000","message":"im waiting for the experimatal resutls to report back but we can proceed wonce it does","commit_id":"c5236122308e40fd6786dfb926b632ec86d52518"}],"devstack/lib/pci_sim":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"07b719573f1e4638fdb4b93e9370b943b553eb70","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    if is_ubuntu; then"},{"line_number":132,"context_line":"        pkgs\u003d(build-essential \"linux-headers-${kver}\" kmod)"},{"line_number":133,"context_line":"    elif is_fedora; then"},{"line_number":134,"context_line":"        pkgs\u003d(gcc make \"kernel-devel-${kver}\" kmod)"},{"line_number":135,"context_line":"    else"},{"line_number":136,"context_line":"        die $LINENO \"Unsupported distro for pci-sim build\""},{"line_number":137,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"ca559343_d4c3d252","line":134,"updated":"2026-07-03 11:48:13.000000000","message":"On Fedora/CentOS, \u0027kernel-devel-${kver}\u0027 (uname -r derived) may not match an available sub-package if the installed kernel and the latest devel headers are out of sync after a kernel update that has not been rebooted into.\n\n**Severity**: WARNING | **Confidence**: 0.6\n\n**Impact**: On a freshly updated CentOS node where the running kernel lags the newest installed kernel, \u0027kernel-devel-$(uname -r)\u0027 can fail to find a matching devel package in the repo, aborting the pci-sim build with a dnf dependency error.\n\n**Suggestion**:\nConsider falling back to the unversioned \u0027kernel-devel\u0027 package matching the newest installed kernel-devel, or add a guard that checks \u0027rpm -q kernel-devel-${kver}\u0027 and prints a helpful message prompting a reboot before build_pci_sim. Document the running-kernel/devel-header sync requirement in build.rst.","commit_id":"8c082f51c36ee1921c9e720b94e316f5f3066c0d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7767b263cf0e076784f9957db68fcf8118071a5c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        pkgs+\u003d(dwarves)"},{"line_number":147,"context_line":"    fi"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    install_package \"${pkgs[@]}\""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    $CYBORG_DIR/tools/check-kernel-config.sh"},{"line_number":152,"context_line":"    make -C $CYBORG_DIR/pci-sim modules \\"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"b12fc878_b2daadf0","line":149,"updated":"2026-07-08 11:01:36.000000000","message":"+1","commit_id":"7fe176914627a92007a2fee7d9a22291edb1899f"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"db397530eaf767747599f27c681a17ae8a045fc3","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    local kconfig\u003d/boot/config-${kver}"},{"line_number":129,"context_line":"    local -a pkgs"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    if is_ubuntu; then"},{"line_number":132,"context_line":"        pkgs\u003d(build-essential \"linux-headers-${kver}\" kmod)"},{"line_number":133,"context_line":"    elif is_fedora; then"},{"line_number":134,"context_line":"        local kpkg"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"c30e4714_7e6e4e64","line":131,"updated":"2026-07-09 11:54:56.000000000","message":"The new distro detection in build_pci_sim() checks only is_ubuntu and is_fedora. DevStack\u0027s is_ubuntu returns true only for os_VENDOR \u0027Ubuntu\u0027 or \u0027LinuxMint\u0027, not for Debian. The primary CI job cyborg-tempest-base uses nodeset devstack-single-node-debian-trixie with ENABLE_PCI_SIM\u003dtrue, so build_...\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: All existing CI jobs that inherit from cyborg-tempest-base (cyborg-tempest-py3, cyborg-tempest-ipv6, and the multinode variants) run on Debian Trixie with ENABLE_PCI_SIM\u003dtrue. They will fail at the build_pci_sim step because neither is_ubuntu nor is_fedora matches Debian, causing die to abort sta...\n\n**Priority**: Before merge\n**Why This Matters**: All existing CI jobs that inherit from cyborg-tempest-base (cyborg-tempest-py3, cyborg-tempest-ipv6, and the multinode variants) run on Debian Trixie with ENABLE_PCI_SIM\u003dtrue. They will fail at the build_pci_sim step because neither is_ubuntu nor is_fedora matches Debian, causing die to abort sta...\n\n**Recommendation**:\nAdd is_debian to the apt-based branch. For example: `if is_ubuntu || is_debian; then` since Debian uses the same package names (build-essential, linux-headers-${kver}, kmod). Alternatively, combine the check as `if is_ubuntu || is_debian; then ... elif is_fedora; then ...`.","commit_id":"c5236122308e40fd6786dfb926b632ec86d52518"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"322a89208d8a65fb5ee98fdea1942b3e6616eba0","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    local kconfig\u003d/boot/config-${kver}"},{"line_number":129,"context_line":"    local -a pkgs"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    if is_ubuntu; then"},{"line_number":132,"context_line":"        pkgs\u003d(build-essential \"linux-headers-${kver}\" kmod)"},{"line_number":133,"context_line":"    elif is_fedora; then"},{"line_number":134,"context_line":"        local kpkg"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"2172df9c_238922cd","line":131,"in_reply_to":"c30e4714_7e6e4e64","updated":"2026-07-09 12:56:31.000000000","message":"this is not corect  dispite its name is_ubuntu is ture on debian the same way is_fedora is true on centos\n\nthis si effectivly a does it use debs or rpms check","commit_id":"c5236122308e40fd6786dfb926b632ec86d52518"}],"doc/source/contributor/pci-sim/kernel-dependencies.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"63ed5ee97bf19ba9e2c0bd8c268401cdcbf7a627","unresolved":true,"context_lines":[{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* Ubuntu 26.04 generic kernel (``7.0.0-15-generic``)"},{"line_number":38,"context_line":"* CentOS Stream 10 kernel (``6.12.0-243.el10.x86_64``)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"CentOS Stream 10 ships kernel 6.12 but backports IOMMU and VFIO API changes"},{"line_number":41,"context_line":"from upstream 6.15+.  The compat header uses ``RHEL_RELEASE_CODE`` guards to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"972cb1c8_ebd238b4","line":38,"updated":"2026-07-06 13:59:09.000000000","message":"and debian 13 which is what we are currently testing with.","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"a6247a9f16ab6a147c89a2e9588c7a67992706f0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* Ubuntu 26.04 generic kernel (``7.0.0-15-generic``)"},{"line_number":38,"context_line":"* CentOS Stream 10 kernel (``6.12.0-243.el10.x86_64``)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"CentOS Stream 10 ships kernel 6.12 but backports IOMMU and VFIO API changes"},{"line_number":41,"context_line":"from upstream 6.15+.  The compat header uses ``RHEL_RELEASE_CODE`` guards to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d90bbd48_67382d63","line":38,"in_reply_to":"972cb1c8_ebd238b4","updated":"2026-07-08 05:22:23.000000000","message":"Done","commit_id":"53f22b5b9093abbf99ac5c6a7cbb079093b7a1c5"}],"pci-sim/fake_pci_sriov_compat.h":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"07b719573f1e4638fdb4b93e9370b943b553eb70","unresolved":false,"context_lines":[{"line_number":21,"context_line":" */"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#if LINUX_VERSION_CODE \u003e\u003d KERNEL_VERSION(6, 15, 0) || \\"},{"line_number":24,"context_line":"    (defined(RHEL_RELEASE_CODE) \u0026\u0026 RHEL_RELEASE_CODE \u003e\u003d RHEL_RELEASE_VERSION(10, 3))"},{"line_number":25,"context_line":"#define PCI_SIM_HAS_615_API 1"},{"line_number":26,"context_line":"#else"},{"line_number":27,"context_line":"#define PCI_SIM_HAS_615_API 0"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8d44acfa_f713f667","line":24,"updated":"2026-07-03 11:48:13.000000000","message":"The compat header comment says RHEL_RELEASE_CODE is defined in CentOS/RHEL kernel headers, but the macro RHEL_RELEASE_VERSION is used without including the header that defines it.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Future readers (and future macros) will not have to rediscover which header provides RHEL_RELEASE_VERSION, and the build is robust against include-order changes.\n\n**Recommendation**:\nAdd a guarded include for the header that defines RHEL_RELEASE_VERSION (e.g. linux/rh_kabi.h on CentOS), wrapped in #if defined(RHEL_RELEASE_CODE), and add a brief comment noting the macro origin. If the macro is provided implicitly via the build system, document that assumption explicitly so a header reorganization does not silently break the gate.","commit_id":"8c082f51c36ee1921c9e720b94e316f5f3066c0d"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"07b719573f1e4638fdb4b93e9370b943b553eb70","unresolved":false,"context_lines":[{"line_number":21,"context_line":" */"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#if LINUX_VERSION_CODE \u003e\u003d KERNEL_VERSION(6, 15, 0) || \\"},{"line_number":24,"context_line":"    (defined(RHEL_RELEASE_CODE) \u0026\u0026 RHEL_RELEASE_CODE \u003e\u003d RHEL_RELEASE_VERSION(10, 3))"},{"line_number":25,"context_line":"#define PCI_SIM_HAS_615_API 1"},{"line_number":26,"context_line":"#else"},{"line_number":27,"context_line":"#define PCI_SIM_HAS_615_API 0"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9b471a34_f0923b73","line":24,"updated":"2026-07-03 11:48:13.000000000","message":"The new CentOS Stream 10 compat guard gates at RHEL_RELEASE_VERSION(10, 3), but the comment and docs describe CentOS Stream 10 generally. The relationship between the .3 minor version and the API backport is not documented.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: A reader can verify the gate threshold against the actual CentOS Stream 10 kernel headers without trial and error, and knows whether earlier CentOS Stream 10 builds (.0/.1/.2) are intentionally excluded.\n\n**Recommendation**:\nAdd a one-line comment on the #if line noting that RHEL 10.3 / CentOS Stream 10.3+ backported the 6.15 IOMMU/VFIO signatures, and confirm in kernel-dependencies.rst that the compatibility target (6.12.0-243.el10) corresponds to the .3 release. If older CentOS Stream 10 builds lack the backport, note that explicitly.","commit_id":"8c082f51c36ee1921c9e720b94e316f5f3066c0d"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"35cd6bbac1543a9bd7b14a54ceb3168b3b029faa","unresolved":false,"context_lines":[{"line_number":20,"context_line":" * API for older kernels.  Newer kernels keep using the richer callbacks."},{"line_number":21,"context_line":" */"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#if LINUX_VERSION_CODE \u003e\u003d KERNEL_VERSION(6, 15, 0) || \\"},{"line_number":24,"context_line":"    (defined(RHEL_RELEASE_CODE) \u0026\u0026 RHEL_RELEASE_CODE \u003e\u003d RHEL_RELEASE_VERSION(10, 3))"},{"line_number":25,"context_line":"#define PCI_SIM_HAS_615_API 1"},{"line_number":26,"context_line":"#else"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"9221f2be_bdc027ed","line":23,"updated":"2026-07-03 13:51:44.000000000","message":"The PCI_SIM_HAS_615_API gate selects the 6.15 API when RHEL_RELEASE_CODE \u003e\u003d RHEL_RELEASE_VERSION(10, 3). That (10, 3) cutoff is the sole condition making the module compile on c10s, but it is unchecked against the real RHEL_RELEASE_CODE in the c10s kernel-devel headers.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: If c10s reports an RHEL_RELEASE_CODE below 10.3 (e.g. 10.0-10.2), or the backport landed at a different minor, the gate is false and the old 6.12 API is selected -- the exact compile failure this patch exists to fix. Because the new CI job is non-voting, the regression could go unnoticed.\n\n**Suggestion**:\nBuild the module on a real CentOS Stream 10 node and check grep -E \u0027RHEL_RELEASE_(CODE|VERSION)\u0027 /lib/modules/$(uname -r)/build/include/generated/uapi/linux/version.h; adjust the minor to match. If the minor is uncertain or may drift across c10s builds, prefer a feature-detection guard (#ifdef on a symbol the backport introduces) over a hard-coded version number.","commit_id":"52ff52ec79c360e063999443291215026e175ebd"}],"pci-sim/run_cirros_vfio_guest_probe.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"07b719573f1e4638fdb4b93e9370b943b553eb70","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def launch_qemu(image: str, vf: str) -\u003e tuple[subprocess.Popen[bytes], int]:"},{"line_number":58,"context_line":"    \"\"\"Launch QEMU with ``vf`` assigned and return the process and PTY FD.\"\"\""},{"line_number":59,"context_line":"    qemu_bin \u003d os.environ.get(\"QEMU_BIN\", \"qemu-system-x86_64\")"},{"line_number":60,"context_line":"    cmd \u003d ["},{"line_number":61,"context_line":"        \"sudo\","},{"line_number":62,"context_line":"        \"-n\","}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffcbf76_1d274514","line":59,"updated":"2026-07-03 11:48:13.000000000","message":"The Python launch_qemu() helpers default QEMU_BIN to qemu-system-x86_64 when the env var is unset, but the shell wrappers now auto-detect and always export QEMU_BIN. The two layers can disagree if the Python script is ever run standalone.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: If a developer invokes run_cirros_vfio_guest_probe.py directly (not via the .sh wrapper) on a CentOS host, it falls back to qemu-system-x86_64 which does not exist there, masking the very RHEL problem the patch set out to fix.\n\n**Suggestion**:\nEither replicate the shell auto-detection in Python (check os.environ, then PATH lookup for qemu-system-x86_64, then /usr/libexec/qemu-kvm), or document clearly that the Python entry points must be launched through their shell wrappers. At minimum, raise a clear error when the resolved binary is missing rather than letting subprocess spawn a non-existent command.","commit_id":"8c082f51c36ee1921c9e720b94e316f5f3066c0d"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"35cd6bbac1543a9bd7b14a54ceb3168b3b029faa","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def launch_qemu(image: str, vf: str) -\u003e tuple[subprocess.Popen[bytes], int]:"},{"line_number":58,"context_line":"    \"\"\"Launch QEMU with ``vf`` assigned and return the process and PTY FD.\"\"\""},{"line_number":59,"context_line":"    qemu_bin \u003d os.environ.get(\"QEMU_BIN\", \"qemu-system-x86_64\")"},{"line_number":60,"context_line":"    cmd \u003d ["},{"line_number":61,"context_line":"        \"sudo\","},{"line_number":62,"context_line":"        \"-n\","}],"source_content_type":"text/x-python","patch_set":3,"id":"5edb445c_40d7f287","line":59,"updated":"2026-07-03 13:51:44.000000000","message":"The two .py launchers default QEMU_BIN to qemu-system-x86_64 only, whereas the .sh wrappers auto-detect and fall back to /usr/libexec/qemu-kvm. The wrappers export QEMU_BIN, so the Python default only matters when a .py launcher is invoked directly without the wrapper.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Direct invocation of run_cirros_vfio_guest_probe.py / run_cirros_vfio_userdata_echo.py on CentOS/RHEL would work without pre-exporting QEMU_BIN, matching the wrapper behaviour.\n\n**Recommendation**:\nEither mirror the wrapper\u0027s auto-detection in the .py scripts, or document that the .py launchers require QEMU_BIN to be set explicitly on RHEL-family hosts.","commit_id":"52ff52ec79c360e063999443291215026e175ebd"}],"pci-sim/run_cirros_vfio_guest_probe.sh":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"35cd6bbac1543a9bd7b14a54ceb3168b3b029faa","unresolved":false,"context_lines":[{"line_number":31,"context_line":"MODULE\u003d${MODULE:-./fake_pci_sriov.ko}"},{"line_number":32,"context_line":"MODULE_ARGS\u003d${MODULE_ARGS:-}"},{"line_number":33,"context_line":"RELOAD_MODULE\u003d${RELOAD_MODULE:-1}"},{"line_number":34,"context_line":"if [ -z \"${QEMU_BIN:-}\" ]; then"},{"line_number":35,"context_line":"\tif command -v qemu-system-x86_64 \u003e/dev/null 2\u003e\u00261; then"},{"line_number":36,"context_line":"\t\tQEMU_BIN\u003dqemu-system-x86_64"},{"line_number":37,"context_line":"\telse"}],"source_content_type":"text/x-sh","patch_set":3,"id":"4f71a9c8_4506ffbc","line":34,"updated":"2026-07-03 13:51:44.000000000","message":"The identical six-line QEMU_BIN auto-detection block is now copy-pasted into three .sh scripts (run_cirros_vfio_guest_probe.sh, run_cirros_vfio_userdata_echo.sh, run_fake_pci_qemu_vfio_smoke.sh).\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: A future binary/path change (e.g. a third distro location) would need a single edit instead of three, lowering the risk of the three copies drifting apart.\n\n**Recommendation**:\nConsider extracting the detection into a small sourced helper beside the scripts. Keeping each script self-contained is also reasonable if standalone independence is preferred; in that case accept the duplication deliberately.","commit_id":"52ff52ec79c360e063999443291215026e175ebd"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"04762cf8921deb10ed7ab9aec43bfce04a721334","unresolved":false,"context_lines":[{"line_number":31,"context_line":"MODULE\u003d${MODULE:-./fake_pci_sriov.ko}"},{"line_number":32,"context_line":"MODULE_ARGS\u003d${MODULE_ARGS:-}"},{"line_number":33,"context_line":"RELOAD_MODULE\u003d${RELOAD_MODULE:-1}"},{"line_number":34,"context_line":"if [ -z \"${QEMU_BIN:-}\" ]; then"},{"line_number":35,"context_line":"\tif command -v qemu-system-x86_64 \u003e/dev/null 2\u003e\u00261; then"},{"line_number":36,"context_line":"\t\tQEMU_BIN\u003dqemu-system-x86_64"},{"line_number":37,"context_line":"\telse"}],"source_content_type":"text/x-sh","patch_set":4,"id":"c399d65b_cfd0650d","line":34,"updated":"2026-07-06 05:06:13.000000000","message":"The QEMU binary auto-detection block (6 lines) is duplicated verbatim across run_cirros_vfio_guest_probe.sh, run_cirros_vfio_userdata_echo.sh, and run_fake_pci_qemu_vfio_smoke.sh.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Centralises the detection logic so a future change (e.g. a third binary path or a PATH-search fix) only has to be made once, avoiding the three copies silently drifting apart.\n\n**Recommendation**:\nExtract the block into a small sourced helper, e.g. pci-sim/_qemu_bin.sh, and \u0027. \"$SCRIPT_DIR/_qemu_bin.sh\"\u0027 from each script. If keeping the scripts fully standalone is preferred, leave as-is but note the duplication is intentional.","commit_id":"7878558a9bd01beb25f45d10b5c70cdccf65d590"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"f71fc7d0fff433dcb4ea8021c8dfcd5732cebaa9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"MODULE\u003d${MODULE:-./fake_pci_sriov.ko}"},{"line_number":32,"context_line":"MODULE_ARGS\u003d${MODULE_ARGS:-}"},{"line_number":33,"context_line":"RELOAD_MODULE\u003d${RELOAD_MODULE:-1}"},{"line_number":34,"context_line":"if [ -z \"${QEMU_BIN:-}\" ]; then"},{"line_number":35,"context_line":"\tif command -v qemu-system-x86_64 \u003e/dev/null 2\u003e\u00261; then"},{"line_number":36,"context_line":"\t\tQEMU_BIN\u003dqemu-system-x86_64"},{"line_number":37,"context_line":"\telse"}],"source_content_type":"text/x-sh","patch_set":8,"id":"c4d90d14_3b4bed2b","line":34,"updated":"2026-07-09 10:41:54.000000000","message":"The QEMU_BIN environment variable is introduced across all five QEMU-related scripts, but only run_fake_pci_qemu_vfio_smoke.sh documents it in its environment variables section. The two CirrOS shell scripts (run_cirros_vfio_guest_probe.sh, run_cirros_vfio_userdata_echo.sh) and two Python scripts...\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Users who read the script headers or Python docstrings to understand available configuration options will not discover QEMU_BIN. This is especially relevant on CentOS/RHEL where the default qemu-system-x86_64 binary does not exist and users need to know they can override the path.\n\n**Recommendation**:\nAdd a \u0027# - QEMU_BIN: QEMU binary path, auto-detected when unset\u0027 line to the environment variables section of run_cirros_vfio_guest_probe.sh (after QEMU_DEADLINE) and run_cirros_vfio_userdata_echo.sh. Add a \u0027* ``QEMU_BIN``: QEMU binary path, defaults to auto-detection (qemu-system-x86_64 or /usr/libexec/qemu-kvm).\u0027 line to the environment variables sections in the docstrings of both Python scripts.","commit_id":"1131895021fc7090804683f6f25e4011f4686160"}],"pci-sim/run_fake_pci_qemu_vfio_smoke.sh":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"07b719573f1e4638fdb4b93e9370b943b553eb70","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MODULE\u003d${MODULE:-./fake_pci_sriov.ko}"},{"line_number":30,"context_line":"MODULE_ARGS\u003d${MODULE_ARGS:-}"},{"line_number":31,"context_line":"if [ -z \"${QEMU_BIN:-}\" ]; then"},{"line_number":32,"context_line":"\tif command -v qemu-system-x86_64 \u003e/dev/null 2\u003e\u00261; then"},{"line_number":33,"context_line":"\t\tQEMU_BIN\u003dqemu-system-x86_64"},{"line_number":34,"context_line":"\telse"}],"source_content_type":"text/x-sh","patch_set":2,"id":"2f49b03e_43d3c6dc","line":31,"updated":"2026-07-03 11:48:13.000000000","message":"The QEMU_BIN auto-detection block is now copy-pasted identically into three shell scripts. Divergence is likely over time.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: A single sourced helper guarantees consistent detection logic and a single place to fix it (e.g. when adding a third distro path).\n\n**Recommendation**:\nExtract the detection into pci-sim/_qemu_bin.sh (or a tools/ helper) and source it from all three scripts. This keeps each script a thin entry point and removes roughly six lines of duplication per script.","commit_id":"8c082f51c36ee1921c9e720b94e316f5f3066c0d"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"07b719573f1e4638fdb4b93e9370b943b553eb70","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\tif command -v qemu-system-x86_64 \u003e/dev/null 2\u003e\u00261; then"},{"line_number":33,"context_line":"\t\tQEMU_BIN\u003dqemu-system-x86_64"},{"line_number":34,"context_line":"\telse"},{"line_number":35,"context_line":"\t\tQEMU_BIN\u003d/usr/libexec/qemu-kvm"},{"line_number":36,"context_line":"\tfi"},{"line_number":37,"context_line":"fi"},{"line_number":38,"context_line":"VENDOR\u003d${VENDOR:-0x1d55}"}],"source_content_type":"text/x-sh","patch_set":2,"id":"e40c3420_78095585","line":35,"updated":"2026-07-03 11:48:13.000000000","message":"Auto-detection sets QEMU_BIN to the hardcoded path /usr/libexec/qemu-kvm when qemu-system-x86_64 is absent, without verifying the fallback binary actually exists on the host.\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: Where neither binary exists, QEMU_BIN is silently set to a non-existent path. The failure surfaces later at the preflight check (line 84) or worse at the sudo call (line 127) as a confusing \u0027No such file\u0027 under sudo rather than a clear auto-detection error.\n\n**Priority**: Before merge\n**Why This Matters**: The whole point of the auto-detection is to give a usable QEMU path on RHEL/CentOS. A blind fallback to a path that may not exist defeats that for non-standard installs (e.g. qemu-kvm in /usr/bin) and produces an opaque late-stage failure during a smoke test run.\n\n**Recommendation**:\nAfter the else branch, verify the chosen path is executable before assigning it, e.g.: if [ -x /usr/libexec/qemu-kvm ]; then QEMU_BIN\u003d/usr/libexec/qemu-kvm; else die \u0027No QEMU binary found; set QEMU_BIN\u0027; fi. Apply the same guard consistently to all three scripts (run_fake_pci_qemu_vfio_smoke.sh, run_cirros_vfio_guest_probe.sh, run_cirros_vfio_userdata_echo.sh).","commit_id":"8c082f51c36ee1921c9e720b94e316f5f3066c0d"}]}
