)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bc7b9afa271da0745a1d9344ef59dcf15953744a","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some firmwares require smm feature. While the feature doesn\u0027t have to"},{"line_number":10,"context_line":"be explicitly enabled when auto-selection is enabled, it should be"},{"line_number":11,"context_line":"enabled explicitly when firmware files are pre-defined."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially-Implements: blueprint libvirt-firmware-auto-selection"},{"line_number":14,"context_line":"Change-Id: Ia194dcfacd2b743761e720d947a6807689a96da3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5e44267f_148f3a31","line":11,"updated":"2026-01-13 17:45:42.000000000","message":"while I understand why asking for SMM is important, I\u0027m afraid of the libvirt docs about the tseg optional attribute : \n\"If the VM is booting you should leave this option alone, unless you are very certain you know what you are doing.\"\nhttps://libvirt.org/formatdomain.html#hypervisor-features\n\nMaybe we should leave in some big fat comment that nova should never ever support defining tseg attribute for the smm element ?","commit_id":"f60a44f43acbc741b7fe0a084362a709c4bc2c08"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"52a1450493de4d810d7af664e662e6300fcd8c6f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some firmwares require smm feature. While the feature doesn\u0027t have to"},{"line_number":10,"context_line":"be explicitly enabled when auto-selection is enabled, it should be"},{"line_number":11,"context_line":"enabled explicitly when firmware files are pre-defined."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially-Implements: blueprint libvirt-firmware-auto-selection"},{"line_number":14,"context_line":"Change-Id: Ia194dcfacd2b743761e720d947a6807689a96da3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"94f210ea_7ef26e39","line":11,"in_reply_to":"5e44267f_148f3a31","updated":"2026-01-13 18:17:04.000000000","message":"I\u0027ve added a note to explain it.","commit_id":"f60a44f43acbc741b7fe0a084362a709c4bc2c08"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5fa851a2f714e4f5c3a4d7e968807e1b982a05b3","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Takashi Kajinami \u003ckajinamit@oss.nttdata.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-01-14 03:16:14 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: Add capability to load ssm feature from existing xml"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some firmwares require smm feature. While the feature doesn\u0027t have to"},{"line_number":10,"context_line":"be explicitly enabled when auto-selection is enabled, it should be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"02fd7bea_80a8b705","line":7,"updated":"2026-01-16 17:38:32.000000000","message":"nit:smm","commit_id":"335cef487e0b4dc596b5d4e59e8654b7929e9540"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"edac87580e687328a78d5fdc5cf8ed5d0c285504","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Takashi Kajinami \u003ckajinamit@oss.nttdata.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-01-14 03:16:14 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: Add capability to load ssm feature from existing xml"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some firmwares require smm feature. While the feature doesn\u0027t have to"},{"line_number":10,"context_line":"be explicitly enabled when auto-selection is enabled, it should be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"e6910840_2a3f18d8","line":7,"in_reply_to":"02fd7bea_80a8b705","updated":"2026-01-27 06:33:32.000000000","message":"Done","commit_id":"335cef487e0b4dc596b5d4e59e8654b7929e9540"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bc7b9afa271da0745a1d9344ef59dcf15953744a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"184e382b_e9f760a7","updated":"2026-01-13 17:45:42.000000000","message":"I know nova will define by itself the guest domain but I think we should accept smm elements without state defined.","commit_id":"f60a44f43acbc741b7fe0a084362a709c4bc2c08"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2c27b555de866513a873b3b7e80fc7443ef92f0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a2884e9d_00fcf8f9","updated":"2026-01-15 09:11:14.000000000","message":"thanks for the hard work","commit_id":"335cef487e0b4dc596b5d4e59e8654b7929e9540"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50ec03f8418f68300d327e38dd31d9f2aa118743","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a422878d_552be22a","updated":"2026-01-19 02:29:49.000000000","message":"recheck let\u0027s see if the failure in -multi-cell job appears consistently.","commit_id":"2df068d9f371c69b22959cfdd2094e777f61d90b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"79ca1eccbf852475b80de3e262ec1e0389941b25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0139cc87_ff78fb36","updated":"2026-02-02 15:21:08.000000000","message":"This patch looks good to me.\nBy the way, I wasn’t familiar with SMM before and had to look it up. I understand it now.","commit_id":"29a5142855ccc87f3c12ac45307311f0655e4575"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b1d346656aea8c5c49ed7e74c197ab82d4ce574e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7047128e_8110f23e","updated":"2026-02-25 11:11:48.000000000","message":"recheck","commit_id":"e212a1e7449c0374011061e338491610479f8adb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7052dcffc771bd3aeadeb1612a73ad77101abad1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f39f3922_7897a06f","updated":"2026-02-25 02:28:18.000000000","message":"recheck","commit_id":"e212a1e7449c0374011061e338491610479f8adb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e4096e6f7efc4215bcf14d8736fd8e124f7e795f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6c2c5631_be797080","updated":"2026-02-18 16:34:48.000000000","message":"recheck post failure is irrelevant","commit_id":"e212a1e7449c0374011061e338491610479f8adb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aaca4148ec141e37ff94e14e231e28530ee0748f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"411b6658_1c75411b","updated":"2026-02-24 17:24:44.000000000","message":"still good","commit_id":"e212a1e7449c0374011061e338491610479f8adb"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2c27b555de866513a873b3b7e80fc7443ef92f0d","unresolved":false,"context_lines":[{"line_number":3170,"context_line":"        self.assertEqual(\u0027hvm\u0027, obj.os_type)"},{"line_number":3171,"context_line":"        self.assertIsNone(obj.os_mach_type)"},{"line_number":3172,"context_line":"        self.assertIsNone(obj.os_kernel)"},{"line_number":3173,"context_line":"        self.assertIn(config.LibvirtConfigGuestFeatureSMM(), obj.features)"},{"line_number":3174,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_CODE.secboot.fd\u0027, obj.os_loader)"},{"line_number":3175,"context_line":"        self.assertEqual(\u0027pflash\u0027, obj.os_loader_type)"},{"line_number":3176,"context_line":"        self.assertTrue(obj.os_loader_readonly)"}],"source_content_type":"text/x-python","patch_set":7,"id":"0b20e8f5_e2b4ef8f","line":3173,"updated":"2026-01-15 09:11:14.000000000","message":"++","commit_id":"335cef487e0b4dc596b5d4e59e8654b7929e9540"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bc7b9afa271da0745a1d9344ef59dcf15953744a","unresolved":true,"context_lines":[{"line_number":2877,"context_line":"                                                        **kwargs)"},{"line_number":2878,"context_line":""},{"line_number":2879,"context_line":"    def __eq__(self, obj):"},{"line_number":2880,"context_line":"        return obj.root_name \u003d\u003d self.root_name"},{"line_number":2881,"context_line":""},{"line_number":2882,"context_line":""},{"line_number":2883,"context_line":"class LibvirtConfigGuestFeatureACPI(LibvirtConfigGuestFeature):"}],"source_content_type":"text/x-python","patch_set":6,"id":"822debdb_913e720a","line":2880,"range":{"start_line":2880,"start_character":15,"end_line":2880,"end_character":18},"updated":"2026-01-13 17:45:42.000000000","message":"obj could be None and lead to an AttributeError, a better input validation should be to ensure that we compare with another LibvirtConfigGuestFeature object\nThat said, your code is valid, this is just a nit.","commit_id":"f60a44f43acbc741b7fe0a084362a709c4bc2c08"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"52a1450493de4d810d7af664e662e6300fcd8c6f","unresolved":false,"context_lines":[{"line_number":2877,"context_line":"                                                        **kwargs)"},{"line_number":2878,"context_line":""},{"line_number":2879,"context_line":"    def __eq__(self, obj):"},{"line_number":2880,"context_line":"        return obj.root_name \u003d\u003d self.root_name"},{"line_number":2881,"context_line":""},{"line_number":2882,"context_line":""},{"line_number":2883,"context_line":"class LibvirtConfigGuestFeatureACPI(LibvirtConfigGuestFeature):"}],"source_content_type":"text/x-python","patch_set":6,"id":"b66f4edd_a6c61502","line":2880,"range":{"start_line":2880,"start_character":15,"end_line":2880,"end_character":18},"in_reply_to":"822debdb_913e720a","updated":"2026-01-13 18:17:04.000000000","message":"Done. I\u0027ve also updated one more __eq__ without type check","commit_id":"f60a44f43acbc741b7fe0a084362a709c4bc2c08"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bc7b9afa271da0745a1d9344ef59dcf15953744a","unresolved":true,"context_lines":[{"line_number":3416,"context_line":"                self._parse_os(c)"},{"line_number":3417,"context_line":"            elif c.tag \u003d\u003d \u0027features\u0027:"},{"line_number":3418,"context_line":"                for f in c:"},{"line_number":3419,"context_line":"                    if f.tag \u003d\u003d \u0027smm\u0027 and f.get(\u0027state\u0027) \u003d\u003d \u0027on\u0027:"},{"line_number":3420,"context_line":"                        self.features.append(LibvirtConfigGuestFeatureSMM())"},{"line_number":3421,"context_line":"            else:"},{"line_number":3422,"context_line":"                self._parse_basic_props(c)"}],"source_content_type":"text/x-python","patch_set":6,"id":"6a75d9d3_f31e5de4","line":3419,"range":{"start_line":3419,"start_character":41,"end_line":3419,"end_character":65},"updated":"2026-01-13 17:45:42.000000000","message":"fwiw, state is an optional attribute, defaulting to \u0027on\u0027 so potentially \u003csmm/\u003e is valid for asking the guest to use SMM.","commit_id":"f60a44f43acbc741b7fe0a084362a709c4bc2c08"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"52a1450493de4d810d7af664e662e6300fcd8c6f","unresolved":false,"context_lines":[{"line_number":3416,"context_line":"                self._parse_os(c)"},{"line_number":3417,"context_line":"            elif c.tag \u003d\u003d \u0027features\u0027:"},{"line_number":3418,"context_line":"                for f in c:"},{"line_number":3419,"context_line":"                    if f.tag \u003d\u003d \u0027smm\u0027 and f.get(\u0027state\u0027) \u003d\u003d \u0027on\u0027:"},{"line_number":3420,"context_line":"                        self.features.append(LibvirtConfigGuestFeatureSMM())"},{"line_number":3421,"context_line":"            else:"},{"line_number":3422,"context_line":"                self._parse_basic_props(c)"}],"source_content_type":"text/x-python","patch_set":6,"id":"b40990e7_4d5d10e9","line":3419,"range":{"start_line":3419,"start_character":41,"end_line":3419,"end_character":65},"in_reply_to":"6a75d9d3_f31e5de4","updated":"2026-01-13 18:17:04.000000000","message":"Yes. Fixed it.","commit_id":"f60a44f43acbc741b7fe0a084362a709c4bc2c08"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2c27b555de866513a873b3b7e80fc7443ef92f0d","unresolved":false,"context_lines":[{"line_number":831,"context_line":"    def __eq__(self, other):"},{"line_number":832,"context_line":"        if not isinstance(other, LibvirtConfigCPUFeature):"},{"line_number":833,"context_line":"            return False"},{"line_number":834,"context_line":"        return other.name \u003d\u003d self.name"},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"    def __ne__(self, obj):"},{"line_number":837,"context_line":"        return obj.name !\u003d self.name"}],"source_content_type":"text/x-python","patch_set":7,"id":"40b38842_e604bf63","line":834,"updated":"2026-01-15 09:11:14.000000000","message":"thanks","commit_id":"335cef487e0b4dc596b5d4e59e8654b7929e9540"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2c27b555de866513a873b3b7e80fc7443ef92f0d","unresolved":false,"context_lines":[{"line_number":2881,"context_line":"    def __eq__(self, other):"},{"line_number":2882,"context_line":"        if not isinstance(other, LibvirtConfigGuestFeature):"},{"line_number":2883,"context_line":"            return False"},{"line_number":2884,"context_line":"        return other.root_name \u003d\u003d self.root_name"},{"line_number":2885,"context_line":""},{"line_number":2886,"context_line":""},{"line_number":2887,"context_line":"class LibvirtConfigGuestFeatureACPI(LibvirtConfigGuestFeature):"}],"source_content_type":"text/x-python","patch_set":7,"id":"d4d1592b_c42ab4b0","line":2884,"updated":"2026-01-15 09:11:14.000000000","message":"++","commit_id":"335cef487e0b4dc596b5d4e59e8654b7929e9540"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5fa851a2f714e4f5c3a4d7e968807e1b982a05b3","unresolved":false,"context_lines":[{"line_number":3425,"context_line":"                self._parse_os(c)"},{"line_number":3426,"context_line":"            elif c.tag \u003d\u003d \u0027features\u0027:"},{"line_number":3427,"context_line":"                for f in c:"},{"line_number":3428,"context_line":"                    if f.tag \u003d\u003d \u0027smm\u0027 and f.get(\u0027state\u0027, \u0027on\u0027) \u003d\u003d \u0027on\u0027:"},{"line_number":3429,"context_line":"                        self.features.append(LibvirtConfigGuestFeatureSMM())"},{"line_number":3430,"context_line":"            else:"},{"line_number":3431,"context_line":"                self._parse_basic_props(c)"}],"source_content_type":"text/x-python","patch_set":7,"id":"01c8163f_4bf90770","line":3428,"range":{"start_line":3428,"start_character":42,"end_line":3428,"end_character":71},"updated":"2026-01-16 17:38:32.000000000","message":"smm is defaulted to on by libvirt so this looks OK","commit_id":"335cef487e0b4dc596b5d4e59e8654b7929e9540"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fc38703db7578106d33d91cc31e398efcb55136","unresolved":false,"context_lines":[{"line_number":832,"context_line":"            return False"},{"line_number":833,"context_line":"        return other.name \u003d\u003d self.name"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def __ne__(self, obj):"},{"line_number":836,"context_line":"        return obj.name !\u003d self.name"},{"line_number":837,"context_line":""},{"line_number":838,"context_line":"    def __hash__(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"d0033d76_a3713812","line":835,"updated":"2026-02-23 17:34:23.000000000","message":"nit: since you also added the check above, you could add the same input validation in __ne__ but that doesn\u0027t sound to me something holding a series.","commit_id":"e212a1e7449c0374011061e338491610479f8adb"}]}
