)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a1af916d426ed32a5c4d51226297489bbc9ecb35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"33cc13f1_439c6f66","updated":"2025-12-04 15:40:43.000000000","message":"recheck","commit_id":"a13172261c08836050893fcd36fcbcc640e65688"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"45723473_09047221","updated":"2026-01-17 17:21:44.000000000","message":"Couple of things inline","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8994373b30194f034727395044c130c07159cf53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"b493ed04_c4983509","updated":"2026-01-19 02:30:25.000000000","message":"recheck let\u0027s see if the failure in -multi-cell job appears consistently.","commit_id":"9d0c053ae4d78b39c4c7d099863a2c039cb2fad4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"92515a701b3ef9ddb4b3071836c4d25f096716ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"e3a21131_12ee6ccc","updated":"2026-01-20 14:04:14.000000000","message":"recheck at least post failure is irrelevant","commit_id":"1f0bbb98118e2e07c2d3447b25809aa8b7d86972"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9d1a5a08dd64893eef7518a79f37aa63528e5fbf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"c62ccdbb_40d6ad9a","updated":"2026-02-03 14:51:19.000000000","message":"Overall, this patch looks good to me.\nI’ve verified the test cases. I initially wondered why live migration wasn’t covered, but the notes clarify that it’s handled in a different code path.\nI struggled a bit with the SMM flag at first, then realized it was coming from the base properties testing.\nI only found a couple of minor nits; nothing on my side that would block this patch from being merged.","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6424ed2092f6c1e8c75fe512090ed30e6bb180c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"1f41a10b_9e7c7144","updated":"2026-02-23 17:51:01.000000000","message":"Chartreuse green as +1, a bit mixed of solid green and yellow, I\u0027m torn validating your patch due to the unrelated mdev code change. I\u0027m relunctant tho to hold the series so close to the FeatureFreeze, so I\u0027m cool with shipping it as it is if you don\u0027t want to respin a new patch, for sure.","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d6dfc34baa590299f5b01fae878227346a265a13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"4710c83f_644e3298","updated":"2026-02-23 14:40:44.000000000","message":"Still +1, I think we can go ahead with this series.","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a80f7d471220bff8c31f1e622d3832f46ad73721","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"233d97a6_e50262e9","updated":"2026-02-24 17:27:35.000000000","message":"Looks good","commit_id":"5841095740fb4e8c5a61e8f7673aa9478f4c3953"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"be5c0bb583c012f0930d3775e5b48afee2b32b2d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"ad5b4b0a_c2fe4ce0","updated":"2026-02-25 15:40:10.000000000","message":"thanks !","commit_id":"5841095740fb4e8c5a61e8f7673aa9478f4c3953"}],"nova/tests/functional/libvirt/test_uefi.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"77cc800b_753fdb3d","updated":"2026-01-17 17:21:44.000000000","message":"Can we have some test coverage showing\n* hard reboot keeping the old loader when the old Guest definition is available\n* hard reboot is falling back to autoselect when the old Geust definition is not avilable\n* cold resize / rebuild trigger the autoselect \n* live migration keeps the old loader\n\n\n// later \n\nI saw the unit test coverage that mostly covers the cases as hard reboot / rebuild is going through the common get_guest_xml codepath of the driver. But I think live migration does not go through that codepath. Am I correct?","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9566fddc18580f4fef1db643c0480ea6ffebd8f1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"75922bf8_1bbfe16c","in_reply_to":"116953da_a79fbbea","updated":"2026-02-03 14:54:36.000000000","message":"To my mind it is acceptable to not add tests for live migration because it is untouched.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a2c4cf6f47dd2bffa6d92ab140dfb8f940840047","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"116953da_a79fbbea","in_reply_to":"6d23d86d_c2a627c1","updated":"2026-01-19 13:21:48.000000000","message":"I added a few test scenarios to verify hard reboot (keeping or not keeping existing firmware selection), resize and reboot.\n\nTechnically I can add live migration but as I mentioned above it does not create get_guest_xml code path but it loads bare xml loaded from libvirt (and add some modification in specific code [1]. Because this change does not touch that part I\u0027m wondering if we can skip adding tests for that scenario.\n\n[1] https://github.com/openstack/nova/blob/66bad0b1d9f9a1136482ee4b658d69ebc9d4e428/nova/virt/libvirt/migration.py#L54","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a80f7d471220bff8c31f1e622d3832f46ad73721","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"91e13f75_75c84795","in_reply_to":"75922bf8_1bbfe16c","updated":"2026-02-24 17:27:35.000000000","message":"thanks for the explanation. Fine by me.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"41f0b52f74609a5a2988f00cc229019bba3c2b73","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"6d23d86d_c2a627c1","in_reply_to":"77cc800b_753fdb3d","updated":"2026-01-18 11:15:35.000000000","message":"I\u0027ll check if I can implement these.\n\n\u003e But I think live migration does not go through that codepath. Am I correct?\n\nYes. Live migration goes through a different path. It loads existing xml from libvirt and modify block devices and network interfaces according to the resources at destination and does not use get_guest_xml .","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9d1a5a08dd64893eef7518a79f37aa63528e5fbf","unresolved":false,"context_lines":[{"line_number":6293,"context_line":"        self.assertIsNone(cfg.os_nvram_template)"},{"line_number":6294,"context_line":"        self.assertNotIn(vconfig.LibvirtConfigGuestFeatureSMM(), cfg.features)"},{"line_number":6295,"context_line":""},{"line_number":6296,"context_line":"    @ddt.data(True, False)"},{"line_number":6297,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.os.path.exists\u0027)"},{"line_number":6298,"context_line":"    def test_get_guest_config_with_secure_boot_old_guest("},{"line_number":6299,"context_line":"            self, mock_exists, smm):"}],"source_content_type":"text/x-python","patch_set":19,"id":"045c0f4b_9c656549","line":6296,"range":{"start_line":6296,"start_character":4,"end_line":6296,"end_character":26},"updated":"2026-02-03 14:51:19.000000000","message":"Note for myself: Ok this is for checking smm.","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":true,"context_lines":[{"line_number":7068,"context_line":"            LOG.warning(\u0027Secure boot support was changed \u0027"},{"line_number":7069,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7070,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7071,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7072,"context_line":"            # be added to guest.start if hard_reboot is updated and"},{"line_number":7073,"context_line":"            # keeps NVRAM file."},{"line_number":7074,"context_line":"        elif loader and not os.path.exists(loader):"}],"source_content_type":"text/x-python","patch_set":12,"id":"5621678e_cc85a8df","line":7071,"range":{"start_line":7071,"start_character":12,"end_line":7071,"end_character":29},"updated":"2026-01-17 17:21:44.000000000","message":"I\u0027m OK to do that as a separate commit. Am I correct that keeping the NVRAM without reset is not worse than before? So we are not regressing anything here, just realizing that we have this extra \"bug\" to fix anyhow.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e6b8ece116933f737984365965488b0ae53161d","unresolved":false,"context_lines":[{"line_number":7068,"context_line":"            LOG.warning(\u0027Secure boot support was changed \u0027"},{"line_number":7069,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7070,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7071,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7072,"context_line":"            # be added to guest.start if hard_reboot is updated and"},{"line_number":7073,"context_line":"            # keeps NVRAM file."},{"line_number":7074,"context_line":"        elif loader and not os.path.exists(loader):"}],"source_content_type":"text/x-python","patch_set":12,"id":"13707290_1183cb14","line":7071,"range":{"start_line":7071,"start_character":12,"end_line":7071,"end_character":29},"in_reply_to":"24f7f749_6168e1d9","updated":"2026-01-19 12:38:38.000000000","message":"OK. Cool.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0e6c84a5529214929cdb712f5648ebc9c0fa6845","unresolved":true,"context_lines":[{"line_number":7068,"context_line":"            LOG.warning(\u0027Secure boot support was changed \u0027"},{"line_number":7069,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7070,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7071,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7072,"context_line":"            # be added to guest.start if hard_reboot is updated and"},{"line_number":7073,"context_line":"            # keeps NVRAM file."},{"line_number":7074,"context_line":"        elif loader and not os.path.exists(loader):"}],"source_content_type":"text/x-python","patch_set":12,"id":"24f7f749_6168e1d9","line":7071,"range":{"start_line":7071,"start_character":12,"end_line":7071,"end_character":29},"in_reply_to":"5621678e_cc85a8df","updated":"2026-01-18 11:10:57.000000000","message":"This change itself does not cause any additional problem, because NVRAM file is always re-generated during hard-reboot and this change does not change that behavior.\n\nHowever if we change that behavior then we should implement force reset logic here because NVRAM file contains data to controller secure flag feature enablement.\n(That\u0027s more related to the NVRAM preserve change implemented and discussed separately.)","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":true,"context_lines":[{"line_number":7069,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7070,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7071,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7072,"context_line":"            # be added to guest.start if hard_reboot is updated and"},{"line_number":7073,"context_line":"            # keeps NVRAM file."},{"line_number":7074,"context_line":"        elif loader and not os.path.exists(loader):"},{"line_number":7075,"context_line":"            # NOTE(tkajinam): Loader does not exist in this host"},{"line_number":7076,"context_line":"            LOG.debug(\u0027The previous loader file %s does not \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"a4f7d9ab_7b557337","line":7073,"range":{"start_line":7072,"start_character":38,"end_line":7073,"end_character":31},"updated":"2026-01-17 17:21:44.000000000","message":"Do you mean if hard_reboot is updated the loader?","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e6b8ece116933f737984365965488b0ae53161d","unresolved":false,"context_lines":[{"line_number":7069,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7070,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7071,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7072,"context_line":"            # be added to guest.start if hard_reboot is updated and"},{"line_number":7073,"context_line":"            # keeps NVRAM file."},{"line_number":7074,"context_line":"        elif loader and not os.path.exists(loader):"},{"line_number":7075,"context_line":"            # NOTE(tkajinam): Loader does not exist in this host"},{"line_number":7076,"context_line":"            LOG.debug(\u0027The previous loader file %s does not \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"0770f2f4_9f604765","line":7073,"range":{"start_line":7072,"start_character":38,"end_line":7073,"end_character":31},"in_reply_to":"22e2f452_4a78404f","updated":"2026-01-19 12:38:38.000000000","message":"Ahh I understand it now, your previous respons pointing to the NVRAM preserve change was the missing piece. Thanks.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0e6c84a5529214929cdb712f5648ebc9c0fa6845","unresolved":true,"context_lines":[{"line_number":7069,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7070,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7071,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7072,"context_line":"            # be added to guest.start if hard_reboot is updated and"},{"line_number":7073,"context_line":"            # keeps NVRAM file."},{"line_number":7074,"context_line":"        elif loader and not os.path.exists(loader):"},{"line_number":7075,"context_line":"            # NOTE(tkajinam): Loader does not exist in this host"},{"line_number":7076,"context_line":"            LOG.debug(\u0027The previous loader file %s does not \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"22e2f452_4a78404f","line":7073,"range":{"start_line":7072,"start_character":38,"end_line":7073,"end_character":31},"in_reply_to":"a4f7d9ab_7b557337","updated":"2026-01-18 11:10:57.000000000","message":"I meant \"head_reboot method is modified so that it keeps NVRAM file.\" I\u0027ve updated the commit accordingly. I hope that makes the intention clear.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":false,"context_lines":[{"line_number":7075,"context_line":"            # NOTE(tkajinam): Loader does not exist in this host"},{"line_number":7076,"context_line":"            LOG.debug(\u0027The previous loader file %s does not \u0027"},{"line_number":7077,"context_line":"                      \u0027exist. Force re-selection of firmware.\u0027,"},{"line_number":7078,"context_line":"                      loader)"},{"line_number":7079,"context_line":"        elif nvram_template and not os.path.exists(nvram_template):"},{"line_number":7080,"context_line":"            LOG.debug(\u0027The previous nvram template file %s does \u0027"},{"line_number":7081,"context_line":"                      \u0027not exist. Force re-selection of firmware.\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"03496183_3e5d8c74","line":7078,"updated":"2026-01-17 17:21:44.000000000","message":"++","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":true,"context_lines":[{"line_number":7089,"context_line":"            guest.os_loader_readonly \u003d \\"},{"line_number":7090,"context_line":"                old_guest.os_loader_readonly"},{"line_number":7091,"context_line":"            guest.os_nvram \u003d old_guest.os_nvram"},{"line_number":7092,"context_line":"            guest.os_nvram_template \u003d old_guest.os_nvram_template"},{"line_number":7093,"context_line":""},{"line_number":7094,"context_line":"            # if the feature set says we need SMM then enable it"},{"line_number":7095,"context_line":"            for f in old_guest.features:"}],"source_content_type":"text/x-python","patch_set":12,"id":"460f744a_5508e14c","line":7092,"updated":"2026-01-17 17:21:44.000000000","message":"Do we need to copy statlessnes here as well?","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0e6c84a5529214929cdb712f5648ebc9c0fa6845","unresolved":true,"context_lines":[{"line_number":7089,"context_line":"            guest.os_loader_readonly \u003d \\"},{"line_number":7090,"context_line":"                old_guest.os_loader_readonly"},{"line_number":7091,"context_line":"            guest.os_nvram \u003d old_guest.os_nvram"},{"line_number":7092,"context_line":"            guest.os_nvram_template \u003d old_guest.os_nvram_template"},{"line_number":7093,"context_line":""},{"line_number":7094,"context_line":"            # if the feature set says we need SMM then enable it"},{"line_number":7095,"context_line":"            for f in old_guest.features:"}],"source_content_type":"text/x-python","patch_set":12,"id":"4bdeb964_744807f6","line":7092,"in_reply_to":"460f744a_5508e14c","updated":"2026-01-18 11:10:57.000000000","message":"os_loader_secure and os_loader_stateless are set in _configure_guest_by_virt_type .\nThese flags here are ones filled by libvirt.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e6b8ece116933f737984365965488b0ae53161d","unresolved":false,"context_lines":[{"line_number":7089,"context_line":"            guest.os_loader_readonly \u003d \\"},{"line_number":7090,"context_line":"                old_guest.os_loader_readonly"},{"line_number":7091,"context_line":"            guest.os_nvram \u003d old_guest.os_nvram"},{"line_number":7092,"context_line":"            guest.os_nvram_template \u003d old_guest.os_nvram_template"},{"line_number":7093,"context_line":""},{"line_number":7094,"context_line":"            # if the feature set says we need SMM then enable it"},{"line_number":7095,"context_line":"            for f in old_guest.features:"}],"source_content_type":"text/x-python","patch_set":12,"id":"be2a2c1f_d1dd3009","line":7092,"in_reply_to":"4bdeb964_744807f6","updated":"2026-01-19 12:38:38.000000000","message":"Thanks I see it now.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":true,"context_lines":[{"line_number":7096,"context_line":"                if f \u003d\u003d vconfig.LibvirtConfigGuestFeatureSMM():"},{"line_number":7097,"context_line":"                    guest.features.append("},{"line_number":7098,"context_line":"                        vconfig.LibvirtConfigGuestFeatureSMM())"},{"line_number":7099,"context_line":"                    break"},{"line_number":7100,"context_line":""},{"line_number":7101,"context_line":"    def _configure_guest_by_virt_type("},{"line_number":7102,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":12,"id":"36bd297c_fbdb0639","line":7099,"updated":"2026-01-17 17:21:44.000000000","message":"During firmware autoselection does libvirt automatically sets SMM if needed?","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0e6c84a5529214929cdb712f5648ebc9c0fa6845","unresolved":true,"context_lines":[{"line_number":7096,"context_line":"                if f \u003d\u003d vconfig.LibvirtConfigGuestFeatureSMM():"},{"line_number":7097,"context_line":"                    guest.features.append("},{"line_number":7098,"context_line":"                        vconfig.LibvirtConfigGuestFeatureSMM())"},{"line_number":7099,"context_line":"                    break"},{"line_number":7100,"context_line":""},{"line_number":7101,"context_line":"    def _configure_guest_by_virt_type("},{"line_number":7102,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":12,"id":"4404c20b_d7b88e7d","line":7099,"in_reply_to":"36bd297c_fbdb0639","updated":"2026-01-18 11:10:57.000000000","message":"Yes. When auto-selection is used then libvirt adds smm if the selected firmware requires it.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e6b8ece116933f737984365965488b0ae53161d","unresolved":false,"context_lines":[{"line_number":7096,"context_line":"                if f \u003d\u003d vconfig.LibvirtConfigGuestFeatureSMM():"},{"line_number":7097,"context_line":"                    guest.features.append("},{"line_number":7098,"context_line":"                        vconfig.LibvirtConfigGuestFeatureSMM())"},{"line_number":7099,"context_line":"                    break"},{"line_number":7100,"context_line":""},{"line_number":7101,"context_line":"    def _configure_guest_by_virt_type("},{"line_number":7102,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":12,"id":"a05d66f3_7535dbd3","line":7099,"in_reply_to":"4404c20b_d7b88e7d","updated":"2026-01-19 12:38:38.000000000","message":"Cool.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a1b6fd3629ced4b5335490424590b3db61a946a3","unresolved":true,"context_lines":[{"line_number":7175,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7176,"context_line":""},{"line_number":7177,"context_line":"                if old_guest:"},{"line_number":7178,"context_line":"                    self._copy_guest_firmware_elements(old_guest, guest)"},{"line_number":7179,"context_line":""},{"line_number":7180,"context_line":"            # NOTE(lyarwood): If the machine type isn\u0027t recorded in the stashed"},{"line_number":7181,"context_line":"            # image metadata then record it through the system metadata table."}],"source_content_type":"text/x-python","patch_set":12,"id":"6de6aec6_c29f70e1","line":7178,"updated":"2026-01-17 17:21:44.000000000","message":"I would add a debug log in the `else` branch saying that firmware autoselection is triggered as old guest XML is not available. So that if such re-selection triggers a guest issue then we can have some hints about the reason.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9d1a5a08dd64893eef7518a79f37aa63528e5fbf","unresolved":true,"context_lines":[{"line_number":7175,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7176,"context_line":""},{"line_number":7177,"context_line":"                if old_guest:"},{"line_number":7178,"context_line":"                    self._copy_guest_firmware_elements(old_guest, guest)"},{"line_number":7179,"context_line":""},{"line_number":7180,"context_line":"            # NOTE(lyarwood): If the machine type isn\u0027t recorded in the stashed"},{"line_number":7181,"context_line":"            # image metadata then record it through the system metadata table."}],"source_content_type":"text/x-python","patch_set":12,"id":"5e48b194_ba6c4233","line":7178,"in_reply_to":"2eb15fb7_5ad3e6e3","updated":"2026-02-03 14:51:19.000000000","message":"I agree Gibi\u0027s comment. I would add a log in the \"if branch\" saying a previous config was found. And also a log in the \"else branch\" saying no previous config was found and that it will use auto selection.\n\nNote that this log could be also in the _get_existing_guest_config() method.","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b1ab64f300de54bd7844270cfc0001b55b07b430","unresolved":false,"context_lines":[{"line_number":7175,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7176,"context_line":""},{"line_number":7177,"context_line":"                if old_guest:"},{"line_number":7178,"context_line":"                    self._copy_guest_firmware_elements(old_guest, guest)"},{"line_number":7179,"context_line":""},{"line_number":7180,"context_line":"            # NOTE(lyarwood): If the machine type isn\u0027t recorded in the stashed"},{"line_number":7181,"context_line":"            # image metadata then record it through the system metadata table."}],"source_content_type":"text/x-python","patch_set":12,"id":"1102dc70_41f2ad47","line":7178,"in_reply_to":"5e48b194_ba6c4233","updated":"2026-02-03 15:09:36.000000000","message":"Oh, sorry. I didn\u0027t include the required change right.\n\nI added a debug log here for both cases here so that operators can guess the behavior more easily but let me know if you think its too verbose.\n\nI decided to implement the debug log here to have more specific log (indicating detection of existing domain is tightly related to firmware selection)","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0e6c84a5529214929cdb712f5648ebc9c0fa6845","unresolved":false,"context_lines":[{"line_number":7175,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7176,"context_line":""},{"line_number":7177,"context_line":"                if old_guest:"},{"line_number":7178,"context_line":"                    self._copy_guest_firmware_elements(old_guest, guest)"},{"line_number":7179,"context_line":""},{"line_number":7180,"context_line":"            # NOTE(lyarwood): If the machine type isn\u0027t recorded in the stashed"},{"line_number":7181,"context_line":"            # image metadata then record it through the system metadata table."}],"source_content_type":"text/x-python","patch_set":12,"id":"f4e6ba8b_283dd050","line":7178,"in_reply_to":"6de6aec6_c29f70e1","updated":"2026-01-18 11:10:57.000000000","message":"Done","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"749491a96328d7abbd0b8d1a7b56cdddeb5a6f80","unresolved":true,"context_lines":[{"line_number":7175,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7176,"context_line":""},{"line_number":7177,"context_line":"                if old_guest:"},{"line_number":7178,"context_line":"                    self._copy_guest_firmware_elements(old_guest, guest)"},{"line_number":7179,"context_line":""},{"line_number":7180,"context_line":"            # NOTE(lyarwood): If the machine type isn\u0027t recorded in the stashed"},{"line_number":7181,"context_line":"            # image metadata then record it through the system metadata table."}],"source_content_type":"text/x-python","patch_set":12,"id":"2eb15fb7_5ad3e6e3","line":7178,"in_reply_to":"f4e6ba8b_283dd050","updated":"2026-01-19 12:40:17.000000000","message":"I think this is still open","commit_id":"0eb9e5f41afa12128621ac192d278174f5a24c50"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9d1a5a08dd64893eef7518a79f37aa63528e5fbf","unresolved":true,"context_lines":[{"line_number":4609,"context_line":"                                          rescue\u003dTrue)"},{"line_number":4610,"context_line":"        # NOTE(sbauza): Since rescue recreates the guest XML, we need to"},{"line_number":4611,"context_line":"        # remember the existing mdevs for reusing them."},{"line_number":4612,"context_line":"        mdevs \u003d list(self._get_all_assigned_mediated_devices(instance))"},{"line_number":4613,"context_line":""},{"line_number":4614,"context_line":"        old_guest \u003d self._get_existing_guest_config(instance)"},{"line_number":4615,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"e96174fd_7713bdc3","line":4612,"range":{"start_line":4612,"start_character":8,"end_line":4612,"end_character":71},"updated":"2026-02-03 14:51:19.000000000","message":"Not sure this needs to e changed but that ok.","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4cc954dccdadd4a322fa4d6b65084b6046f3b661","unresolved":false,"context_lines":[{"line_number":4609,"context_line":"                                          rescue\u003dTrue)"},{"line_number":4610,"context_line":"        # NOTE(sbauza): Since rescue recreates the guest XML, we need to"},{"line_number":4611,"context_line":"        # remember the existing mdevs for reusing them."},{"line_number":4612,"context_line":"        mdevs \u003d list(self._get_all_assigned_mediated_devices(instance))"},{"line_number":4613,"context_line":""},{"line_number":4614,"context_line":"        old_guest \u003d self._get_existing_guest_config(instance)"},{"line_number":4615,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f36efb6_0dd73c30","line":4612,"range":{"start_line":4612,"start_character":8,"end_line":4612,"end_character":71},"in_reply_to":"1573f7a5_02e8b267","updated":"2026-02-24 11:26:59.000000000","message":"Done","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d6dfc34baa590299f5b01fae878227346a265a13","unresolved":true,"context_lines":[{"line_number":4609,"context_line":"                                          rescue\u003dTrue)"},{"line_number":4610,"context_line":"        # NOTE(sbauza): Since rescue recreates the guest XML, we need to"},{"line_number":4611,"context_line":"        # remember the existing mdevs for reusing them."},{"line_number":4612,"context_line":"        mdevs \u003d list(self._get_all_assigned_mediated_devices(instance))"},{"line_number":4613,"context_line":""},{"line_number":4614,"context_line":"        old_guest \u003d self._get_existing_guest_config(instance)"},{"line_number":4615,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"aa3a432a_2947d4bd","line":4612,"range":{"start_line":4612,"start_character":8,"end_line":4612,"end_character":71},"in_reply_to":"6eeeb260_42a39548","updated":"2026-02-23 14:40:44.000000000","message":"Fine by me. No worries.","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6424ed2092f6c1e8c75fe512090ed30e6bb180c7","unresolved":true,"context_lines":[{"line_number":4609,"context_line":"                                          rescue\u003dTrue)"},{"line_number":4610,"context_line":"        # NOTE(sbauza): Since rescue recreates the guest XML, we need to"},{"line_number":4611,"context_line":"        # remember the existing mdevs for reusing them."},{"line_number":4612,"context_line":"        mdevs \u003d list(self._get_all_assigned_mediated_devices(instance))"},{"line_number":4613,"context_line":""},{"line_number":4614,"context_line":"        old_guest \u003d self._get_existing_guest_config(instance)"},{"line_number":4615,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1573f7a5_02e8b267","line":4612,"range":{"start_line":4612,"start_character":8,"end_line":4612,"end_character":71},"in_reply_to":"aa3a432a_2947d4bd","updated":"2026-02-23 17:51:01.000000000","message":"still not convinced : this seems to me irrelevant to the series. If you want to make the code consistent (and I appreciate the offer 😊) it should be in a separate patch, ideally not related to the series (or indeed git blame will put you under the bus if people see your name somehow related t vGPUs 😂)","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b1ab64f300de54bd7844270cfc0001b55b07b430","unresolved":true,"context_lines":[{"line_number":4609,"context_line":"                                          rescue\u003dTrue)"},{"line_number":4610,"context_line":"        # NOTE(sbauza): Since rescue recreates the guest XML, we need to"},{"line_number":4611,"context_line":"        # remember the existing mdevs for reusing them."},{"line_number":4612,"context_line":"        mdevs \u003d list(self._get_all_assigned_mediated_devices(instance))"},{"line_number":4613,"context_line":""},{"line_number":4614,"context_line":"        old_guest \u003d self._get_existing_guest_config(instance)"},{"line_number":4615,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"6eeeb260_42a39548","line":4612,"range":{"start_line":4612,"start_character":8,"end_line":4612,"end_character":71},"in_reply_to":"e96174fd_7713bdc3","updated":"2026-02-03 15:09:36.000000000","message":"I just touched the similar line and found this redundant (we do direct case to list in a few other places) but I can revert this if keeping git blame would be impotent.","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9d1a5a08dd64893eef7518a79f37aa63528e5fbf","unresolved":true,"context_lines":[{"line_number":7087,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7088,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7089,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7090,"context_line":"            # be added to guest.start if the head_reboot method is modified"},{"line_number":7091,"context_line":"            # so that it keeps NVRAM file."},{"line_number":7092,"context_line":"        elif loader and not os.path.exists(loader):"},{"line_number":7093,"context_line":"            # NOTE(tkajinam): Loader does not exist in this host"}],"source_content_type":"text/x-python","patch_set":19,"id":"ab535fce_cf9ca8d7","line":7090,"range":{"start_line":7090,"start_character":45,"end_line":7090,"end_character":56},"updated":"2026-02-03 14:51:19.000000000","message":"typo hard_reboot","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b1ab64f300de54bd7844270cfc0001b55b07b430","unresolved":false,"context_lines":[{"line_number":7087,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7088,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7089,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7090,"context_line":"            # be added to guest.start if the head_reboot method is modified"},{"line_number":7091,"context_line":"            # so that it keeps NVRAM file."},{"line_number":7092,"context_line":"        elif loader and not os.path.exists(loader):"},{"line_number":7093,"context_line":"            # NOTE(tkajinam): Loader does not exist in this host"}],"source_content_type":"text/x-python","patch_set":19,"id":"02128761_eb368f81","line":7090,"range":{"start_line":7090,"start_character":45,"end_line":7090,"end_character":56},"in_reply_to":"ab535fce_cf9ca8d7","updated":"2026-02-03 15:09:36.000000000","message":"Done","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6424ed2092f6c1e8c75fe512090ed30e6bb180c7","unresolved":true,"context_lines":[{"line_number":4139,"context_line":"        \"\"\""},{"line_number":4140,"context_line":"        # NOTE(sbauza): Since we undefine the guest XML when destroying, we"},{"line_number":4141,"context_line":"        # need to remember the existing mdevs for reusing them."},{"line_number":4142,"context_line":"        mdevs \u003d list(self._get_all_assigned_mediated_devices(instance))"},{"line_number":4143,"context_line":""},{"line_number":4144,"context_line":"        old_guest \u003d self._get_existing_guest_config(instance)"},{"line_number":4145,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"80b819e4_765f3ba9","line":4142,"updated":"2026-02-23 17:51:01.000000000","message":"this change seems to me unnecessary, right? we return dict_keys for sure but you don\u0027t change the usage of that, right?","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4cc954dccdadd4a322fa4d6b65084b6046f3b661","unresolved":false,"context_lines":[{"line_number":4139,"context_line":"        \"\"\""},{"line_number":4140,"context_line":"        # NOTE(sbauza): Since we undefine the guest XML when destroying, we"},{"line_number":4141,"context_line":"        # need to remember the existing mdevs for reusing them."},{"line_number":4142,"context_line":"        mdevs \u003d list(self._get_all_assigned_mediated_devices(instance))"},{"line_number":4143,"context_line":""},{"line_number":4144,"context_line":"        old_guest \u003d self._get_existing_guest_config(instance)"},{"line_number":4145,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"386291ac_2236ab2a","line":4142,"in_reply_to":"80b819e4_765f3ba9","updated":"2026-02-24 11:26:59.000000000","message":"Done","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6424ed2092f6c1e8c75fe512090ed30e6bb180c7","unresolved":false,"context_lines":[{"line_number":4664,"context_line":"                                  image_meta, rescue\u003drescue_images,"},{"line_number":4665,"context_line":"                                  mdevs\u003dmdevs,"},{"line_number":4666,"context_line":"                                  block_device_info\u003dblock_device_info,"},{"line_number":4667,"context_line":"                                  share_info\u003dshare_info, old_guest\u003dold_guest)"},{"line_number":4668,"context_line":"        self._destroy(instance)"},{"line_number":4669,"context_line":"        self._create_guest("},{"line_number":4670,"context_line":"            context, xml, instance, post_xml_callback\u003dgen_confdrive,"}],"source_content_type":"text/x-python","patch_set":22,"id":"454d4285_99565a34","line":4667,"updated":"2026-02-23 17:51:01.000000000","message":"here we boot a rescue image with the existing firmware properties, this sounds correct to me.","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6424ed2092f6c1e8c75fe512090ed30e6bb180c7","unresolved":true,"context_lines":[{"line_number":7128,"context_line":"            LOG.warning(\u0027Secure boot support was changed \u0027"},{"line_number":7129,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7130,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7131,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7132,"context_line":"            # be added to guest.start if the hard_reboot method is modified"},{"line_number":7133,"context_line":"            # so that it keeps NVRAM file."},{"line_number":7134,"context_line":"        elif loader and not os.path.exists(loader):"}],"source_content_type":"text/x-python","patch_set":22,"id":"39b66cfa_c4a66ffe","line":7131,"updated":"2026-02-23 17:51:01.000000000","message":"femtonit: wrong indentation for the comment, right?","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4cc954dccdadd4a322fa4d6b65084b6046f3b661","unresolved":true,"context_lines":[{"line_number":7128,"context_line":"            LOG.warning(\u0027Secure boot support was changed \u0027"},{"line_number":7129,"context_line":"                        \u0027after this instance had been created. \u0027"},{"line_number":7130,"context_line":"                        \u0027Re-selecting the firmware files.\u0027)"},{"line_number":7131,"context_line":"            # TODO(tkajinam): VIR_DOMAIN_START_RESET_NVRAM should"},{"line_number":7132,"context_line":"            # be added to guest.start if the hard_reboot method is modified"},{"line_number":7133,"context_line":"            # so that it keeps NVRAM file."},{"line_number":7134,"context_line":"        elif loader and not os.path.exists(loader):"}],"source_content_type":"text/x-python","patch_set":22,"id":"e22b9056_42db9a49","line":7131,"in_reply_to":"39b66cfa_c4a66ffe","updated":"2026-02-24 11:26:59.000000000","message":"No this comment should be in this block, because this is where the change in secure boot flag is detected and we need to add some logic to trigger reset here.","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6424ed2092f6c1e8c75fe512090ed30e6bb180c7","unresolved":false,"context_lines":[{"line_number":7146,"context_line":""},{"line_number":7147,"context_line":"            guest.os_loader \u003d old_guest.os_loader"},{"line_number":7148,"context_line":"            guest.os_loader_type \u003d old_guest.os_loader_type"},{"line_number":7149,"context_line":"            guest.os_loader_readonly \u003d \\"},{"line_number":7150,"context_line":"                old_guest.os_loader_readonly"},{"line_number":7151,"context_line":"            guest.os_nvram \u003d old_guest.os_nvram"},{"line_number":7152,"context_line":"            guest.os_nvram_template \u003d old_guest.os_nvram_template"}],"source_content_type":"text/x-python","patch_set":22,"id":"e3d9e5a5_9783bbd4","line":7149,"updated":"2026-02-23 17:51:01.000000000","message":"stylistic and pedantic nit, you could have used parenthesises instead of a backslash here, but fine by me.","commit_id":"810442e82d282aeb2587ac64ae1919d3dc4b9e25"}],"releasenotes/notes/bp-libvirt-firmware-auto-selection-2d58b075816898b7.yaml":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9d1a5a08dd64893eef7518a79f37aa63528e5fbf","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Now the libvirt virt driver uses firmware auto-selection by libvirt, which"},{"line_number":5,"context_line":"    is capable to select the appropriate firmware files according to"},{"line_number":6,"context_line":"    the requested feature. This built-in feature extends the existing firmware"},{"line_number":7,"context_line":"    detection capability within nova, and checks a few more feature flags such"},{"line_number":8,"context_line":"    as amd-sev and also supports new firmware types such as rom firmware."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":19,"id":"30f14fe5_e1dbe703","line":6,"range":{"start_line":6,"start_character":18,"end_line":6,"end_character":25},"updated":"2026-02-03 14:51:19.000000000","message":"nit: I would use the plural \u0027features\u0027. But I could be wrong.","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b1ab64f300de54bd7844270cfc0001b55b07b430","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Now the libvirt virt driver uses firmware auto-selection by libvirt, which"},{"line_number":5,"context_line":"    is capable to select the appropriate firmware files according to"},{"line_number":6,"context_line":"    the requested feature. This built-in feature extends the existing firmware"},{"line_number":7,"context_line":"    detection capability within nova, and checks a few more feature flags such"},{"line_number":8,"context_line":"    as amd-sev and also supports new firmware types such as rom firmware."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":19,"id":"b957d71b_8c64c41c","line":6,"range":{"start_line":6,"start_character":18,"end_line":6,"end_character":25},"in_reply_to":"30f14fe5_e1dbe703","updated":"2026-02-03 15:09:36.000000000","message":"Done. Also fixed \"feature\" used for two meanings...","commit_id":"d26891877a7b90611799d1c2c29a4935188275a8"}]}
