)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"076e4ec79a0a1c1328d8abed4f2e1388c78cd597","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"db846d88_8955dea1","updated":"2026-06-24 16:23:59.000000000","message":"Couple of small things inline. But overall direction looks good","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"}],"nova/objects/fields.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e9f4ed455414ae83f80ce4125d4131686f0e744f","unresolved":true,"context_lines":[{"line_number":566,"context_line":"    AMD_SEV_ES \u003d \"amd-sev-es\""},{"line_number":567,"context_line":"    INTEL_TDX \u003d \"intel-tdx\""},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"    ALL \u003d (AMD_SEV, AMD_SEV_ES, INTEL_TDX)"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"class MaxPhyAddrMode(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":2,"id":"199531f6_a08f60b7","line":569,"updated":"2026-06-26 09:36:18.000000000","message":"Heads up. This will be a merge conflict point with https://review.opendev.org/q/topic:%22bp/amd-sev-snp-libvirt-support%22 as that also adds a new field value. Give that the SNP series is a bit further ahead and therefore more like to land first I suggest you to try to rebase on top of it (at least top of the commit that causes the merge conflict)","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":38744,"name":"Anton Iacobaeus","display_name":"antia","email":"anton.iacobaeus@canarybit.eu","username":"antia","status":"Canary Bit"},"change_message_id":"70f5ddc18628b63921353c6a606b35ba9a1fb9e3","unresolved":true,"context_lines":[{"line_number":566,"context_line":"    AMD_SEV_ES \u003d \"amd-sev-es\""},{"line_number":567,"context_line":"    INTEL_TDX \u003d \"intel-tdx\""},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"    ALL \u003d (AMD_SEV, AMD_SEV_ES, INTEL_TDX)"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"class MaxPhyAddrMode(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":2,"id":"24822300_d1ee81cf","line":569,"in_reply_to":"199531f6_a08f60b7","updated":"2026-06-26 09:46:24.000000000","message":"Yes thanks for the heads up, will do that before moving to the next parts.\n\nThis patch looks very similar and complete https://review.opendev.org/c/openstack/nova/+/994764, so will start there.","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"}],"nova/tests/unit/virt/libvirt/test_host.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"076e4ec79a0a1c1328d8abed4f2e1388c78cd597","unresolved":true,"context_lines":[{"line_number":2495,"context_line":"            return_value\u003d63):"},{"line_number":2496,"context_line":"            self.assertTrue(self.host.supports_intel_tdx)"},{"line_number":2497,"context_line":"            self.assertEqual("},{"line_number":2498,"context_line":"    63, self.host._get_mem_encryption_slots_intel_tdx())"},{"line_number":2499,"context_line":""},{"line_number":2500,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, return_value\u003dTrue)"},{"line_number":2501,"context_line":"    @mock.patch(\u0027builtins.open\u0027, mock.mock_open(read_data\u003d\u00271\\n\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"d5beedbb_9d83490c","line":2498,"updated":"2026-06-24 16:23:59.000000000","message":"nit: it is strangely indented","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":38744,"name":"Anton Iacobaeus","display_name":"antia","email":"anton.iacobaeus@canarybit.eu","username":"antia","status":"Canary Bit"},"change_message_id":"70f5ddc18628b63921353c6a606b35ba9a1fb9e3","unresolved":false,"context_lines":[{"line_number":2495,"context_line":"            return_value\u003d63):"},{"line_number":2496,"context_line":"            self.assertTrue(self.host.supports_intel_tdx)"},{"line_number":2497,"context_line":"            self.assertEqual("},{"line_number":2498,"context_line":"    63, self.host._get_mem_encryption_slots_intel_tdx())"},{"line_number":2499,"context_line":""},{"line_number":2500,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, return_value\u003dTrue)"},{"line_number":2501,"context_line":"    @mock.patch(\u0027builtins.open\u0027, mock.mock_open(read_data\u003d\u00271\\n\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"8efe27a7_4b794874","line":2498,"in_reply_to":"d5beedbb_9d83490c","updated":"2026-06-26 09:46:24.000000000","message":"Acknowledged","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"076e4ec79a0a1c1328d8abed4f2e1388c78cd597","unresolved":true,"context_lines":[{"line_number":2506,"context_line":"                            return_value\u003dNone):"},{"line_number":2507,"context_line":"            self.assertTrue(self.host.supports_intel_tdx)"},{"line_number":2508,"context_line":"            self.assertEqual("},{"line_number":2509,"context_line":"    0, self.host._get_mem_encryption_slots_intel_tdx())"},{"line_number":2510,"context_line":""},{"line_number":2511,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, return_value\u003dTrue)"},{"line_number":2512,"context_line":"    @mock.patch.object(vc, \u0027_domain_capability_features\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"8a1aa658_1c36ed89","line":2509,"updated":"2026-06-24 16:23:59.000000000","message":"ditto","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":38744,"name":"Anton Iacobaeus","display_name":"antia","email":"anton.iacobaeus@canarybit.eu","username":"antia","status":"Canary Bit"},"change_message_id":"70f5ddc18628b63921353c6a606b35ba9a1fb9e3","unresolved":false,"context_lines":[{"line_number":2506,"context_line":"                            return_value\u003dNone):"},{"line_number":2507,"context_line":"            self.assertTrue(self.host.supports_intel_tdx)"},{"line_number":2508,"context_line":"            self.assertEqual("},{"line_number":2509,"context_line":"    0, self.host._get_mem_encryption_slots_intel_tdx())"},{"line_number":2510,"context_line":""},{"line_number":2511,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027, return_value\u003dTrue)"},{"line_number":2512,"context_line":"    @mock.patch.object(vc, \u0027_domain_capability_features\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1daf953b_22b20555","line":2509,"in_reply_to":"8a1aa658_1c36ed89","updated":"2026-06-26 09:46:24.000000000","message":"Acknowledged","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"076e4ec79a0a1c1328d8abed4f2e1388c78cd597","unresolved":true,"context_lines":[{"line_number":2180,"context_line":"                    feature_is_tdx \u003d isinstance("},{"line_number":2181,"context_line":"                        feature, vconfig.LibvirtConfigDomainCapsFeatureTDX"},{"line_number":2182,"context_line":"                    )"},{"line_number":2183,"context_line":"                    if feature_is_tdx and feature.supported:"},{"line_number":2184,"context_line":"                        LOG.info(\"Intel TDX support detected\")"},{"line_number":2185,"context_line":"                        self._supports_intel_tdx \u003d True"},{"line_number":2186,"context_line":"                        return self._supports_intel_tdx"}],"source_content_type":"text/x-python","patch_set":2,"id":"c605d41a_4b503014","line":2183,"updated":"2026-06-24 16:23:59.000000000","message":"Am I correct that this is wants to cover the libvirt and qemu version dependencies as well?\nDoes an older libvirt report the capability if the host support it? I guess not. But: Does a new libvirt with old qemu report this capability if the host support it?","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"21846c337e6a354f0c775e1799dceefaafdfb094","unresolved":false,"context_lines":[{"line_number":2180,"context_line":"                    feature_is_tdx \u003d isinstance("},{"line_number":2181,"context_line":"                        feature, vconfig.LibvirtConfigDomainCapsFeatureTDX"},{"line_number":2182,"context_line":"                    )"},{"line_number":2183,"context_line":"                    if feature_is_tdx and feature.supported:"},{"line_number":2184,"context_line":"                        LOG.info(\"Intel TDX support detected\")"},{"line_number":2185,"context_line":"                        self._supports_intel_tdx \u003d True"},{"line_number":2186,"context_line":"                        return self._supports_intel_tdx"}],"source_content_type":"text/x-python","patch_set":2,"id":"5cabead5_e20c72ef","line":2183,"in_reply_to":"91464a4a_e997ea90","updated":"2026-06-30 16:05:23.000000000","message":"OK thanks for the explanation. If we can dorp the sysfs check that is good to.","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":38744,"name":"Anton Iacobaeus","display_name":"antia","email":"anton.iacobaeus@canarybit.eu","username":"antia","status":"Canary Bit"},"change_message_id":"70f5ddc18628b63921353c6a606b35ba9a1fb9e3","unresolved":true,"context_lines":[{"line_number":2180,"context_line":"                    feature_is_tdx \u003d isinstance("},{"line_number":2181,"context_line":"                        feature, vconfig.LibvirtConfigDomainCapsFeatureTDX"},{"line_number":2182,"context_line":"                    )"},{"line_number":2183,"context_line":"                    if feature_is_tdx and feature.supported:"},{"line_number":2184,"context_line":"                        LOG.info(\"Intel TDX support detected\")"},{"line_number":2185,"context_line":"                        self._supports_intel_tdx \u003d True"},{"line_number":2186,"context_line":"                        return self._supports_intel_tdx"}],"source_content_type":"text/x-python","patch_set":2,"id":"91464a4a_e997ea90","line":2183,"in_reply_to":"c605d41a_4b503014","updated":"2026-06-26 09:46:24.000000000","message":"Yes libvirt queries qemu to see if it has the tdx-guest object, essentially asking if it was compiled with TDX support. A new libvirt with an old qemu (without TDX support) would therefore not report tdx capable, even if the host has the support.\n\nI also found that the kernel sysfs parameter is actually directly checked by Libvirt already [1]. The separate check by Nova is therefore unnecessary and can be dropped from this patch.\n\n[1] https://gitlab.com/libvirt/libvirt/-/blob/v11.6.0/src/qemu/qemu_capabilities.c?ref_type\u003dtags#L5335","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"076e4ec79a0a1c1328d8abed4f2e1388c78cd597","unresolved":true,"context_lines":[{"line_number":2224,"context_line":"        \"\"\""},{"line_number":2225,"context_line":"        if not self.supports_intel_tdx:"},{"line_number":2226,"context_line":"            return None"},{"line_number":2227,"context_line":"        if self._max_intel_tdx_guests is None:"},{"line_number":2228,"context_line":"            self._max_intel_tdx_guests \u003d self._get_tdx_capacity()"},{"line_number":2229,"context_line":"        return self._max_intel_tdx_guests"},{"line_number":2230,"context_line":""},{"line_number":2231,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"f07afe35_2622aabc","line":2228,"range":{"start_line":2227,"start_character":0,"end_line":2228,"end_character":65},"updated":"2026-06-24 16:23:59.000000000","message":"In case there is an error parsing the file nova will retry parsing it at every call and log a warning repeatedly. Would it be better saving 0 here if None is returned from _get_tdx_capacity? That would mean we only retry parsing if the compute service is restarted.","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"},{"author":{"_account_id":38744,"name":"Anton Iacobaeus","display_name":"antia","email":"anton.iacobaeus@canarybit.eu","username":"antia","status":"Canary Bit"},"change_message_id":"70f5ddc18628b63921353c6a606b35ba9a1fb9e3","unresolved":true,"context_lines":[{"line_number":2224,"context_line":"        \"\"\""},{"line_number":2225,"context_line":"        if not self.supports_intel_tdx:"},{"line_number":2226,"context_line":"            return None"},{"line_number":2227,"context_line":"        if self._max_intel_tdx_guests is None:"},{"line_number":2228,"context_line":"            self._max_intel_tdx_guests \u003d self._get_tdx_capacity()"},{"line_number":2229,"context_line":"        return self._max_intel_tdx_guests"},{"line_number":2230,"context_line":""},{"line_number":2231,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"ec8a940e_e48a8714","line":2228,"range":{"start_line":2227,"start_character":0,"end_line":2228,"end_character":65},"in_reply_to":"f07afe35_2622aabc","updated":"2026-06-26 09:46:24.000000000","message":"Yes that sounds reasonable","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"}],"requirements.txt":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"076e4ec79a0a1c1328d8abed4f2e1388c78cd597","unresolved":false,"context_lines":[{"line_number":50,"context_line":"oslo.versionedobjects\u003e\u003d1.35.0 # Apache-2.0"},{"line_number":51,"context_line":"os-brick\u003e\u003d6.10.0 # Apache-2.0"},{"line_number":52,"context_line":"os-resource-classes\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":53,"context_line":"os-traits\u003e\u003d3.8.0 # Apache-2.0"},{"line_number":54,"context_line":"os-vif\u003e\u003d3.1.0 # Apache-2.0"},{"line_number":55,"context_line":"castellan\u003e\u003d0.16.0 # Apache-2.0"},{"line_number":56,"context_line":"microversion-parse\u003e\u003d0.2.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":2,"id":"6be7d1bd_88959a96","line":53,"updated":"2026-06-24 16:23:59.000000000","message":"yepp this is needed to have the TDX trait","commit_id":"025ee8a335a952101a7f350edd1683bac711341d"}]}
