)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"3d7c35f424ac74584cbd43183d06f7163dc6b09d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"574e94b9_643b3a9a","updated":"2026-03-27 13:57:40.000000000","message":"Please provide an upgrade impact as a reflection of the nova spec for the cyborg side. Also both specs need to be aligned on the minimum versions required on both sides for the MDEV feature","commit_id":"83d129f572c88d150505b11a585426e61ce8d578"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"e6480cc449e62d3196c18dffc7c55e25135626a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c59ca531_01345f55","updated":"2026-03-27 13:44:54.000000000","message":"The spec is missing any acknowledgment that Nova might perform the mdev creation itself","commit_id":"83d129f572c88d150505b11a585426e61ce8d578"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"2c36f17172cc8b61e5ef7f4ce0351f51d9643859","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"51cf4551_fa86142b","updated":"2026-04-20 09:58:48.000000000","message":"(1) There is no **Upgrade impact** section. Given the Nova cross-project dependency [1], please add one: minimum Nova (and Cyborg) versions for end-to-end MDEV ARQ support, behavior when only one side is upgraded, and how this interacts with Nova\u0027s OWNER_NOVA / native vGPU vs Cyborg-managed paths from the companion nova-spec.\n\n(2) Consider adding the same **sample ARQ / attach_handle** JSON the Nova spec documents so the contract is explicit from both directions (MDEV type, parent BDF fields, etc.).\n\n(3) The problem statement says the driver can \"discover and manage\" mdev-capable devices while the proposed change delegates mdev **create/delete** to Nova — tightening wording avoids readers assuming Cyborg performs host mdev lifecycle.","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"5d185126cd0a910b80e82f9fedbab0a7be9cfd2d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"364b7480_debc8bf5","in_reply_to":"51cf4551_fa86142b","updated":"2026-05-15 11:06:01.000000000","message":"(1) thanks I missed that section. I\u0027ve added it now\n\n(2) done, I\u0027ve added the attach_handle example from the nova spec here for clarity.\n\n(3) I\u0027ve removed from the spec any wording that might suggest that cyborg will create mdevs","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"}],"specs/2026.2/approved/generic-mdev-driver.rst":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"e6480cc449e62d3196c18dffc7c55e25135626a9","unresolved":true,"context_lines":[{"line_number":61,"context_line":"module instead of carrying its own implementation. The"},{"line_number":62,"context_line":"GPU driver will retain all NVIDIA-specific logic such as vendor name"},{"line_number":63,"context_line":"parsing, trait generation, and vGPU type configuration mapping. The"},{"line_number":64,"context_line":"agent manager\u0027s ``create_vgpu_mdev`` and ``remove_vgpu_mdev``"},{"line_number":65,"context_line":"methods will be updated to delegate to the shared module."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Configuration will be provided through a new ``[mdev]`` section in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"86382abe_ea6e34ae","line":64,"updated":"2026-03-27 13:44:54.000000000","message":"Based on the Nova spec [0] related to this work, Nova would be responsible for creating/deleting the mdev, not Cuborg.\n\n[0] https://review.opendev.org/c/openstack/nova-specs/+/967515","commit_id":"83d129f572c88d150505b11a585426e61ce8d578"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"ba370a096e9eddcb5a729b4532dc8a641f932a32","unresolved":false,"context_lines":[{"line_number":61,"context_line":"module instead of carrying its own implementation. The"},{"line_number":62,"context_line":"GPU driver will retain all NVIDIA-specific logic such as vendor name"},{"line_number":63,"context_line":"parsing, trait generation, and vGPU type configuration mapping. The"},{"line_number":64,"context_line":"agent manager\u0027s ``create_vgpu_mdev`` and ``remove_vgpu_mdev``"},{"line_number":65,"context_line":"methods will be updated to delegate to the shared module."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Configuration will be provided through a new ``[mdev]`` section in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1cf5380e_36bd843e","line":64,"in_reply_to":"40bedbcb_905e3cea","updated":"2026-05-11 10:40:54.000000000","message":"Done","commit_id":"83d129f572c88d150505b11a585426e61ce8d578"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"36e31d1af35491b81241607342dcae11b401f5ef","unresolved":true,"context_lines":[{"line_number":61,"context_line":"module instead of carrying its own implementation. The"},{"line_number":62,"context_line":"GPU driver will retain all NVIDIA-specific logic such as vendor name"},{"line_number":63,"context_line":"parsing, trait generation, and vGPU type configuration mapping. The"},{"line_number":64,"context_line":"agent manager\u0027s ``create_vgpu_mdev`` and ``remove_vgpu_mdev``"},{"line_number":65,"context_line":"methods will be updated to delegate to the shared module."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Configuration will be provided through a new ``[mdev]`` section in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"40bedbcb_905e3cea","line":64,"in_reply_to":"86382abe_ea6e34ae","updated":"2026-04-13 16:43:15.000000000","message":"that is correct and I had misunderstood it, thanks for pointing it out, I\u0027ve clarified in the spec that mdev creation/deletion would be delegated to Nova and it will not be part of this work in Cyborg.","commit_id":"83d129f572c88d150505b11a585426e61ce8d578"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"2c36f17172cc8b61e5ef7f4ce0351f51d9643859","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Cyborg currently supports mediated devices (mdev) only through the"},{"line_number":18,"context_line":"NVIDIA GPU driver, where mdev functionality is tightly coupled to"},{"line_number":19,"context_line":"GPU-specific code. This spec proposes a standalone, generic mdev driver"},{"line_number":20,"context_line":"that can discover and manage any Linux kernel mdev-capable device,"},{"line_number":21,"context_line":"along with a shared mdev utilities module that eliminates code"},{"line_number":22,"context_line":"duplication between the new driver and the existing GPU driver."}],"source_content_type":"text/x-rst","patch_set":3,"id":"e7e842b9_36487afa","line":19,"updated":"2026-04-20 09:58:48.000000000","message":"Minor wording: \"manage\" here can read like Cyborg performs host mdev create/delete. Consider \"discover and report\" (or similar) to align with the later \"delegate creation/deletion to Nova\" statement.","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"ba370a096e9eddcb5a729b4532dc8a641f932a32","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Cyborg currently supports mediated devices (mdev) only through the"},{"line_number":18,"context_line":"NVIDIA GPU driver, where mdev functionality is tightly coupled to"},{"line_number":19,"context_line":"GPU-specific code. This spec proposes a standalone, generic mdev driver"},{"line_number":20,"context_line":"that can discover and manage any Linux kernel mdev-capable device,"},{"line_number":21,"context_line":"along with a shared mdev utilities module that eliminates code"},{"line_number":22,"context_line":"duplication between the new driver and the existing GPU driver."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5eb7b02e_9d76269a","line":19,"in_reply_to":"e7e842b9_36487afa","updated":"2026-05-11 10:40:54.000000000","message":"Done","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"2c36f17172cc8b61e5ef7f4ce0351f51d9643859","unresolved":true,"context_lines":[{"line_number":80,"context_line":"driver will report. The new driver will be enabled via the"},{"line_number":81,"context_line":"existing ``[agent]enabled_drivers`` option."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Operators must not enable both the generic mdev driver and a"},{"line_number":84,"context_line":"vendor-specific driver (e.g., the NVIDIA GPU driver) for the same"},{"line_number":85,"context_line":"parent device; doing so would cause duplicate resource reporting to"},{"line_number":86,"context_line":"Placement. The ``enabled_parent_devices`` and ``enabled_mdev_types``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"828e2581_12513b13","line":83,"updated":"2026-04-20 09:58:48.000000000","message":"It may help to spell out how misconfiguration surfaces (duplicate RPs / over-allocation), and whether any automated guard or doc-only mitigation is planned beyond config filters.","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"5d185126cd0a910b80e82f9fedbab0a7be9cfd2d","unresolved":true,"context_lines":[{"line_number":80,"context_line":"driver will report. The new driver will be enabled via the"},{"line_number":81,"context_line":"existing ``[agent]enabled_drivers`` option."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Operators must not enable both the generic mdev driver and a"},{"line_number":84,"context_line":"vendor-specific driver (e.g., the NVIDIA GPU driver) for the same"},{"line_number":85,"context_line":"parent device; doing so would cause duplicate resource reporting to"},{"line_number":86,"context_line":"Placement. The ``enabled_parent_devices`` and ``enabled_mdev_types``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"06ec2820_460383d4","line":83,"in_reply_to":"828e2581_12513b13","updated":"2026-05-15 11:06:01.000000000","message":"actually, after further investigation I don\u0027t think it would lead to duplicate reporting. Before adding newly discovered devices, the conductor creates a set of the controlpath ids of the reported devices (https://github.com/openstack/cyborg/blob/186cdd2b76aff57233660042f71761383285e5e8/cyborg/conductor/manager.py#L156-L171) so it would not report the same device twice, but it would report the device info discovered by whichever driver is configured first. I\u0027ve changed the spec to propose adding an explicit check for duplicated devices and warn the operator of the duplication","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"2c36f17172cc8b61e5ef7f4ce0351f51d9643859","unresolved":true,"context_lines":[{"line_number":204,"context_line":"* Add new configuration options for the generic mdev driver and"},{"line_number":205,"context_line":"  register the driver entry point."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"* Refactor the existing GPU driver to use the shared mdev utilities"},{"line_number":208,"context_line":"  module for mdev discovery and type introspection. Update the agent manager"},{"line_number":209,"context_line":"  and existing GPU driver tests."},{"line_number":210,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"394d289a_1a14d666","line":207,"updated":"2026-04-20 09:58:48.000000000","message":"GPU driver refactor is high risk: please add concrete validation criteria (which tests must pass, functional parity definition for discovery/inventory vs pre-refactor, and whether integration coverage exercises the shared utils path).","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"5d185126cd0a910b80e82f9fedbab0a7be9cfd2d","unresolved":true,"context_lines":[{"line_number":204,"context_line":"* Add new configuration options for the generic mdev driver and"},{"line_number":205,"context_line":"  register the driver entry point."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"* Refactor the existing GPU driver to use the shared mdev utilities"},{"line_number":208,"context_line":"  module for mdev discovery and type introspection. Update the agent manager"},{"line_number":209,"context_line":"  and existing GPU driver tests."},{"line_number":210,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"43fd4a45_7fd18091","line":207,"in_reply_to":"394d289a_1a14d666","updated":"2026-05-15 11:06:01.000000000","message":"I\u0027ve added addinational information about the testing of the NVIDIA driver refactor","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"2c36f17172cc8b61e5ef7f4ce0351f51d9643859","unresolved":true,"context_lines":[{"line_number":221,"context_line":"Testing"},{"line_number":222,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Unit tests will be added for all new code."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Tempest tests will be added leveraging the mdev sample drivers optionally"},{"line_number":227,"context_line":"included in Nova\u0027s devstack plugin. They will allow creating mtty and mdpy"}],"source_content_type":"text/x-rst","patch_set":3,"id":"221ac11c_e23f0ac3","line":224,"updated":"2026-04-20 09:58:48.000000000","message":"Testing would be stronger with 3–5 explicit Tempest scenarios (e.g. mtty/mdpy discovery, PCI filter, mdev type filter, Placement inventory shape, ARQ bind path with Nova).","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"5d185126cd0a910b80e82f9fedbab0a7be9cfd2d","unresolved":true,"context_lines":[{"line_number":221,"context_line":"Testing"},{"line_number":222,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Unit tests will be added for all new code."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Tempest tests will be added leveraging the mdev sample drivers optionally"},{"line_number":227,"context_line":"included in Nova\u0027s devstack plugin. They will allow creating mtty and mdpy"}],"source_content_type":"text/x-rst","patch_set":3,"id":"13e56193_a72c0357","line":224,"in_reply_to":"221ac11c_e23f0ac3","updated":"2026-05-15 11:06:01.000000000","message":"I think that all of this can be tested in the same tempest scenario. In particular, I\u0027m not sure if we could test the PCI and mdev type filters in tempest, since that would require changing the cyborg configuration, I would need to do further research on that. I\u0027ve expanded the testing section to add a bit more detail","commit_id":"a7b6f6e522144bbea025ba6e7f8717f17b62c4e3"}]}
