)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148b4f7038f6ab1f9647eeb9f1bf777addbb83fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"41e4788f_443f6b2f","updated":"2025-11-19 13:20:10.000000000","message":"Overall looks good. I have one nit and a possible edge case to handle.","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5e8ae098959d45e765fef2bfa11cb71d37f3518","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"61ca3d5c_46f3169c","in_reply_to":"41e4788f_443f6b2f","updated":"2025-11-19 15:43:25.000000000","message":"Thanks for your feedback ! I\u0027ve updated the parts you pointed accordingly.","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"13f1798d_0ea0394c","updated":"2025-11-25 15:20:27.000000000","message":"Fixed some typo/format problems pointed. I\u0027ll address the xml example separately.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c92c43ce_f4559e2e","updated":"2025-11-25 14:58:16.000000000","message":"Hi Takashi, thanks for submitting this spec.\n- I have identified some typos.\n- I would like to have XML examples. To my mind it really help reasoning about the change).\n- I would not do something different for hard-reboot. Maybe I miss something.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"eeb0a38e3faf031be67e0a5ef60ca84a3188eff0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3531010c_9534519b","updated":"2025-11-20 13:11:36.000000000","message":"The spec looks good to me.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5453ef235b36d49250386e81fb1631005b7e5ba2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9acd696b_63210a27","updated":"2025-11-27 13:01:46.000000000","message":"Content still loooks good","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2b4303948c534b3aa26c1210f3409cedd61ee6e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d1d95014_a5b70709","updated":"2025-11-27 16:06:19.000000000","message":"Definitely +2 but I\u0027ll await one day before +Wing this spec given the discussion we have for the reboot but I think we have a consensus already.","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"59b51689808c7d83938a719559b2f03a85afe46d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e8147eea_c79794a9","updated":"2025-12-02 10:20:36.000000000","message":"given the questions about live-migration and hard-reboot, let\u0027s just merge this spec first and then discuss this concern during the implementation","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"}],"specs/2026.1/approved/libvirt-firmware-auto-selection.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148b4f7038f6ab1f9647eeb9f1bf777addbb83fe","unresolved":true,"context_lines":[{"line_number":41,"context_line":"the other featurs. As a result, an instance with additional features may be"},{"line_number":42,"context_line":"launched with a wrong firmware file. One example is stateless firmware, for"},{"line_number":43,"context_line":"which a firmware file with \"stateless\" flag should be used, but the current"},{"line_number":44,"context_line":"nova may not consider this flag and may launch instances without a CODE file,"},{"line_number":45,"context_line":"which has non-zero VAR file accosicated."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"In addition to the new feature flags, recent QEMU packages introduced the new"},{"line_number":48,"context_line":"ROM type firmwares. Libvirt can recognize these, but nova is not able to handle"},{"line_number":49,"context_line":"that new types due to the different keys used to define the firmware path"}],"source_content_type":"text/x-rst","patch_set":3,"id":"96789cc7_ec8cd030","line":46,"range":{"start_line":44,"start_character":57,"end_line":46,"end_character":0},"updated":"2025-11-19 13:20:10.000000000","message":"this reads strangely. Did you want to say \"with a CODE file, which has a non-zero VAR file associated\"?","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5e8ae098959d45e765fef2bfa11cb71d37f3518","unresolved":false,"context_lines":[{"line_number":41,"context_line":"the other featurs. As a result, an instance with additional features may be"},{"line_number":42,"context_line":"launched with a wrong firmware file. One example is stateless firmware, for"},{"line_number":43,"context_line":"which a firmware file with \"stateless\" flag should be used, but the current"},{"line_number":44,"context_line":"nova may not consider this flag and may launch instances without a CODE file,"},{"line_number":45,"context_line":"which has non-zero VAR file accosicated."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"In addition to the new feature flags, recent QEMU packages introduced the new"},{"line_number":48,"context_line":"ROM type firmwares. Libvirt can recognize these, but nova is not able to handle"},{"line_number":49,"context_line":"that new types due to the different keys used to define the firmware path"}],"source_content_type":"text/x-rst","patch_set":3,"id":"68d0c5f5_e4aec865","line":46,"range":{"start_line":44,"start_character":57,"end_line":46,"end_character":0},"in_reply_to":"96789cc7_ec8cd030","updated":"2025-11-19 15:43:25.000000000","message":"Yes. You are correct.","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148b4f7038f6ab1f9647eeb9f1bf777addbb83fe","unresolved":true,"context_lines":[{"line_number":73,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":74,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  * hard-reboot (and start)"},{"line_number":77,"context_line":"  * live migration"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"28571c79_2131def8","line":76,"updated":"2025-11-19 13:20:10.000000000","message":"Does hard reboot have always access to the domain XML?\n\nConsider the following scenario that works today. If I stop the VM then undefine the domain I can still start the VM and nova will define the domain. I think during this start case nova has no access to the domain and probably need to fall back to generating a new one even if it means we change the firmware\n```\nstack@aio:~$ openstack server list\n+--------------------------------------+------+--------+----------+--------------------------+-----------+\n| ID                                   | Name | Status | Networks | Image                    | Flavor    |\n+--------------------------------------+------+--------+----------+--------------------------+-----------+\n| 7ca3d6e2-f5c4-474b-b514-d978014cb005 | vm1  | ACTIVE |          | cirros-0.6.3-x86_64-disk | cirros256 |\n+--------------------------------------+------+--------+----------+--------------------------+-----------+\nstack@aio:~$ openstack server stop vm1\nstack@aio:~$ virsh list --all\n Id   Name                State\n------------------------------------\n -    instance-00000001   shut off\n\nstack@aio:~$ virsh undefine instance-00000001\nDomain \u0027instance-00000001\u0027 has been undefined\nstack@aio:~$ openstack server start vm1\nstack@aio:~$ openstack server list\n+--------------------------------------+------+--------+----------+--------------------------+-----------+\n| ID                                   | Name | Status | Networks | Image                    | Flavor    |\n+--------------------------------------+------+--------+----------+--------------------------+-----------+\n| 7ca3d6e2-f5c4-474b-b514-d978014cb005 | vm1  | ACTIVE |          | cirros-0.6.3-x86_64-disk | cirros256 |\n+--------------------------------------+------+--------+----------+--------------------------+-----------+\nstack@aio:~$ virsh list --all\n Id   Name                State\n-----------------------------------\n 2    instance-00000001   running\n```","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5e8ae098959d45e765fef2bfa11cb71d37f3518","unresolved":false,"context_lines":[{"line_number":73,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":74,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  * hard-reboot (and start)"},{"line_number":77,"context_line":"  * live migration"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"03b7f961_02eee403","line":76,"in_reply_to":"28571c79_2131def8","updated":"2025-11-19 15:43:25.000000000","message":"Yeah I agree. We may see this case for example when an instance is booted from a volume and its hypervisor is re-installed for some reason. I\u0027ve added explanation about that scenario.","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"148b4f7038f6ab1f9647eeb9f1bf777addbb83fe","unresolved":true,"context_lines":[{"line_number":113,"context_line":" - Rebuild"},{"line_number":114,"context_line":" - Shelve"},{"line_number":115,"context_line":" - Resize or cold migration"},{"line_number":116,"context_line":" - Evacuate"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Performance Impact"},{"line_number":119,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5068f507_97d46a39","line":116,"updated":"2025-11-19 13:20:10.000000000","message":"- Start, when the domain definition does not exists on the hypervisor","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5e8ae098959d45e765fef2bfa11cb71d37f3518","unresolved":false,"context_lines":[{"line_number":113,"context_line":" - Rebuild"},{"line_number":114,"context_line":" - Shelve"},{"line_number":115,"context_line":" - Resize or cold migration"},{"line_number":116,"context_line":" - Evacuate"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Performance Impact"},{"line_number":119,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"748576c0_74e83898","line":116,"in_reply_to":"5068f507_97d46a39","updated":"2025-11-19 15:43:25.000000000","message":"Done","commit_id":"53d24eaa9851d0c803a16945efeee4ef04f895f6"},{"author":{"_account_id":35307,"name":"Taketani Ryo","email":"taketani.ryo@fujitsu.com","username":"r-taketn0517"},"change_message_id":"340b66d78a3bd849f0cb64b92125cb9d449ea85a","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-firmware-auto-selection"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Livirt introduced its built-in firmware auto-selection for UEFI firmware, which"},{"line_number":14,"context_line":"automatically fills paths for CODE file and VAR file of UEFI firmware files,"},{"line_number":15,"context_line":"according to the requested features. This feature is more sophisticated and"},{"line_number":16,"context_line":"is capable to detect a few new flags recently introduced, like amd-sev or"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6c9e1283_cd6ea69d","line":13,"updated":"2025-11-21 07:18:41.000000000","message":"typo: Libvirt","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-firmware-auto-selection"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Livirt introduced its built-in firmware auto-selection for UEFI firmware, which"},{"line_number":14,"context_line":"automatically fills paths for CODE file and VAR file of UEFI firmware files,"},{"line_number":15,"context_line":"according to the requested features. This feature is more sophisticated and"},{"line_number":16,"context_line":"is capable to detect a few new flags recently introduced, like amd-sev or"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fbf03754_2b20e679","line":13,"in_reply_to":"6c9e1283_cd6ea69d","updated":"2025-11-25 15:20:27.000000000","message":"Done","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":true,"context_lines":[{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Recent libvirt is capable to select the appropriate firmware files for domains"},{"line_number":27,"context_line":"using UEFI boot, according to the requested features such as;"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"* secure boot"},{"line_number":30,"context_line":"* amd-sev/amd-sev-es/amd-sev-snp"}],"source_content_type":"text/x-rst","patch_set":4,"id":"47f19c1e_75e034a4","line":27,"range":{"start_line":27,"start_character":60,"end_line":27,"end_character":61},"updated":"2025-11-25 14:58:16.000000000","message":"typo \u0027;\u0027 instead of \u0027:\u0027","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Recent libvirt is capable to select the appropriate firmware files for domains"},{"line_number":27,"context_line":"using UEFI boot, according to the requested features such as;"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"* secure boot"},{"line_number":30,"context_line":"* amd-sev/amd-sev-es/amd-sev-snp"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e641dbd8_87ee2cdc","line":27,"range":{"start_line":27,"start_character":60,"end_line":27,"end_character":61},"in_reply_to":"47f19c1e_75e034a4","updated":"2025-11-25 15:20:27.000000000","message":"Done","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":true,"context_lines":[{"line_number":38,"context_line":"UEFI boot, libvirt skips its auto-selection feature and use the specified"},{"line_number":39,"context_line":"files accordingly. However the existing logic in nova only considers"},{"line_number":40,"context_line":"the secure-boot flag, so it is not able to select appropriate firmware for"},{"line_number":41,"context_line":"the other featurs. As a result, an instance with additional features may be"},{"line_number":42,"context_line":"launched with a wrong firmware file. One example is stateless firmware, for"},{"line_number":43,"context_line":"which a firmware file with \"stateless\" flag should be used, but the current"},{"line_number":44,"context_line":"nova may not consider this flag and may launch instances with a CODE file,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fe4eb52_e8178e44","line":41,"range":{"start_line":41,"start_character":10,"end_line":41,"end_character":17},"updated":"2025-11-25 14:58:16.000000000","message":"typo \u0027features\"","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"UEFI boot, libvirt skips its auto-selection feature and use the specified"},{"line_number":39,"context_line":"files accordingly. However the existing logic in nova only considers"},{"line_number":40,"context_line":"the secure-boot flag, so it is not able to select appropriate firmware for"},{"line_number":41,"context_line":"the other featurs. As a result, an instance with additional features may be"},{"line_number":42,"context_line":"launched with a wrong firmware file. One example is stateless firmware, for"},{"line_number":43,"context_line":"which a firmware file with \"stateless\" flag should be used, but the current"},{"line_number":44,"context_line":"nova may not consider this flag and may launch instances with a CODE file,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c45535f9_877bf027","line":41,"range":{"start_line":41,"start_character":10,"end_line":41,"end_character":17},"in_reply_to":"5fe4eb52_e8178e44","updated":"2025-11-25 15:20:27.000000000","message":"Done","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":true,"context_lines":[{"line_number":43,"context_line":"which a firmware file with \"stateless\" flag should be used, but the current"},{"line_number":44,"context_line":"nova may not consider this flag and may launch instances with a CODE file,"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"which has non-zero VAR file accosicated."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"In addition to the new feature flags, recent QEMU packages introduced the new"},{"line_number":49,"context_line":"ROM type firmwares. Libvirt can recognize these, but nova is not able to handle"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e9c31f9a_3cb44359","line":46,"range":{"start_line":46,"start_character":28,"end_line":46,"end_character":39},"updated":"2025-11-25 14:58:16.000000000","message":"I guess associated ?","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"which a firmware file with \"stateless\" flag should be used, but the current"},{"line_number":44,"context_line":"nova may not consider this flag and may launch instances with a CODE file,"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"which has non-zero VAR file accosicated."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"In addition to the new feature flags, recent QEMU packages introduced the new"},{"line_number":49,"context_line":"ROM type firmwares. Libvirt can recognize these, but nova is not able to handle"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a6d83990_ab65c0c6","line":46,"range":{"start_line":46,"start_character":28,"end_line":46,"end_character":39},"in_reply_to":"e9c31f9a_3cb44359","updated":"2025-11-25 15:20:27.000000000","message":"Yes. Done.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":35307,"name":"Taketani Ryo","email":"taketani.ryo@fujitsu.com","username":"r-taketn0517"},"change_message_id":"340b66d78a3bd849f0cb64b92125cb9d449ea85a","unresolved":true,"context_lines":[{"line_number":63,"context_line":"Proposed change"},{"line_number":64,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"We propose the following changes in the way guest XML is generared by libvirt"},{"line_number":67,"context_line":"driver, so that firmware files are selected by libvirt according to"},{"line_number":68,"context_line":"the requested features."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Stop explicitly passing paths for code file and var file when defining"},{"line_number":71,"context_line":"  a domain."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ca9a7faa_25f60676","line":68,"range":{"start_line":66,"start_character":1,"end_line":68,"end_character":23},"updated":"2025-11-21 07:18:41.000000000","message":"Based on the libvirt specification[1] and code[2], the condition for enabling AutoSelection is setting `\u003cos firmware\u003d\u0027efi\u0027/\u0027bios\u0027\u003e`\n\n\n[1] https://libvirt.org/formatdomain.html#bios-bootloader\n[2] https://github.com/libvirt/libvirt/blob/f1c8c9a1e81f477f494859eeafddd03a0296b2c0/src/qemu/qemu_firmware.c#L1860\n\nNova currently lacks the logic to specify `\u003cos firmware\u003d\u003e` when creating a new VM. Would this change enable Nova to specify `\u003cos firmware\u003d\u003e` during new VM creation?","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec719caebccfe04745d9d428291ce2468fc0c408","unresolved":false,"context_lines":[{"line_number":63,"context_line":"Proposed change"},{"line_number":64,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"We propose the following changes in the way guest XML is generared by libvirt"},{"line_number":67,"context_line":"driver, so that firmware files are selected by libvirt according to"},{"line_number":68,"context_line":"the requested features."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Stop explicitly passing paths for code file and var file when defining"},{"line_number":71,"context_line":"  a domain."}],"source_content_type":"text/x-rst","patch_set":4,"id":"e7f4db9d_be9983a3","line":68,"range":{"start_line":66,"start_character":1,"end_line":68,"end_character":23},"in_reply_to":"87cdc215_2f06eaff","updated":"2025-11-25 16:19:32.000000000","message":"I\u0027ve added a few examples to describe how the generated XMLs differ from current ones.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":true,"context_lines":[{"line_number":63,"context_line":"Proposed change"},{"line_number":64,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"We propose the following changes in the way guest XML is generared by libvirt"},{"line_number":67,"context_line":"driver, so that firmware files are selected by libvirt according to"},{"line_number":68,"context_line":"the requested features."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Stop explicitly passing paths for code file and var file when defining"},{"line_number":71,"context_line":"  a domain."}],"source_content_type":"text/x-rst","patch_set":4,"id":"87cdc215_2f06eaff","line":68,"range":{"start_line":66,"start_character":1,"end_line":68,"end_character":23},"in_reply_to":"ca9a7faa_25f60676","updated":"2025-11-25 14:58:16.000000000","message":"It would be great to add XML examples in the spec.\nTo my mind, that really helps to identify the required changes accurately.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"24e4946c_0522d2cf","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"updated":"2025-11-25 14:58:16.000000000","message":"As hard reboot is rebuilding the xml, do we really need to specify in this case.\nI would do the same as VM creation, I mean use autodetect.\nAnd I think it also avoid the edge case identified by Gibi.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"53d6a44f8f25ca91a02b5069efc6589038193bea","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e8e74f8d_5ccd62d6","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"02c85c4b_4b0632c5","updated":"2025-11-26 17:24:06.000000000","message":"The main concern with re-selecting the firmware is the potential change of firmware (due to difference between legacy logic within nova and the one in libvirt).\n\nI wonder if @dms@danplanet.com can chime in here to share his thoughts again ?","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b18e8452_376f72d5","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"24e4946c_0522d2cf","updated":"2025-11-25 15:20:27.000000000","message":"This is based on the suggestion by Dan during the PTG which we agreed with.\n\nHowever based on the fact that we have a few other cases like cold migration which needs reset I\u0027m also ok with removing this treatment.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d18c3302db532dac07b6e7680e2f69eb6d014ee1","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"322c24a6_fa36ee61","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"9791dea3_b415e351","updated":"2025-12-01 16:41:56.000000000","message":"a falbackk to readign the xml and preserviing it if it exsti is ok but we shoudl not error if it was missing.\n\nthere are case where we can loose it today if we hit some erro conditions so using it if aviabel would be ok but shoudl not cause an error if the doamin is missing.\n\nan example is if we hit an error after we have undefiend the xml in hard reboot and before we define it again.\n\ni think given nova can already select a diffent image on hard reboot i woudl not consider this to be a regression or change in behvior.\n\nit can change on shelve/unshlve or cold migrate as well today.\nwe effectivly do not provide any abi/version guarentes today and that important for security patching.\n\nhard reboot is the primary way we regenerate the xml inplace today with a move operation or distuctive  operation like rebuld. we even went as far as healing the bdms and allowing cinder block devices to be removed if the volume has been incorrectly deleted via cinder.\n\nso im in favor of option b never use the value form the xml but i dont object to option a so long as its best effort and not part of our api gurentees.\n\nThis is an internal implementation detail of nova and the libvirt driver.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d3bc845f69bdde36eb166edfa378326468586edb","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"02c85c4b_4b0632c5","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"b18e8452_376f72d5","updated":"2025-11-25 16:57:50.000000000","message":"I don\u0027t see the benefits here. I have the feeling that it makes things more complex \nBut as Dan suggested, maybe there is a good reason to do it that I don\u0027t know ?","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"386faf504f2f754a99d3962e137f8bf1085fdbc5","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d98d709e_7bfa1611","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"caef0db0_405af2a2","updated":"2025-11-27 15:27:33.000000000","message":"\u003e Expectation around hard reboot\n\nI tend to agree with this, given a few existing facts like pci address assignment messed up by hard-reboot but I know people don\u0027t like such.\n\n\n\u003e Firmware lifecycle considerations (security or distro changes)\n\nI noticed that this is a valid concern. With legacy nova\u0027s logic nova always checks firmware descriptors to select an available firmware, so it was able to switch to a new firmware file if an old one dissapears, for example due to package update, but we may loose that capability. We can technically implement a logic to detect such cases but it introduces additional complexity.\n\nNote that if we accept hard-reboot reselecting the firmware that means we can accept change in live migration. Firmware data is loaded onto guest memory when a guest is launched, and is not re-loaded during live migration. So different path in XML generated during migration does not immediately cause firmware switch. A different firmware is loaded when the instance is hard-rebooted or stopped and then started after live migration.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7159ecbe9e9c24e3f3013199e0bc3ce2fa3d342d","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"caef0db0_405af2a2","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"d4a2ae15_71051b0c","updated":"2025-11-27 15:09:23.000000000","message":"I’m personally leaning toward option b) for a couple of reasons:\n\n- Expectation around hard reboot\nWhen performing a hard reboot, I tend to expect Nova to regenerate the domain XML from scratch rather than relying on info from a previous XML. From a user perspective, a hard reboot is already a disruptive operation, so it feels acceptable that the VM might pick up whatever is part of the current configuration logic.\n\n- Firmware lifecycle considerations (security or distro changes)\nI’m also not too surprised by the idea that firmware might change during a hard reboot. It\u0027s easy to imagine a scenario where a firmware update is pushed for security reasons, and the older (insecure) firmware is no longer available.\nSimilarly, if the underlying distro evolves (e.g., the host OS upgrades and certain firmware paths or files are renamed, replaced, or removed), the previous firmware referenced in the old XML may no longer exist.\nIn both cases, it seems safer for Nova to select the currently available firmware rather than trying to reuse an outdated reference that may lead to a dangling path or an unusable configuration.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2541b4f30c14bb1a6192cecef56705e50958c815","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9791dea3_b415e351","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"d98d709e_7bfa1611","updated":"2025-11-27 15:45:49.000000000","message":"\u003e \u003e Firmware lifecycle considerations (security or distro changes)\n\u003e \n\u003e I noticed that this is a valid concern. With legacy nova\u0027s logic nova always checks firmware descriptors to select an available firmware, so it was able to switch to a new firmware file if an old one dissapears, for example due to package update, but we may loose that capability. We can technically implement a logic to detect such cases but it introduces additional complexity.\n\nThis reminds me of the fact that nova already can select a different firmware during hard reboot while when firmware files available at host are changed.\n\nSo the main point is whether we want additional treatment for this specific feature implementation in nova. Note that even if we start relying on libvirt for firmware selection, as far as I\u0027ve checked with firmware descriptor files in recent qemu packages, the same firmware files may be selected even if we start using libvirt\u0027s detection, for generic UEFI or Secure boot.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3096b6e39dd87254177745274d5aa77a020eb3e5","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ea4861cf_a8614aaf","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"e8e74f8d_5ccd62d6","updated":"2025-11-26 18:01:20.000000000","message":"The benefit here is minimal possible change to an instance that is working. We should, IMHO, only move to the new firmware files if we are recreating the guest (i.e. rebuild, resize, migrate, etc). Since hard-reboot is the core of a bunch of our other lifecycle operations (i.e. start/stop and cold reboot) hard reboot is the important piece. Never would I want to stop my instance and then restart it and find that it\u0027s broken in some subtle way because new firmware was chosen. If I\u0027m doing a resize or rebuild then I\u0027m already primed for things being different.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5453ef235b36d49250386e81fb1631005b7e5ba2","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  the domain xml and explitly pass these to the newly generated XML file, so"},{"line_number":75,"context_line":"  that firmware files are not re-selected during these operations."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"  * hard-reboot (and start)"},{"line_number":78,"context_line":"  * live migration"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d4a2ae15_71051b0c","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":27},"in_reply_to":"ea4861cf_a8614aaf","updated":"2025-11-27 13:01:46.000000000","message":"I\u0027m OK either way about hard reboot if it is documented to the end user when to expect a firmware change and when it is guaranteed it does not changes.\n* a) use the value from the XML when available and use autoselect when the XML is not available\n* b) never user the value from the XML.\n\nThe option a) Is safer for the user but harder to define when there will be a potential firmware change. The option b) causes more firmware changes but it is a lot clearer to define what to expect from nova. \n\nMy only point here was we cannot promise the hard reboot will never do a firmware change as we cannot assume the XML is always available during hard reboot.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":true,"context_lines":[{"line_number":143,"context_line":"Upgrade impact"},{"line_number":144,"context_line":"--------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* As is described as an end user impact, instances may be launched with"},{"line_number":147,"context_line":"  a different firmware file, when it is being launched by a new libvirt"},{"line_number":148,"context_line":"  driver."},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"22ff89e3_6783b348","line":146,"range":{"start_line":146,"start_character":2,"end_line":146,"end_character":39},"updated":"2025-11-25 14:58:16.000000000","message":"*As described in the end-user impact section","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":143,"context_line":"Upgrade impact"},{"line_number":144,"context_line":"--------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* As is described as an end user impact, instances may be launched with"},{"line_number":147,"context_line":"  a different firmware file, when it is being launched by a new libvirt"},{"line_number":148,"context_line":"  driver."},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"de22d7fb_afa5acd8","line":146,"range":{"start_line":146,"start_character":2,"end_line":146,"end_character":39},"in_reply_to":"22ff89e3_6783b348","updated":"2025-11-25 15:20:27.000000000","message":"Done","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":35307,"name":"Taketani Ryo","email":"taketani.ryo@fujitsu.com","username":"r-taketn0517"},"change_message_id":"340b66d78a3bd849f0cb64b92125cb9d449ea85a","unresolved":true,"context_lines":[{"line_number":168,"context_line":"Work Items"},{"line_number":169,"context_line":"----------"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"#. Add detection of used firmeare files from existing libvirt XML"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"#. Update generation of XML file by libvirt driver to fill firmware file"},{"line_number":174,"context_line":"   paths only when these are explicitly given."}],"source_content_type":"text/x-rst","patch_set":4,"id":"c466d9ba_e8216f11","line":171,"updated":"2025-11-21 07:18:41.000000000","message":"typo: firmware","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Work Items"},{"line_number":169,"context_line":"----------"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"#. Add detection of used firmeare files from existing libvirt XML"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"#. Update generation of XML file by libvirt driver to fill firmware file"},{"line_number":174,"context_line":"   paths only when these are explicitly given."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ffcbff9_97c67bf0","line":171,"in_reply_to":"c466d9ba_e8216f11","updated":"2025-11-25 15:20:27.000000000","message":"Done","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":35307,"name":"Taketani Ryo","email":"taketani.ryo@fujitsu.com","username":"r-taketn0517"},"change_message_id":"340b66d78a3bd849f0cb64b92125cb9d449ea85a","unresolved":true,"context_lines":[{"line_number":176,"context_line":"#. Update live migration and hard reboot to pass the firmware files currently"},{"line_number":177,"context_line":"   used, when generating a new XML file."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Unit tests anre functional tests should be added according to new logic."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"eb7c66a5_8c71bd22","line":179,"updated":"2025-11-21 07:18:41.000000000","message":"typo: and","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":176,"context_line":"#. Update live migration and hard reboot to pass the firmware files currently"},{"line_number":177,"context_line":"   used, when generating a new XML file."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Unit tests anre functional tests should be added according to new logic."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"639cb35f_afe9cbff","line":179,"in_reply_to":"eb7c66a5_8c71bd22","updated":"2025-11-25 15:20:27.000000000","message":"Done","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4b679df1c337cc05b4c0c60028d24a1038e9e275","unresolved":true,"context_lines":[{"line_number":200,"context_line":"- Simplified XML file passed during instance XML generation, which does not"},{"line_number":201,"context_line":"  contain explicit firmware file paths"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"- XML file generated by hard-reboot or live migration should contain explicit"},{"line_number":204,"context_line":"  firmware file paths, according to the ones in the existing domain XML."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"For secure boot and stateless firmware, new scenario tests may be added to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"487a39de_240b1684","line":203,"range":{"start_line":203,"start_character":24,"end_line":203,"end_character":35},"updated":"2025-11-25 14:58:16.000000000","message":"Cf question about hard rebbot (start) above (line 77).","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e84a779d4475ace2d45d1a2ed8f3892bcd92168a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"- Simplified XML file passed during instance XML generation, which does not"},{"line_number":201,"context_line":"  contain explicit firmware file paths"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"- XML file generated by hard-reboot or live migration should contain explicit"},{"line_number":204,"context_line":"  firmware file paths, according to the ones in the existing domain XML."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"For secure boot and stateless firmware, new scenario tests may be added to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"221fb303_aa725d82","line":203,"range":{"start_line":203,"start_character":24,"end_line":203,"end_character":35},"in_reply_to":"487a39de_240b1684","updated":"2025-11-25 15:20:27.000000000","message":"Ack. Let\u0027s continue the discussion in the comment above.","commit_id":"5d1eeb3080352d8b7f22f5664db53812156e0130"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2b4303948c534b3aa26c1210f3409cedd61ee6e4","unresolved":true,"context_lines":[{"line_number":42,"context_line":"launched with a wrong firmware file. One example is stateless firmware, for"},{"line_number":43,"context_line":"which a firmware file with \"stateless\" flag should be used, but the current"},{"line_number":44,"context_line":"nova may not consider this flag and may launch instances with a CODE file,"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"which has non-zero VAR file associated."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"In addition to the new feature flags, recent QEMU packages introduced the new"}],"source_content_type":"text/x-rst","patch_set":8,"id":"f7ecf7b7_90e01865","line":45,"updated":"2025-11-27 16:06:19.000000000","message":"nit: empty line","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2b4303948c534b3aa26c1210f3409cedd61ee6e4","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        \u003cboot dev\u003d\u0027hd\u0027/\u003e"},{"line_number":100,"context_line":"        \u003csmbios mode\u003d\u0027sysinfo\u0027/\u003e"},{"line_number":101,"context_line":"      \u003c/os\u003e"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    - Note that the ``firmware\u003d\u0027efi\u0027`` is the key to tell libvirt detect"},{"line_number":104,"context_line":"      the firmware file paths."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ca16aa33_f0fc25d4","line":102,"updated":"2025-11-27 16:06:19.000000000","message":"that\u0027s what we agreed at the PTG, lgtm","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2b4303948c534b3aa26c1210f3409cedd61ee6e4","unresolved":false,"context_lines":[{"line_number":117,"context_line":"          \u003c/firmware\u003e"},{"line_number":118,"context_line":"          \u003cboot dev\u003d\u0027hd\u0027/\u003e"},{"line_number":119,"context_line":"          \u003csmbios mode\u003d\u0027sysinfo\u0027/\u003e"},{"line_number":120,"context_line":"        \u003c/os\u003e"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"  - However, libvirt does not require these firmware feature elements for"},{"line_number":123,"context_line":"    stateless firmware (libvirt reads the stateless property in the loader"}],"source_content_type":"text/x-rst","patch_set":8,"id":"89b2481d_eea0e6a8","line":120,"updated":"2025-11-27 16:06:19.000000000","message":"thanks for the upgrade path.","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2b4303948c534b3aa26c1210f3409cedd61ee6e4","unresolved":true,"context_lines":[{"line_number":143,"context_line":"  files are not re-selected during these operations."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  - hard-reboot (and start)"},{"line_number":146,"context_line":"  - live migration"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"  .. note::"},{"line_number":149,"context_line":"     It\u0027s possible that the domain xml does not exist when an instance is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"8aff8223_7e334055","line":146,"updated":"2025-11-27 16:06:19.000000000","message":"Agreed, that\u0027s what we discussed at the PTG (and I\u0027m on the same side than Dan, let\u0027s try to keep the existing support for existing instances)","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d18c3302db532dac07b6e7680e2f69eb6d014ee1","unresolved":true,"context_lines":[{"line_number":143,"context_line":"  files are not re-selected during these operations."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  - hard-reboot (and start)"},{"line_number":146,"context_line":"  - live migration"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"  .. note::"},{"line_number":149,"context_line":"     It\u0027s possible that the domain xml does not exist when an instance is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"8d99cfc6_9c925440","line":146,"in_reply_to":"8aff8223_7e334055","updated":"2025-12-01 16:41:56.000000000","message":"so im not sure i agree with either of these being specil in this case\n\ni can see the argument however there si no guarnetee that the file path woudl be the saem acorss disto releases for example.\n\nthey typically would be but if libvirt will accpet the new xml defintioin on live migrate then that eliminates a potical failure mode where the ovmf package is not identical in both cases.\n\ni also am not sure i agree with including hard-reboot here as i think we should enable the new funcitonality in hard reboot.\n\ni understand the reasons not to so im not -1 on this propsoal but this seams suboptimal to me.\n\nits addign complexity to the implemation that im not conviced is adding value and may actually complicate upgrades and security patching.\n\nso i would prefer not to ever read the existing instnace xml.\n\nperhaps we shoudl approve the overall direction and revisit this in the implementation review?","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d18c3302db532dac07b6e7680e2f69eb6d014ee1","unresolved":true,"context_lines":[{"line_number":149,"context_line":"     It\u0027s possible that the domain xml does not exist when an instance is"},{"line_number":150,"context_line":"     started (for example if the instance is booted from a volume and its host"},{"line_number":151,"context_line":"     is reinstalled). In that case xml is generated from scratch and firmware"},{"line_number":152,"context_line":"     file paths may be changed after the operation."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Alternatives"},{"line_number":155,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"065d2e15_32196eb6","line":152,"updated":"2025-12-01 16:41:56.000000000","message":"+1","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2b4303948c534b3aa26c1210f3409cedd61ee6e4","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"An alternative approach is to implement the same auto selection logic in nova,"},{"line_number":158,"context_line":"but this requires effort to keep the implementation consistent with libvirt."},{"line_number":159,"context_line":"This causes concern with future code maintenance for no large benefit."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Data model impact"},{"line_number":162,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d3fb9afb_9a8760fb","line":159,"updated":"2025-11-27 16:06:19.000000000","message":"+100","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d18c3302db532dac07b6e7680e2f69eb6d014ee1","unresolved":true,"context_lines":[{"line_number":189,"context_line":" - Rebuild"},{"line_number":190,"context_line":" - Shelve"},{"line_number":191,"context_line":" - Resize or cold migration"},{"line_number":192,"context_line":" - Evacuate"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Performance Impact"},{"line_number":195,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"242c0cb9_c49a01c8","line":192,"updated":"2025-12-01 16:41:56.000000000","message":"i belive hard-reboot shoudl be in this list.\ni wont block on it if its not but i bleive it shoudl be.","commit_id":"51d7e3691168ce0b818037b57447e981b51284e0"}]}
