)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb2c159d8decc397754bab870d63e37e746fe25d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2992ec45_d72fd559","updated":"2025-12-08 19:50:36.000000000","message":"This is obvioulsy missing testing, docs and a release note\nso i assume this is just a WIP patch not the final version.\n\nwhat is the upgrade plan for this functionality, i.e. how do you plan to handle the evolution fo the nvida-smi cli or the removal fo vfio-medev and the replacement of it with vfio-pci-core vendor variant drivers in newer kernels?\n\nmy understanding is that for future hardware and kernel NVIDIA vgpus will effectly be implemented using sr-iov where the VF is directly assigned to the guest without a VF on top. to make that work the libvirt xml need to have managed\u003dno to disable binding the VF to the standard vfio-pci driver\n\nas such to make this usable going forward we would need to change the atachment_handel_info to request that libvirt pass the vf with managed\u003dno or it can crash the host kernel if there are driver bugs.\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/2025.1/implemented/enable-vfio-devices-with-kernel-variant-drivers.html","commit_id":"2a5004824f49077dea2a7aa3a1f2b297564a1f17"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"8babbe0324dbf992d0bdd54363e9657caf9d86af","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"09022c61_e1719ef8","in_reply_to":"2992ec45_d72fd559","updated":"2025-12-09 01:41:01.000000000","message":"Hi sean-k-mooney, we have no plan to remove vfio-mdev for now.","commit_id":"2a5004824f49077dea2a7aa3a1f2b297564a1f17"}],"cyborg/accelerator/drivers/gpu/utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb2c159d8decc397754bab870d63e37e746fe25d","unresolved":true,"context_lines":[{"line_number":38,"context_line":"                              r\"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})].*\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nvidia\", \"102b\": \"matrox\"}"},{"line_number":41,"context_line":"PRODUCT_ID_MAPS \u003d {"},{"line_number":42,"context_line":"    \"1eb8\": \"Tesla T4-PCIE-16G\", \"15f7\": \"Tesla P100-PCIE-12GB\","},{"line_number":43,"context_line":"    \"1db6\": \"Tesla V100-PCIE-32GB\", \"20b5\": \"Tesla A100-PCIE-80G\","},{"line_number":44,"context_line":"    \"20b1\": \"Tesla A100-PCIE-40G\", \"20f1\": \"Tesla A100-PCIE-40G\"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"MIG_PROFILES \u003d {"},{"line_number":47,"context_line":"    \u002720b5\u0027: ["},{"line_number":48,"context_line":"        \u00277g.80gb*1\u0027,"},{"line_number":49,"context_line":"        \u00274g.40gb*1,2g.20gb*1,1g.10gb*1\u0027, \u00274g.40gb*1,1g.10gb*3\u0027,"},{"line_number":50,"context_line":"        \u00273g.40gb*2\u0027, \u00273g.40gb*1,2g.20gb*1,1g.10gb*1\u0027, \u00273g.40gb*1,1g.10gb*3\u0027,"},{"line_number":51,"context_line":"        \u00272g.20gb*3,1g.10gb*1\u0027, \u00272g.20gb*2,1g.10gb*3\u0027, \u00272g.20gb*1,1g.10gb*5\u0027,"},{"line_number":52,"context_line":"        \u00271g.10gb*7\u0027],"},{"line_number":53,"context_line":"    \u002720f1\u0027: ["},{"line_number":54,"context_line":"        \u00277g.40gb*1\u0027,"},{"line_number":55,"context_line":"        \u00274g.20gb*1,2g.10gb*1,1g.5gb*1\u0027, \u00274g.20gb*1,1g.5gb*3\u0027,"},{"line_number":56,"context_line":"        \u00273g.20gb*2\u0027, \u00273g.20gb*1,2g.10gb*1,1g.5gb*1\u0027, \u00273g.20gb*1,1g.5gb*3\u0027,"},{"line_number":57,"context_line":"        \u00272g.10gb*3,1g.5gb*1\u0027, \u00272g.10gb*2,1g.5gb*3\u0027, \u00272g.10gb*1,1g.5gb*5\u0027,"},{"line_number":58,"context_line":"        \u00271g.5gb*7\u0027]}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":62,"context_line":"def lspci_privileged():"},{"line_number":63,"context_line":"    cmd \u003d [\u0027lspci\u0027, \u0027-nnn\u0027, \u0027-D\u0027]"},{"line_number":64,"context_line":"    return processutils.execute(*cmd)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def _get_supported_vgpu_types(hostname):"},{"line_number":68,"context_line":"    \"\"\"Gets supported vgpu_types."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    Retrieves supported vgpu_types set by the operator and generates a"},{"line_number":71,"context_line":"    record of vgpu_type and pgpu in the dict constant: pgpu_type_mapping."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    Returns:"},{"line_number":74,"context_line":"        A list of all vgpu_types set in db."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":"    pgpu_type_mapping \u003d collections.defaultdict(str)"},{"line_number":77,"context_line":"    pgpu_type_mapping.clear()"},{"line_number":78,"context_line":"    admin_context \u003d context.get_admin_context()"},{"line_number":79,"context_line":"    devices \u003d agent_rpcapi.AgentAPI().get_devices(admin_context, hostname)"},{"line_number":80,"context_line":"    for device in devices:"},{"line_number":81,"context_line":"        if device.vendor_board_info \u003d\u003d \u0027miss_vb_info\u0027:"},{"line_number":82,"context_line":"            continue"},{"line_number":83,"context_line":"        vendor_board_info \u003d json.loads(device.vendor_board_info)"},{"line_number":84,"context_line":"        vgpu_type \u003d vendor_board_info.get(\u0027vgpu_type\u0027)"},{"line_number":85,"context_line":"        device_address \u003d vendor_board_info.get(\u0027device_address\u0027)"},{"line_number":86,"context_line":"        if vgpu_type and device_address:"},{"line_number":87,"context_line":"            pgpu_type_mapping[device_address] \u003d vgpu_type"},{"line_number":88,"context_line":"    return pgpu_type_mapping"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":92,"context_line":"def miglgi_privileged(device_address):"},{"line_number":93,"context_line":"    # +-------------------------------------------------------+"},{"line_number":94,"context_line":"    # | GPU instances:                                        |"},{"line_number":95,"context_line":"    # | GPU   Name             Profile  Instance   Placement  |"},{"line_number":96,"context_line":"    # |                          ID       ID       Start:Size |"},{"line_number":97,"context_line":"    # |\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d|"},{"line_number":98,"context_line":"    # |   0  MIG 1g.10gb         19       13          6:1     |"},{"line_number":99,"context_line":"    # +-------------------------------------------------------+"},{"line_number":100,"context_line":"    # |   0  MIG 2g.20gb         14        5          4:2     |"},{"line_number":101,"context_line":"    # +-------------------------------------------------------+"},{"line_number":102,"context_line":"    cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-lgi\u0027, \u0027-i\u0027, device_address]"},{"line_number":103,"context_line":"    return processutils.execute(*cmd)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":107,"context_line":"def miglgip_privileged(device_address):"},{"line_number":108,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":109,"context_line":"    # | GPU instance profiles:                                              |"},{"line_number":110,"context_line":"    # | GPU   Name       ID    Instances   Memory   P2P    SM    DEC   ENC  |"},{"line_number":111,"context_line":"    # |                        Free/Total   GiB            CE    JPEG  OFA  |"},{"line_number":112,"context_line":"    # |\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d|"},{"line_number":113,"context_line":"    # |0  MIG 1g.10gb    19     1/7        9.50     No     14     0     0   |"},{"line_number":114,"context_line":"    # |                                                     1     0     0   |"},{"line_number":115,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":116,"context_line":"    # |0  MIG 1g.10gb+me 20     1/1        9.50     No     14     1     0   |"},{"line_number":117,"context_line":"    # |                                                     1     1     1   |"},{"line_number":118,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":119,"context_line":"    # |0  MIG 2g.20gb    14     0/3        19.50    No     28     1     0   |"},{"line_number":120,"context_line":"    # |                                                     2     0     0   |"},{"line_number":121,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":122,"context_line":"    # |0  MIG 3g.40gb     9     0/2        39.50    No     42     2     0   |"},{"line_number":123,"context_line":"    # |                                                     3     0     0   |"},{"line_number":124,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":125,"context_line":"    # |0  MIG 4g.40gb     5     0/1        39.50    No     56     2     0   |"},{"line_number":126,"context_line":"    # |                                                     4     0     0   |"},{"line_number":127,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":128,"context_line":"    # |0  MIG 7g.80gb     0     0/1        79.25    No     98     5     0   |"},{"line_number":129,"context_line":"    # |                                                     7     1     1   |"},{"line_number":130,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":131,"context_line":"    cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-lgip\u0027, \u0027-i\u0027, device_address]"},{"line_number":132,"context_line":"    return processutils.execute(*cmd)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":136,"context_line":"def remove_mig(device_address):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ea082a8_a116cd51","line":133,"range":{"start_line":41,"start_character":0,"end_line":133,"end_character":1},"updated":"2025-12-08 19:50:36.000000000","message":"in general this seam like a non scalable approhc.\n\nif w ehave to updat the mappign for every nvida gpu the cybrog will be forever behind.\n\nthis approch also doe not seam to provdie a way to knwo which combiantion are possibel or what rescoues are provide by each mig type.\n\n\ni.e doe it prove encoders, compute engines ectra.","commit_id":"2a5004824f49077dea2a7aa3a1f2b297564a1f17"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"8babbe0324dbf992d0bdd54363e9657caf9d86af","unresolved":true,"context_lines":[{"line_number":38,"context_line":"                              r\"{4}):(?P\u003cproduct_id\u003e[0-9a-fA-F]{4})].*\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"VENDOR_MAPS \u003d {\"10de\": \"nvidia\", \"102b\": \"matrox\"}"},{"line_number":41,"context_line":"PRODUCT_ID_MAPS \u003d {"},{"line_number":42,"context_line":"    \"1eb8\": \"Tesla T4-PCIE-16G\", \"15f7\": \"Tesla P100-PCIE-12GB\","},{"line_number":43,"context_line":"    \"1db6\": \"Tesla V100-PCIE-32GB\", \"20b5\": \"Tesla A100-PCIE-80G\","},{"line_number":44,"context_line":"    \"20b1\": \"Tesla A100-PCIE-40G\", \"20f1\": \"Tesla A100-PCIE-40G\"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"MIG_PROFILES \u003d {"},{"line_number":47,"context_line":"    \u002720b5\u0027: ["},{"line_number":48,"context_line":"        \u00277g.80gb*1\u0027,"},{"line_number":49,"context_line":"        \u00274g.40gb*1,2g.20gb*1,1g.10gb*1\u0027, \u00274g.40gb*1,1g.10gb*3\u0027,"},{"line_number":50,"context_line":"        \u00273g.40gb*2\u0027, \u00273g.40gb*1,2g.20gb*1,1g.10gb*1\u0027, \u00273g.40gb*1,1g.10gb*3\u0027,"},{"line_number":51,"context_line":"        \u00272g.20gb*3,1g.10gb*1\u0027, \u00272g.20gb*2,1g.10gb*3\u0027, \u00272g.20gb*1,1g.10gb*5\u0027,"},{"line_number":52,"context_line":"        \u00271g.10gb*7\u0027],"},{"line_number":53,"context_line":"    \u002720f1\u0027: ["},{"line_number":54,"context_line":"        \u00277g.40gb*1\u0027,"},{"line_number":55,"context_line":"        \u00274g.20gb*1,2g.10gb*1,1g.5gb*1\u0027, \u00274g.20gb*1,1g.5gb*3\u0027,"},{"line_number":56,"context_line":"        \u00273g.20gb*2\u0027, \u00273g.20gb*1,2g.10gb*1,1g.5gb*1\u0027, \u00273g.20gb*1,1g.5gb*3\u0027,"},{"line_number":57,"context_line":"        \u00272g.10gb*3,1g.5gb*1\u0027, \u00272g.10gb*2,1g.5gb*3\u0027, \u00272g.10gb*1,1g.5gb*5\u0027,"},{"line_number":58,"context_line":"        \u00271g.5gb*7\u0027]}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":62,"context_line":"def lspci_privileged():"},{"line_number":63,"context_line":"    cmd \u003d [\u0027lspci\u0027, \u0027-nnn\u0027, \u0027-D\u0027]"},{"line_number":64,"context_line":"    return processutils.execute(*cmd)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def _get_supported_vgpu_types(hostname):"},{"line_number":68,"context_line":"    \"\"\"Gets supported vgpu_types."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    Retrieves supported vgpu_types set by the operator and generates a"},{"line_number":71,"context_line":"    record of vgpu_type and pgpu in the dict constant: pgpu_type_mapping."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    Returns:"},{"line_number":74,"context_line":"        A list of all vgpu_types set in db."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":"    pgpu_type_mapping \u003d collections.defaultdict(str)"},{"line_number":77,"context_line":"    pgpu_type_mapping.clear()"},{"line_number":78,"context_line":"    admin_context \u003d context.get_admin_context()"},{"line_number":79,"context_line":"    devices \u003d agent_rpcapi.AgentAPI().get_devices(admin_context, hostname)"},{"line_number":80,"context_line":"    for device in devices:"},{"line_number":81,"context_line":"        if device.vendor_board_info \u003d\u003d \u0027miss_vb_info\u0027:"},{"line_number":82,"context_line":"            continue"},{"line_number":83,"context_line":"        vendor_board_info \u003d json.loads(device.vendor_board_info)"},{"line_number":84,"context_line":"        vgpu_type \u003d vendor_board_info.get(\u0027vgpu_type\u0027)"},{"line_number":85,"context_line":"        device_address \u003d vendor_board_info.get(\u0027device_address\u0027)"},{"line_number":86,"context_line":"        if vgpu_type and device_address:"},{"line_number":87,"context_line":"            pgpu_type_mapping[device_address] \u003d vgpu_type"},{"line_number":88,"context_line":"    return pgpu_type_mapping"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":92,"context_line":"def miglgi_privileged(device_address):"},{"line_number":93,"context_line":"    # +-------------------------------------------------------+"},{"line_number":94,"context_line":"    # | GPU instances:                                        |"},{"line_number":95,"context_line":"    # | GPU   Name             Profile  Instance   Placement  |"},{"line_number":96,"context_line":"    # |                          ID       ID       Start:Size |"},{"line_number":97,"context_line":"    # |\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d|"},{"line_number":98,"context_line":"    # |   0  MIG 1g.10gb         19       13          6:1     |"},{"line_number":99,"context_line":"    # +-------------------------------------------------------+"},{"line_number":100,"context_line":"    # |   0  MIG 2g.20gb         14        5          4:2     |"},{"line_number":101,"context_line":"    # +-------------------------------------------------------+"},{"line_number":102,"context_line":"    cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-lgi\u0027, \u0027-i\u0027, device_address]"},{"line_number":103,"context_line":"    return processutils.execute(*cmd)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":107,"context_line":"def miglgip_privileged(device_address):"},{"line_number":108,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":109,"context_line":"    # | GPU instance profiles:                                              |"},{"line_number":110,"context_line":"    # | GPU   Name       ID    Instances   Memory   P2P    SM    DEC   ENC  |"},{"line_number":111,"context_line":"    # |                        Free/Total   GiB            CE    JPEG  OFA  |"},{"line_number":112,"context_line":"    # |\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d|"},{"line_number":113,"context_line":"    # |0  MIG 1g.10gb    19     1/7        9.50     No     14     0     0   |"},{"line_number":114,"context_line":"    # |                                                     1     0     0   |"},{"line_number":115,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":116,"context_line":"    # |0  MIG 1g.10gb+me 20     1/1        9.50     No     14     1     0   |"},{"line_number":117,"context_line":"    # |                                                     1     1     1   |"},{"line_number":118,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":119,"context_line":"    # |0  MIG 2g.20gb    14     0/3        19.50    No     28     1     0   |"},{"line_number":120,"context_line":"    # |                                                     2     0     0   |"},{"line_number":121,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":122,"context_line":"    # |0  MIG 3g.40gb     9     0/2        39.50    No     42     2     0   |"},{"line_number":123,"context_line":"    # |                                                     3     0     0   |"},{"line_number":124,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":125,"context_line":"    # |0  MIG 4g.40gb     5     0/1        39.50    No     56     2     0   |"},{"line_number":126,"context_line":"    # |                                                     4     0     0   |"},{"line_number":127,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":128,"context_line":"    # |0  MIG 7g.80gb     0     0/1        79.25    No     98     5     0   |"},{"line_number":129,"context_line":"    # |                                                     7     1     1   |"},{"line_number":130,"context_line":"    # +---------------------------------------------------------------------+"},{"line_number":131,"context_line":"    cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-lgip\u0027, \u0027-i\u0027, device_address]"},{"line_number":132,"context_line":"    return processutils.execute(*cmd)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":136,"context_line":"def remove_mig(device_address):"}],"source_content_type":"text/x-python","patch_set":6,"id":"40032622_4137e304","line":133,"range":{"start_line":41,"start_character":0,"end_line":133,"end_character":1},"in_reply_to":"7ea082a8_a116cd51","updated":"2025-12-09 01:41:01.000000000","message":"yeah, this is non scalable. If we want to adapt a new card, we have to change this code segment, it would be a better approach to put these settings in database later on.","commit_id":"2a5004824f49077dea2a7aa3a1f2b297564a1f17"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb2c159d8decc397754bab870d63e37e746fe25d","unresolved":true,"context_lines":[{"line_number":132,"context_line":"    return processutils.execute(*cmd)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":136,"context_line":"def remove_mig(device_address):"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        cmd \u003d \"nvidia-smi mig -lgi -i %(da)s| grep MIG | awk \u0027{print $6}\u0027\" \\"},{"line_number":139,"context_line":"              \"| xargs -i nvidia-smi mig -i %(da)s -dci -gi {}\" % \\"},{"line_number":140,"context_line":"              {\u0027da\u0027: device_address}"},{"line_number":141,"context_line":"        p \u003d subprocess.Popen("},{"line_number":142,"context_line":"            cmd,"},{"line_number":143,"context_line":"            shell\u003dTrue, stdout\u003dsubprocess.PIPE,"},{"line_number":144,"context_line":"            stderr\u003dsubprocess.PIPE)"},{"line_number":145,"context_line":"        p.communicate()"},{"line_number":146,"context_line":"        cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-i\u0027, device_address, \u0027-dgi\u0027]"},{"line_number":147,"context_line":"        processutils.execute(*cmd)"},{"line_number":148,"context_line":"    except Exception as e:"},{"line_number":149,"context_line":"        LOG.error(e)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":153,"context_line":"def create_mig(device_address, vgpu_mig):"},{"line_number":154,"context_line":"    migs \u003d vgpu_mig.split(\u0027,\u0027)"},{"line_number":155,"context_line":"    for mig in migs:"},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            profile \u003d mig.split(\u0027*\u0027)[0]"},{"line_number":158,"context_line":"            number \u003d mig.split(\u0027*\u0027)[1]"},{"line_number":159,"context_line":"            mig_profile \u003d (profile + \u0027,\u0027) * int(number)"},{"line_number":160,"context_line":"            cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-i\u0027, device_address,"},{"line_number":161,"context_line":"                   \u0027-cgi\u0027, mig_profile, \u0027-C\u0027]"},{"line_number":162,"context_line":"            processutils.execute(*cmd)"},{"line_number":163,"context_line":"        except Exception as e:"},{"line_number":164,"context_line":"            LOG.error(e)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":168,"context_line":"def create_mdev_privileged(pci_addr, mdev_type, ah_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"a42d9ecb_2e9b89dc","line":165,"range":{"start_line":135,"start_character":1,"end_line":165,"end_character":1},"updated":"2025-12-08 19:50:36.000000000","message":"in older generations it was not possibel to allcoate or modify the MIG configuration if there is an instance using one fo the mig instnaces either at all or without impacting the execution of the ohter MIG instnaces.\n\nhas that been resovled? i.e. is it possible to add or remove a MIG instance without impacting the functionaltiy of exsting mig isntances?\nif not how are you planning to prevent reconfiguration of mig devices at the api level?","commit_id":"2a5004824f49077dea2a7aa3a1f2b297564a1f17"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"8babbe0324dbf992d0bdd54363e9657caf9d86af","unresolved":true,"context_lines":[{"line_number":132,"context_line":"    return processutils.execute(*cmd)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":136,"context_line":"def remove_mig(device_address):"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        cmd \u003d \"nvidia-smi mig -lgi -i %(da)s| grep MIG | awk \u0027{print $6}\u0027\" \\"},{"line_number":139,"context_line":"              \"| xargs -i nvidia-smi mig -i %(da)s -dci -gi {}\" % \\"},{"line_number":140,"context_line":"              {\u0027da\u0027: device_address}"},{"line_number":141,"context_line":"        p \u003d subprocess.Popen("},{"line_number":142,"context_line":"            cmd,"},{"line_number":143,"context_line":"            shell\u003dTrue, stdout\u003dsubprocess.PIPE,"},{"line_number":144,"context_line":"            stderr\u003dsubprocess.PIPE)"},{"line_number":145,"context_line":"        p.communicate()"},{"line_number":146,"context_line":"        cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-i\u0027, device_address, \u0027-dgi\u0027]"},{"line_number":147,"context_line":"        processutils.execute(*cmd)"},{"line_number":148,"context_line":"    except Exception as e:"},{"line_number":149,"context_line":"        LOG.error(e)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":153,"context_line":"def create_mig(device_address, vgpu_mig):"},{"line_number":154,"context_line":"    migs \u003d vgpu_mig.split(\u0027,\u0027)"},{"line_number":155,"context_line":"    for mig in migs:"},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            profile \u003d mig.split(\u0027*\u0027)[0]"},{"line_number":158,"context_line":"            number \u003d mig.split(\u0027*\u0027)[1]"},{"line_number":159,"context_line":"            mig_profile \u003d (profile + \u0027,\u0027) * int(number)"},{"line_number":160,"context_line":"            cmd \u003d [\u0027nvidia-smi\u0027, \u0027mig\u0027, \u0027-i\u0027, device_address,"},{"line_number":161,"context_line":"                   \u0027-cgi\u0027, mig_profile, \u0027-C\u0027]"},{"line_number":162,"context_line":"            processutils.execute(*cmd)"},{"line_number":163,"context_line":"        except Exception as e:"},{"line_number":164,"context_line":"            LOG.error(e)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"@cyborg.privsep.sys_admin_pctxt.entrypoint"},{"line_number":168,"context_line":"def create_mdev_privileged(pci_addr, mdev_type, ah_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"65150fb7_f921e89c","line":165,"range":{"start_line":135,"start_character":1,"end_line":165,"end_character":1},"in_reply_to":"a42d9ecb_2e9b89dc","updated":"2025-12-09 01:41:01.000000000","message":"yeah, in our product, we prevent reconfiguration at the api level.","commit_id":"2a5004824f49077dea2a7aa3a1f2b297564a1f17"}]}
