)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Also added `hw:viommu_aw_bits` property to extra_specs."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] https://www.berrange.com/posts/2017/02/16/setting-up-a-nested-kvm-guest-for-developing-testing-pci-device-assignment-with-numa/"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ief9c550292788160433a28a7a1c36ba38a6bc849"},{"line_number":19,"context_line":"Signed-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"8261b7b6_4f02e438","line":17,"updated":"2022-04-21 18:03:43.000000000","message":"so we have talked about this before but ill just recored this for others.\n\nthis need a blueprint and or spec depending on scope.\n\nit proably shoudl have a spec but if we keep this mimial and do not seperate out the viommu groups then im ok with a specless bluepirnt.\n\nim not a fan of exposeing hw:viommu_aw_bits` \n\nand i think we need to expose hw:viommu_model instead as noted else wehere.\nso -1 for lack of paper work and some design issues but over all im not against this.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Also added `hw:viommu_aw_bits` property to extra_specs."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] https://www.berrange.com/posts/2017/02/16/setting-up-a-nested-kvm-guest-for-developing-testing-pci-device-assignment-with-numa/"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ief9c550292788160433a28a7a1c36ba38a6bc849"},{"line_number":19,"context_line":"Signed-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"dae11c54_718488a0","line":17,"in_reply_to":"8261b7b6_4f02e438","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"aef187c2c67e0637a15db5731fa049416e3bc7e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4d949361_123f7259","updated":"2022-04-15 02:27:24.000000000","message":"This is awesome.  We\u0027d like to have access to the `aw_bits` property (introduced in libvirt 6.5.0): https://libvirt.org/formatdomain.html#iommu-devices\n\nCould we pick up this patch (if you don\u0027t have cycles to run that) or you could help out with that?","commit_id":"0eddd42688efca1b264b66574950944c8e980cf2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb354d4c69d66c2e1833c86e8bee73f6b1031011","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8886d49d_a131743a","in_reply_to":"4d949361_123f7259","updated":"2022-04-19 11:08:52.000000000","message":"Go for it","commit_id":"0eddd42688efca1b264b66574950944c8e980cf2"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"7d601e1a662729ef48e40a9ed140e234bb3346f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5ee4ad22_3e7c84e3","updated":"2022-04-19 11:32:40.000000000","message":"I think it\u0027s better to probably pull this from the flavour extra_specs instead that way the aw_bits can be modified to needs.\n\nalso, I think the failure was unrelated, seems to be a guest VM crash in CI\n\nrecheck","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"13abfb8411934fca5ad6abfd892ac74acf4a5850","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e06192be_139fd5b8","in_reply_to":"5ee4ad22_3e7c84e3","updated":"2022-04-19 13:07:29.000000000","message":"Agree, will update ASAP","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"a9bbe8e75182195661ae4cdce33c786a67e67fde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d27fee9f_9cb72acf","updated":"2022-04-20 14:25:27.000000000","message":"I think this is the last iteration of what my thoughts are about this","commit_id":"737ea7564ea72f0095c717fa2f33617c68c6174f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0143894bf087119bbd59180584fb72a212dbb378","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3b3d16eb_7d714fa4","updated":"2022-04-26 17:01:33.000000000","message":"I don\u0027t like to use the procedural hammer for this change, but I rather wanted to signal we need to agreed on some direction in the design we\u0027d like to have for managing such vIOMMU devices. This necessary debate has to either come in a meeting if we want to see whether this can be a specless blueprint, or in a spec if we decide that there are enough controversial things we need to settle on.\n\nAs a conclusion, I\u0027d really want to see someone taking care of this feature request and propose a blueprint for it, and then ping me (bauzas) on IRC so we could discuss on the necessary paperwork, which shouldn\u0027t be a blocker if we come up with a direction quickly.\nAlso dropping the review-prio flag as such change can\u0027t be approved without such design stage.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"56da8d03_da192d53","updated":"2022-04-21 18:03:43.000000000","message":"i proably shoudl have -2\u0027d this for lack of a spec but lets dissus that in the next team meeting\nat a minium we need a specless blueprint for this.\n\ndeisgin issue noted inline.\noverall im ok with this limited feature as apparently having the iommu is enough for some accleartor to work with pci passthouhg.\n\nit wont help you use dpdk in the guest and even with the seperate iommu groups you will not be abel to sriov to subdevide a PF in the guest because that is disabled by qemu explictly but it has some limtied useses that operators might like to have so im supportive in general.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9a8ae34d_d26532b0","updated":"2022-04-25 14:58:41.000000000","message":"thanks for the thorough review, I think Rico should be able to pick up the rest of those changes now","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"6cde25f4c4901758ce27ba3a064d4868df94cb6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"702c039f_cb0718d3","updated":"2022-04-20 17:24:29.000000000","message":"this lgtm at this point","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4dd2d17a_f72a47fa","in_reply_to":"9a8ae34d_d26532b0","updated":"2022-06-01 12:40:21.000000000","message":"For sure!:)","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7d95a23eee7a2db0262f8833120a494e5521f0d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"30e1bd81_b4c79f81","updated":"2022-06-02 17:23:05.000000000","message":"Removing the procedural hammer as the blueprint is created and the spec [1] is merged","commit_id":"85b61924fe25bcc431c0646f31992f0c22ff047b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7159d6ae1724484a77150216c6aa5cb823f31b8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7527f78d_5e52033b","updated":"2022-06-02 17:23:28.000000000","message":"[1] https://review.opendev.org/c/openstack/nova-specs/+/840310 (sorry I submitted before)","commit_id":"85b61924fe25bcc431c0646f31992f0c22ff047b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"0ccd11fb_29eaa60a","updated":"2022-08-18 08:14:28.000000000","message":"I have couple of comments inline","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"882e2a12_4a0d7153","updated":"2022-08-25 12:35:18.000000000","message":"this is very close to being ready.\n\ncan you add the 2 new expctions InvalidIOMMUArchitecure\nand InvalidIOMMUMachineType.\n\n\nthat is the reason for the -1 otherwise im overall happy with this patch.\n","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"15dc9c5b_8e8c61d2","updated":"2022-08-31 16:57:16.000000000","message":"I only have some small points to be asked to be changed but the overall patch seems good to me.\nIf you have time today, please update it before tomorrow\u0027s feature freeze.\n\nTBC, I\u0027m not asking you to remove the unnecessary modifications back to a previous state, I\u0027m just asking you to modify some documentation.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"71f15c265530747a25858609baa4348d13c97d75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"02e35720_65c97ced","updated":"2022-08-31 18:12:21.000000000","message":"i think the nits could be adresseed in a followup but i think we should only merge this once the trait patch afterword is ready so im going to review that now.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5fea6daa4675e8239882004f27842403575276e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"879698f7_e0bc1774","updated":"2022-08-31 18:16:06.000000000","message":"the triats repoting is still incorrect","commit_id":"ac8c8376a28f77b58be93191281c1f9b90160b85"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00d66c45ad9b1020afcbe3c7c7490037336da8c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"a530001f_b8b46ee4","updated":"2022-09-01 13:35:06.000000000","message":"All said in the comment. Thanks for the hard work on this feature, much appreciated.","commit_id":"14e3b352c24b2a1fe54ba13a733cf6e7989215cc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2ea8af4ba9ade2605997a5ef71e61eabd831cec3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"35feb58d_a44ffe65","updated":"2022-09-01 08:05:05.000000000","message":"I\u0027m happy with this change as it is, but Sean raised the point we should also review https://review.opendev.org/c/openstack/nova/+/844507/ and make sure both are OK before we merge.\n\nThat said, the other change has a -2 from Sean, please do what he asked.","commit_id":"14e3b352c24b2a1fe54ba13a733cf6e7989215cc"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"079dbf089a51d609c8227e6fc2cc16673fa200bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"ea8a3321_625ef069","updated":"2022-09-01 15:49:35.000000000","message":"recheck on timeout issue","commit_id":"14e3b352c24b2a1fe54ba13a733cf6e7989215cc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00d66c45ad9b1020afcbe3c7c7490037336da8c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"2446628b_75e79746","in_reply_to":"35feb58d_a44ffe65","updated":"2022-09-01 13:35:06.000000000","message":"\u003e I\u0027m happy with this change as it is, but Sean raised the point we should also review https://review.opendev.org/c/openstack/nova/+/844507/ and make sure both are OK before we merge.\n\u003e \n\u003e That said, the other change has a -2 from Sean, please do what he asked.\n\nSean is now happy with the other change, as do I, so... +2.","commit_id":"14e3b352c24b2a1fe54ba13a733cf6e7989215cc"}],"doc/source/admin/pci-passthrough.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":400,"context_line":"Virtual IOMMU support"},{"line_number":401,"context_line":"---------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"With provide :nova:extra-spec:`hw:viommu_model` flavor extra spec or equivalent"},{"line_number":404,"context_line":"image metadata property `hw_viommu_model` and with the guest CPU architecture"},{"line_number":405,"context_line":"and OS allows, we can enable viommu in libvirt driver."},{"line_number":406,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"cc354a5b_50ca616d","line":403,"range":{"start_line":403,"start_character":5,"end_line":403,"end_character":12},"updated":"2022-08-31 16:57:16.000000000","message":"just a super small nit: \u0027provided\u0027","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":400,"context_line":"Virtual IOMMU support"},{"line_number":401,"context_line":"---------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"With provide :nova:extra-spec:`hw:viommu_model` flavor extra spec or equivalent"},{"line_number":404,"context_line":"image metadata property `hw_viommu_model` and with the guest CPU architecture"},{"line_number":405,"context_line":"and OS allows, we can enable viommu in libvirt driver."},{"line_number":406,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"ba014819_4a53e1a4","line":403,"range":{"start_line":403,"start_character":5,"end_line":403,"end_character":12},"in_reply_to":"cc354a5b_50ca616d","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"71f15c265530747a25858609baa4348d13c97d75","unresolved":true,"context_lines":[{"line_number":400,"context_line":"Virtual IOMMU support"},{"line_number":401,"context_line":"---------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"With provide :nova:extra-spec:`hw:viommu_model` flavor extra spec or equivalent"},{"line_number":404,"context_line":"image metadata property `hw_viommu_model` and with the guest CPU architecture"},{"line_number":405,"context_line":"and OS allows, we can enable viommu in libvirt driver."},{"line_number":406,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"ca5fb488_d5a745b7","line":403,"range":{"start_line":403,"start_character":5,"end_line":403,"end_character":12},"in_reply_to":"cc354a5b_50ca616d","updated":"2022-08-31 18:12:21.000000000","message":"acttuly i would replace provide with \"the\"","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":401,"context_line":"---------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"With provide :nova:extra-spec:`hw:viommu_model` flavor extra spec or equivalent"},{"line_number":404,"context_line":"image metadata property `hw_viommu_model` and with the guest CPU architecture"},{"line_number":405,"context_line":"and OS allows, we can enable viommu in libvirt driver."},{"line_number":406,"context_line":""},{"line_number":407,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"e781c776_f44d0ff2","line":404,"range":{"start_line":404,"start_character":24,"end_line":404,"end_character":41},"updated":"2022-08-31 16:57:16.000000000","message":"double-ticks please:  ``hw_viommu_model``","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":401,"context_line":"---------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"With provide :nova:extra-spec:`hw:viommu_model` flavor extra spec or equivalent"},{"line_number":404,"context_line":"image metadata property `hw_viommu_model` and with the guest CPU architecture"},{"line_number":405,"context_line":"and OS allows, we can enable viommu in libvirt driver."},{"line_number":406,"context_line":""},{"line_number":407,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3392c688_95e75ef7","line":404,"range":{"start_line":404,"start_character":24,"end_line":404,"end_character":41},"in_reply_to":"e781c776_f44d0ff2","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":402,"context_line":""},{"line_number":403,"context_line":"With provide :nova:extra-spec:`hw:viommu_model` flavor extra spec or equivalent"},{"line_number":404,"context_line":"image metadata property `hw_viommu_model` and with the guest CPU architecture"},{"line_number":405,"context_line":"and OS allows, we can enable viommu in libvirt driver."},{"line_number":406,"context_line":""},{"line_number":407,"context_line":".. note::"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"699a5181_7e008c49","line":405,"range":{"start_line":405,"start_character":29,"end_line":405,"end_character":35},"updated":"2022-08-31 16:57:16.000000000","message":"nit: vIOMMU","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":402,"context_line":""},{"line_number":403,"context_line":"With provide :nova:extra-spec:`hw:viommu_model` flavor extra spec or equivalent"},{"line_number":404,"context_line":"image metadata property `hw_viommu_model` and with the guest CPU architecture"},{"line_number":405,"context_line":"and OS allows, we can enable viommu in libvirt driver."},{"line_number":406,"context_line":""},{"line_number":407,"context_line":".. note::"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"b98d865a_ae5c975a","line":405,"range":{"start_line":405,"start_character":29,"end_line":405,"end_character":35},"in_reply_to":"699a5181_7e008c49","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":409,"context_line":"    Enable vIOMMU might introduce significant performance overhead."},{"line_number":410,"context_line":"    You can see performance comparision table from"},{"line_number":411,"context_line":"    `AMD vIOMMU session on KVM Forum 2021`_."},{"line_number":412,"context_line":"    For above reason, vIOMMU should only be enable for workflow that require it."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. _`AMD vIOMMU session on KVM Forum 2021`: https://static.sched.com/hosted_files/kvmforum2021/da/vIOMMU%20KVM%20Forum%202021%20-%20v4.pdf"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"6581d142_0d114dac","line":412,"range":{"start_line":412,"start_character":44,"end_line":412,"end_character":50},"updated":"2022-08-31 16:57:16.000000000","message":"nit: enabled","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"71f15c265530747a25858609baa4348d13c97d75","unresolved":true,"context_lines":[{"line_number":409,"context_line":"    Enable vIOMMU might introduce significant performance overhead."},{"line_number":410,"context_line":"    You can see performance comparision table from"},{"line_number":411,"context_line":"    `AMD vIOMMU session on KVM Forum 2021`_."},{"line_number":412,"context_line":"    For above reason, vIOMMU should only be enable for workflow that require it."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. _`AMD vIOMMU session on KVM Forum 2021`: https://static.sched.com/hosted_files/kvmforum2021/da/vIOMMU%20KVM%20Forum%202021%20-%20v4.pdf"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"dd9b4f77_f50b21ea","line":412,"range":{"start_line":412,"start_character":4,"end_line":412,"end_character":13},"updated":"2022-08-31 18:12:21.000000000","message":"nit:For the above...","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    Enable vIOMMU might introduce significant performance overhead."},{"line_number":410,"context_line":"    You can see performance comparision table from"},{"line_number":411,"context_line":"    `AMD vIOMMU session on KVM Forum 2021`_."},{"line_number":412,"context_line":"    For above reason, vIOMMU should only be enable for workflow that require it."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. _`AMD vIOMMU session on KVM Forum 2021`: https://static.sched.com/hosted_files/kvmforum2021/da/vIOMMU%20KVM%20Forum%202021%20-%20v4.pdf"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"4e289a72_5e6c5173","line":412,"range":{"start_line":412,"start_character":44,"end_line":412,"end_character":50},"in_reply_to":"6581d142_0d114dac","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"3af7425e8a6782e8a31618ac261985476205f316","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    Enable vIOMMU might introduce significant performance overhead."},{"line_number":410,"context_line":"    You can see performance comparision table from"},{"line_number":411,"context_line":"    `AMD vIOMMU session on KVM Forum 2021`_."},{"line_number":412,"context_line":"    For above reason, vIOMMU should only be enable for workflow that require it."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. _`AMD vIOMMU session on KVM Forum 2021`: https://static.sched.com/hosted_files/kvmforum2021/da/vIOMMU%20KVM%20Forum%202021%20-%20v4.pdf"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"e6fddef2_2f0f8595","line":412,"range":{"start_line":412,"start_character":4,"end_line":412,"end_character":13},"in_reply_to":"dd9b4f77_f50b21ea","updated":"2022-08-31 20:29:34.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. _`AMD vIOMMU session on KVM Forum 2021`: https://static.sched.com/hosted_files/kvmforum2021/da/vIOMMU%20KVM%20Forum%202021%20-%20v4.pdf"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"Here are three possible values allowed for ``hw:viommu_model``"},{"line_number":417,"context_line":"(and ``hw_viommu_model``):"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"**virtio**"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3c2779c9_89ec2d7c","line":416,"range":{"start_line":416,"start_character":9,"end_line":416,"end_character":14},"updated":"2022-08-31 16:57:16.000000000","message":"not three, but rather four : virtio, smmuv3, intel and auto.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. _`AMD vIOMMU session on KVM Forum 2021`: https://static.sched.com/hosted_files/kvmforum2021/da/vIOMMU%20KVM%20Forum%202021%20-%20v4.pdf"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"Here are three possible values allowed for ``hw:viommu_model``"},{"line_number":417,"context_line":"(and ``hw_viommu_model``):"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"**virtio**"}],"source_content_type":"text/x-rst","patch_set":22,"id":"480f662a_ffee3b1f","line":416,"range":{"start_line":416,"start_character":9,"end_line":416,"end_character":14},"in_reply_to":"3c2779c9_89ec2d7c","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":431,"context_line":"For the viommu attributes:"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"* ``intremap``, ``caching_mode``, and ``iotlb``"},{"line_number":434,"context_line":"  option for viommu will direcly enabled."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"* ``eim`` will directly enabled if machine type is Q35."},{"line_number":437,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"b7d1a414_248fb14b","line":434,"updated":"2022-08-31 16:57:16.000000000","message":"option*s*","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":431,"context_line":"For the viommu attributes:"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"* ``intremap``, ``caching_mode``, and ``iotlb``"},{"line_number":434,"context_line":"  option for viommu will direcly enabled."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"* ``eim`` will directly enabled if machine type is Q35."},{"line_number":437,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"c3f3cbe1_6901e011","line":434,"range":{"start_line":434,"start_character":20,"end_line":434,"end_character":24},"updated":"2022-08-31 16:57:16.000000000","message":"will directly be enabled","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":431,"context_line":"For the viommu attributes:"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"* ``intremap``, ``caching_mode``, and ``iotlb``"},{"line_number":434,"context_line":"  option for viommu will direcly enabled."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"* ``eim`` will directly enabled if machine type is Q35."},{"line_number":437,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"e93ca091_00e856a4","line":434,"in_reply_to":"b7d1a414_248fb14b","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":431,"context_line":"For the viommu attributes:"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"* ``intremap``, ``caching_mode``, and ``iotlb``"},{"line_number":434,"context_line":"  option for viommu will direcly enabled."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"* ``eim`` will directly enabled if machine type is Q35."},{"line_number":437,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"f9727448_ad8c1e02","line":434,"range":{"start_line":434,"start_character":20,"end_line":434,"end_character":24},"in_reply_to":"c3f3cbe1_6901e011","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":434,"context_line":"  option for viommu will direcly enabled."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"* ``eim`` will directly enabled if machine type is Q35."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":".. note::"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    eim(Extended Interrupt Mode) attribute (with possible values on and off)"}],"source_content_type":"text/x-rst","patch_set":22,"id":"0d0cb8db_3f095e81","line":437,"updated":"2022-08-31 16:57:16.000000000","message":"you should maybe clarify those are driver attributes from libvirt and you could point out to the domain XML documentation https://libvirt.org/formatdomain.html#iommu-devices","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":434,"context_line":"  option for viommu will direcly enabled."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"* ``eim`` will directly enabled if machine type is Q35."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":".. note::"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    eim(Extended Interrupt Mode) attribute (with possible values on and off)"}],"source_content_type":"text/x-rst","patch_set":22,"id":"d0c73e6c_cc73559a","line":437,"in_reply_to":"0d0cb8db_3f095e81","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"}],"nova/api/validation/extra_specs/hw.py":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"6cde25f4c4901758ce27ba3a064d4868df94cb6e","unresolved":true,"context_lines":[{"line_number":507,"context_line":"        ),"},{"line_number":508,"context_line":"        value\u003d{"},{"line_number":509,"context_line":"            \u0027type\u0027: int,"},{"line_number":510,"context_line":"            \u0027min\u0027: 1,"},{"line_number":511,"context_line":"            \u0027description\u0027: \u0027address width to allow mapping\u0027,"},{"line_number":512,"context_line":"        },"},{"line_number":513,"context_line":"    ),"}],"source_content_type":"text/x-python","patch_set":5,"id":"d50d7851_49225685","line":510,"updated":"2022-04-20 17:24:29.000000000","message":"This is reasonable as a limit:\n\nhttps://github.com/libvirt/libvirt/blob/4e4def21d3744cb4b8a46ffcd3c9e299bc8c8e12/src/conf/schemas/domaincommon.rng#L5497-L5499\n\nlibvirt just passes it along, as long as it\u0027s a number.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        ),"},{"line_number":508,"context_line":"        value\u003d{"},{"line_number":509,"context_line":"            \u0027type\u0027: int,"},{"line_number":510,"context_line":"            \u0027min\u0027: 1,"},{"line_number":511,"context_line":"            \u0027description\u0027: \u0027address width to allow mapping\u0027,"},{"line_number":512,"context_line":"        },"},{"line_number":513,"context_line":"    ),"}],"source_content_type":"text/x-python","patch_set":5,"id":"0ed793f8_039901c8","line":510,"in_reply_to":"136f7394_b24bae52","updated":"2022-06-01 12:40:21.000000000","message":"We agreed to not expose this and provide default value for aw_bits as 48(which is the largest width value it will take currently)\nAlso we provide hw:viommu_modle and hw_viommu_modle with default to `none`","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":507,"context_line":"        ),"},{"line_number":508,"context_line":"        value\u003d{"},{"line_number":509,"context_line":"            \u0027type\u0027: int,"},{"line_number":510,"context_line":"            \u0027min\u0027: 1,"},{"line_number":511,"context_line":"            \u0027description\u0027: \u0027address width to allow mapping\u0027,"},{"line_number":512,"context_line":"        },"},{"line_number":513,"context_line":"    ),"}],"source_content_type":"text/x-python","patch_set":5,"id":"136f7394_b24bae52","line":510,"in_reply_to":"d50d7851_49225685","updated":"2022-04-21 18:03:43.000000000","message":"this feels too low level to expos to me.\n\nif we were to support this it really shoudl be an image property not an extra spec.\n\nwe shoudl just hw:viommu\u003dTrue|False to enable it.\n\nor perhaps hw:viommu_modle\u003dintel|smmuv3|virtion|none \n\nwe shoudl not hard code this unless we hardcoded it to virtio which work for both arm and x86 instnaces.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":513,"context_line":"    base.ExtraSpecValidator("},{"line_number":514,"context_line":"        name\u003d\u0027hw:viommu_model\u0027,"},{"line_number":515,"context_line":"        description\u003d("},{"line_number":516,"context_line":"            \u0027This Can be used to set model for virtual IOMMU device.\u0027"},{"line_number":517,"context_line":"        ),"},{"line_number":518,"context_line":"        value\u003d{"},{"line_number":519,"context_line":"            \u0027type\u0027: str,"}],"source_content_type":"text/x-python","patch_set":18,"id":"d593d459_47394cf6","line":516,"range":{"start_line":516,"start_character":18,"end_line":516,"end_character":19},"updated":"2022-08-18 08:14:28.000000000","message":"nit: c","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":513,"context_line":"    base.ExtraSpecValidator("},{"line_number":514,"context_line":"        name\u003d\u0027hw:viommu_model\u0027,"},{"line_number":515,"context_line":"        description\u003d("},{"line_number":516,"context_line":"            \u0027This Can be used to set model for virtual IOMMU device.\u0027"},{"line_number":517,"context_line":"        ),"},{"line_number":518,"context_line":"        value\u003d{"},{"line_number":519,"context_line":"            \u0027type\u0027: str,"}],"source_content_type":"text/x-python","patch_set":18,"id":"b1cf4664_49156724","line":516,"range":{"start_line":516,"start_character":18,"end_line":516,"end_character":19},"in_reply_to":"d593d459_47394cf6","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"}],"nova/conf/libvirt.py":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"7d601e1a662729ef48e40a9ed140e234bb3346f6","unresolved":true,"context_lines":[{"line_number":901,"context_line":"* :oslo.config:option:`libvirt.device_detach_attempts`"},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"\"\"\"),"},{"line_number":904,"context_line":"    cfg.IntOpt(\u0027address_width_bits\u0027,"},{"line_number":905,"context_line":"               default\u003d39,"},{"line_number":906,"context_line":"               help\u003d\"\"\""},{"line_number":907,"context_line":"Maximum bits the driver can use to set the address width to"}],"source_content_type":"text/x-python","patch_set":3,"id":"781c1b3b_a727e8d7","line":904,"updated":"2022-04-19 11:32:40.000000000","message":"Wouldn\u0027t it make more sense for us to pull this value from a flavours extra_specs?  That way, it can be specified per flavour instead?","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":901,"context_line":"* :oslo.config:option:`libvirt.device_detach_attempts`"},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"\"\"\"),"},{"line_number":904,"context_line":"    cfg.IntOpt(\u0027address_width_bits\u0027,"},{"line_number":905,"context_line":"               default\u003d39,"},{"line_number":906,"context_line":"               help\u003d\"\"\""},{"line_number":907,"context_line":"Maximum bits the driver can use to set the address width to"}],"source_content_type":"text/x-python","patch_set":3,"id":"d846d304_33a76a99","line":904,"in_reply_to":"781c1b3b_a727e8d7","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"}],"nova/objects/image_meta.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":449,"context_line":"        # name of a NIC device model eg virtio, e1000, rtl8139"},{"line_number":450,"context_line":"        \u0027hw_vif_model\u0027: fields.VIFModelField(),"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        # name of IOMMU device model eg virtio, intel, smmuv3"},{"line_number":453,"context_line":"        \u0027hw_viommu_model\u0027: fields.VIOMMUModelField(),"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # \"xen\" vs \"hvm\""}],"source_content_type":"text/x-python","patch_set":22,"id":"e3135881_b2f9e7d4","line":452,"range":{"start_line":452,"start_character":40,"end_line":452,"end_character":61},"updated":"2022-08-31 16:57:16.000000000","message":"can be auto too.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        # name of a NIC device model eg virtio, e1000, rtl8139"},{"line_number":450,"context_line":"        \u0027hw_vif_model\u0027: fields.VIFModelField(),"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        # name of IOMMU device model eg virtio, intel, smmuv3"},{"line_number":453,"context_line":"        \u0027hw_viommu_model\u0027: fields.VIOMMUModelField(),"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # \"xen\" vs \"hvm\""}],"source_content_type":"text/x-python","patch_set":22,"id":"35f25cea_1918c303","line":452,"range":{"start_line":452,"start_character":40,"end_line":452,"end_character":61},"in_reply_to":"e3135881_b2f9e7d4","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"71f15c265530747a25858609baa4348d13c97d75","unresolved":true,"context_lines":[{"line_number":449,"context_line":"        # name of a NIC device model eg virtio, e1000, rtl8139"},{"line_number":450,"context_line":"        \u0027hw_vif_model\u0027: fields.VIFModelField(),"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        # name of IOMMU device model eg virtio, intel, smmuv3"},{"line_number":453,"context_line":"        \u0027hw_viommu_model\u0027: fields.VIOMMUModelField(),"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # \"xen\" vs \"hvm\""}],"source_content_type":"text/x-python","patch_set":22,"id":"fa77a37d_d7aa005d","line":452,"range":{"start_line":452,"start_character":40,"end_line":452,"end_character":61},"in_reply_to":"e3135881_b2f9e7d4","updated":"2022-08-31 18:12:21.000000000","message":"right but it start with eg in other words these are examples and the intent is not to list all of the values.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"}],"nova/tests/unit/api/validation/extra_specs/test_validators.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":97,"context_line":"            (\u0027hw:pci_numa_affinity_policy\u0027, \u0027requird\u0027),"},{"line_number":98,"context_line":"            (\u0027hw:pci_numa_affinity_policy\u0027, \u0027prefrred\u0027),"},{"line_number":99,"context_line":"            (\u0027hw:pci_numa_affinity_policy\u0027, \u0027socet\u0027),"},{"line_number":100,"context_line":"            (\u0027hw:viommu_model\u0027, \u0027nnone\u0027),"},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        for key, value in invalid_specs:"},{"line_number":103,"context_line":"            with testtools.ExpectedException(exception.ValidationError):"}],"source_content_type":"text/x-python","patch_set":12,"id":"dcd18e99_6ceabcb7","line":100,"range":{"start_line":100,"start_character":32,"end_line":100,"end_character":39},"updated":"2022-07-07 10:45:45.000000000","message":"ah i was about to comment on the typo but this is the invalid set +1","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            (\u0027hw:pci_numa_affinity_policy\u0027, \u0027requird\u0027),"},{"line_number":98,"context_line":"            (\u0027hw:pci_numa_affinity_policy\u0027, \u0027prefrred\u0027),"},{"line_number":99,"context_line":"            (\u0027hw:pci_numa_affinity_policy\u0027, \u0027socet\u0027),"},{"line_number":100,"context_line":"            (\u0027hw:viommu_model\u0027, \u0027nnone\u0027),"},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        for key, value in invalid_specs:"},{"line_number":103,"context_line":"            with testtools.ExpectedException(exception.ValidationError):"}],"source_content_type":"text/x-python","patch_set":12,"id":"835bacf1_f21a4443","line":100,"range":{"start_line":100,"start_character":32,"end_line":100,"end_character":39},"in_reply_to":"dcd18e99_6ceabcb7","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"}],"nova/tests/unit/objects/test_image_meta.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"714238a6_0bfa9e89","line":557,"updated":"2022-08-31 16:57:16.000000000","message":"perfect testing.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        self.assertFalse(obj.parse_on_off_str(None))"},{"line_number":79,"context_line":"        self.assertRaises(exception.InvalidInput, obj.parse_on_off_str, \u0027foo\u0027)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_get_yet_no_str(self):"},{"line_number":82,"context_line":"        obj \u003d config.LibvirtConfigObject(root_name\u003d\"demo\")"},{"line_number":83,"context_line":"        self.assertEqual(\u0027yes\u0027, obj.get_yes_no_str(True))"},{"line_number":84,"context_line":"        self.assertEqual(\u0027no\u0027, obj.get_yes_no_str(False))"}],"source_content_type":"text/x-python","patch_set":12,"id":"166138d0_8a165ed7","line":81,"range":{"start_line":81,"start_character":17,"end_line":81,"end_character":21},"updated":"2022-07-07 10:45:45.000000000","message":"yes","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.assertFalse(obj.parse_on_off_str(None))"},{"line_number":79,"context_line":"        self.assertRaises(exception.InvalidInput, obj.parse_on_off_str, \u0027foo\u0027)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_get_yet_no_str(self):"},{"line_number":82,"context_line":"        obj \u003d config.LibvirtConfigObject(root_name\u003d\"demo\")"},{"line_number":83,"context_line":"        self.assertEqual(\u0027yes\u0027, obj.get_yes_no_str(True))"},{"line_number":84,"context_line":"        self.assertEqual(\u0027no\u0027, obj.get_yes_no_str(False))"}],"source_content_type":"text/x-python","patch_set":12,"id":"80201688_8e87241b","line":81,"range":{"start_line":81,"start_character":17,"end_line":81,"end_character":21},"in_reply_to":"166138d0_8a165ed7","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":2574,"context_line":"        \"\"\""},{"line_number":2575,"context_line":"        time_mock.return_value \u003d 1234567.89"},{"line_number":2576,"context_line":""},{"line_number":2577,"context_line":"        CONF.set_override(\u0027num_pcie_ports\u0027, 8, group\u003d\u0027libvirt\u0027)"},{"line_number":2578,"context_line":""},{"line_number":2579,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":2580,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"0e78b90c_8f861ab7","line":2577,"range":{"start_line":2577,"start_character":8,"end_line":2577,"end_character":63},"updated":"2022-07-07 10:45:45.000000000","message":"setting this si ok but it would be nice to add a comment sicne this only applies to q35 machine type on the 1440fx since that does not support pcie only pci\n\ni440fx will alway shave i belive 32 or 24 pci slots i dont rememebr exactly but its independed of this value.\n\nit proably would be better to drop this form this test and only set it in the q35 test below.","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":2574,"context_line":"        \"\"\""},{"line_number":2575,"context_line":"        time_mock.return_value \u003d 1234567.89"},{"line_number":2576,"context_line":""},{"line_number":2577,"context_line":"        CONF.set_override(\u0027num_pcie_ports\u0027, 8, group\u003d\u0027libvirt\u0027)"},{"line_number":2578,"context_line":""},{"line_number":2579,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":2580,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bcf2e249_ff3d55a5","line":2577,"range":{"start_line":2577,"start_character":8,"end_line":2577,"end_character":63},"in_reply_to":"0e78b90c_8f861ab7","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":2672,"context_line":"        self.assertEqual(8128, cfg.metadata[0].flavor.ephemeral)"},{"line_number":2673,"context_line":"        self.assertEqual(33550336, cfg.metadata[0].flavor.swap)"},{"line_number":2674,"context_line":""},{"line_number":2675,"context_line":"        num_ports \u003d 0"},{"line_number":2676,"context_line":"        for device in cfg.devices:"},{"line_number":2677,"context_line":"            try:"},{"line_number":2678,"context_line":"                if ("},{"line_number":2679,"context_line":"                    device.root_name \u003d\u003d \u0027controller\u0027 and"},{"line_number":2680,"context_line":"                    device.model \u003d\u003d \u0027pcie-root-port\u0027"},{"line_number":2681,"context_line":"                ):"},{"line_number":2682,"context_line":"                    num_ports +\u003d 1"},{"line_number":2683,"context_line":"            except AttributeError:"},{"line_number":2684,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":12,"id":"700bba66_66cd3625","line":2681,"range":{"start_line":2675,"start_character":0,"end_line":2681,"end_character":18},"updated":"2022-07-07 10:45:45.000000000","message":"pcie root ports cannot be attach to an i440fx/pc machine type guest so\nwe shoudl never have device.model\u003d\u0027pcie-root-port\u0027","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":2672,"context_line":"        self.assertEqual(8128, cfg.metadata[0].flavor.ephemeral)"},{"line_number":2673,"context_line":"        self.assertEqual(33550336, cfg.metadata[0].flavor.swap)"},{"line_number":2674,"context_line":""},{"line_number":2675,"context_line":"        num_ports \u003d 0"},{"line_number":2676,"context_line":"        for device in cfg.devices:"},{"line_number":2677,"context_line":"            try:"},{"line_number":2678,"context_line":"                if ("},{"line_number":2679,"context_line":"                    device.root_name \u003d\u003d \u0027controller\u0027 and"},{"line_number":2680,"context_line":"                    device.model \u003d\u003d \u0027pcie-root-port\u0027"},{"line_number":2681,"context_line":"                ):"},{"line_number":2682,"context_line":"                    num_ports +\u003d 1"},{"line_number":2683,"context_line":"            except AttributeError:"},{"line_number":2684,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":12,"id":"11fac0d0_c9b993ef","line":2681,"range":{"start_line":2675,"start_character":0,"end_line":2681,"end_character":18},"in_reply_to":"700bba66_66cd3625","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":2683,"context_line":"            except AttributeError:"},{"line_number":2684,"context_line":"                pass"},{"line_number":2685,"context_line":""},{"line_number":2686,"context_line":"        # i440fx is not pcie machine so there should be no pcie ports"},{"line_number":2687,"context_line":"        self.assertEqual(0, num_ports)"},{"line_number":2688,"context_line":""},{"line_number":2689,"context_line":"    @mock.patch.object(host.Host, \"_check_machine_type\", new\u003dmock.Mock())"},{"line_number":2690,"context_line":"    def test_get_guest_config_q35(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9c0c3c41_8305ccfc","line":2687,"range":{"start_line":2686,"start_character":0,"end_line":2687,"end_character":38},"updated":"2022-07-07 10:45:45.000000000","message":"i guess you are assereting that here. so maybe its ok to keep.\n\ni think i would have prefered to keep this negitive test as a sperate test case instead fo combining it.","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":2683,"context_line":"            except AttributeError:"},{"line_number":2684,"context_line":"                pass"},{"line_number":2685,"context_line":""},{"line_number":2686,"context_line":"        # i440fx is not pcie machine so there should be no pcie ports"},{"line_number":2687,"context_line":"        self.assertEqual(0, num_ports)"},{"line_number":2688,"context_line":""},{"line_number":2689,"context_line":"    @mock.patch.object(host.Host, \"_check_machine_type\", new\u003dmock.Mock())"},{"line_number":2690,"context_line":"    def test_get_guest_config_q35(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"93ee9149_331c34c1","line":2687,"range":{"start_line":2686,"start_character":0,"end_line":2687,"end_character":38},"in_reply_to":"9c0c3c41_8305ccfc","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":8497,"context_line":""},{"line_number":8498,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8499,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8500,"context_line":"    def test_get_guest_iommu_config_by_default(self):"},{"line_number":8501,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8502,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":8503,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a64c956_deba6963","line":8500,"range":{"start_line":8500,"start_character":36,"end_line":8500,"end_character":46},"updated":"2022-07-07 10:45:45.000000000","message":"this nameing is kind fo confusing since the iommu will not be enabled by default.\n\ni would just name this\n\ntest_get_guest_iommu_config","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":8497,"context_line":""},{"line_number":8498,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8499,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8500,"context_line":"    def test_get_guest_iommu_config_by_default(self):"},{"line_number":8501,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8502,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":8503,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"}],"source_content_type":"text/x-python","patch_set":12,"id":"d7974d97_4a1557bf","line":8500,"range":{"start_line":8500,"start_character":36,"end_line":8500,"end_character":46},"in_reply_to":"5a64c956_deba6963","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":8520,"context_line":""},{"line_number":8521,"context_line":"        self.assertEqual(\u0027pc-q35-test\u0027, cfg.os_mach_type)"},{"line_number":8522,"context_line":""},{"line_number":8523,"context_line":"    def test_get_guest_iommu_not_config_model(self):"},{"line_number":8524,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8525,"context_line":""},{"line_number":8526,"context_line":"        test_instance \u003d _create_test_instance()"}],"source_content_type":"text/x-python","patch_set":12,"id":"2a39d654_9ebf1f72","line":8523,"range":{"start_line":8523,"start_character":8,"end_line":8523,"end_character":45},"updated":"2022-07-07 10:45:45.000000000","message":"test_get_guest_iommu_not_enabled","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":8520,"context_line":""},{"line_number":8521,"context_line":"        self.assertEqual(\u0027pc-q35-test\u0027, cfg.os_mach_type)"},{"line_number":8522,"context_line":""},{"line_number":8523,"context_line":"    def test_get_guest_iommu_not_config_model(self):"},{"line_number":8524,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8525,"context_line":""},{"line_number":8526,"context_line":"        test_instance \u003d _create_test_instance()"}],"source_content_type":"text/x-python","patch_set":12,"id":"112348ef_5e709830","line":8523,"range":{"start_line":8523,"start_character":8,"end_line":8523,"end_character":45},"in_reply_to":"2a39d654_9ebf1f72","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":8535,"context_line":"        for device in cfg.devices:"},{"line_number":8536,"context_line":"            self.assertNotEqual(\u0027iommu\u0027, device.root_name)"},{"line_number":8537,"context_line":""},{"line_number":8538,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8539,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8540,"context_line":"    def test_get_guest_iommu_config_model(self):"},{"line_number":8541,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"a6c12e1b_0f89c50c","line":8538,"updated":"2022-07-07 10:45:45.000000000","message":"i would prefer if you are going to depend on the machine type that you actully set it in the config using the flags fucntion or request it in the image metadta then mock this funtion.\n\n\nnova.virt.libvirt.utils.get_default_machine_type will not return q35 today so these tests are asserting incorrect behavior.","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":8535,"context_line":"        for device in cfg.devices:"},{"line_number":8536,"context_line":"            self.assertNotEqual(\u0027iommu\u0027, device.root_name)"},{"line_number":8537,"context_line":""},{"line_number":8538,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8539,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8540,"context_line":"    def test_get_guest_iommu_config_model(self):"},{"line_number":8541,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"2147f4a0_62ad9115","line":8538,"in_reply_to":"a6c12e1b_0f89c50c","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":8567,"context_line":"        self.assertEqual(\u0027pc-q35-test\u0027, cfg.os_mach_type)"},{"line_number":8568,"context_line":""},{"line_number":8569,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8570,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8571,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8572,"context_line":"    def test_get_guest_iommu_config_model_auto(self, has_min_version):"},{"line_number":8573,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"55ab3de1_8dfaaca5","line":8570,"updated":"2022-07-07 10:45:45.000000000","message":"same please set the machine type in the config or in the image meta","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":8567,"context_line":"        self.assertEqual(\u0027pc-q35-test\u0027, cfg.os_mach_type)"},{"line_number":8568,"context_line":""},{"line_number":8569,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8570,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8571,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8572,"context_line":"    def test_get_guest_iommu_config_model_auto(self, has_min_version):"},{"line_number":8573,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"c8c16899_26129a64","line":8570,"in_reply_to":"55ab3de1_8dfaaca5","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":8569,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8570,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8571,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8572,"context_line":"    def test_get_guest_iommu_config_model_auto(self, has_min_version):"},{"line_number":8573,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8574,"context_line":""},{"line_number":8575,"context_line":"        extra_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"33c6c822_5328a11b","line":8572,"range":{"start_line":8572,"start_character":9,"end_line":8572,"end_character":46},"updated":"2022-07-07 10:45:45.000000000","message":"you are testing two things here\n\nauto with virtio support and auto with x86\n\nplease add a x86 auto test that will fall back to intel.\n\nby the way a lot of these tests are very similar\n\nit woudl be good to factor out some of the common code and or use ddt to consolidate them.\n\nthat coudl be done in a followup but i think there is a lot of reuse that could be extracted here.","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":8569,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8570,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8571,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8572,"context_line":"    def test_get_guest_iommu_config_model_auto(self, has_min_version):"},{"line_number":8573,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8574,"context_line":""},{"line_number":8575,"context_line":"        extra_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"f5613378_6e66151c","line":8572,"range":{"start_line":8572,"start_character":9,"end_line":8572,"end_character":46},"in_reply_to":"33c6c822_5328a11b","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":8648,"context_line":"                                            instance_ref,"},{"line_number":8649,"context_line":"                                            image_meta)"},{"line_number":8650,"context_line":""},{"line_number":8651,"context_line":"        cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":8652,"context_line":"                                     image_meta, disk_info)"},{"line_number":8653,"context_line":"        for device in cfg.devices:"},{"line_number":8654,"context_line":"            self.assertNotEqual(\u0027iommu\u0027, device.root_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ba5420d_73fc50b8","line":8651,"updated":"2022-07-07 10:45:45.000000000","message":"ah no if the arch is not supported this should be a  hard error and it should raise an excption we shoudl not boot the guest without an iommu","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":8648,"context_line":"                                            instance_ref,"},{"line_number":8649,"context_line":"                                            image_meta)"},{"line_number":8650,"context_line":""},{"line_number":8651,"context_line":"        cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":8652,"context_line":"                                     image_meta, disk_info)"},{"line_number":8653,"context_line":"        for device in cfg.devices:"},{"line_number":8654,"context_line":"            self.assertNotEqual(\u0027iommu\u0027, device.root_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"17cbcf32_69ca93cc","line":8651,"in_reply_to":"1ba5420d_73fc50b8","updated":"2022-07-20 21:09:31.000000000","message":"So that means only q35 and AArch64 are acceptable, and we will raise errors when providing iommu with all other arch.","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":8654,"context_line":"            self.assertNotEqual(\u0027iommu\u0027, device.root_name)"},{"line_number":8655,"context_line":""},{"line_number":8656,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8657,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8658,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8659,"context_line":"    def test_get_guest_iommu_config_aw_bits(self, has_min_version):"},{"line_number":8660,"context_line":"        self.flags(virt_type\u003d\u0027qemu\u0027, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"06d6ffca_260e430a","line":8657,"updated":"2022-07-07 10:45:45.000000000","message":"again please dont mock this fuction set it properly in the image or config","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":8654,"context_line":"            self.assertNotEqual(\u0027iommu\u0027, device.root_name)"},{"line_number":8655,"context_line":""},{"line_number":8656,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8657,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.utils.get_default_machine_type\u0027,"},{"line_number":8658,"context_line":"                new\u003dmock.Mock(return_value\u003d\u0027pc-q35-test\u0027))"},{"line_number":8659,"context_line":"    def test_get_guest_iommu_config_aw_bits(self, has_min_version):"},{"line_number":8660,"context_line":"        self.flags(virt_type\u003d\u0027qemu\u0027, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"239611ca_111d80ce","line":8657,"in_reply_to":"06d6ffca_260e430a","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":8529,"context_line":"            if device.root_name \u003d\u003d \u0027iommu\u0027:"},{"line_number":8530,"context_line":"                self.assertIsInstance(device,"},{"line_number":8531,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8532,"context_line":"                self.assertEqual(\u0027auto\u0027, device.model)"},{"line_number":8533,"context_line":"                self.assertIsNone(device.aw_bits)"},{"line_number":8534,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8535,"context_line":"                self.assertTrue(device.caching_mode)"}],"source_content_type":"text/x-python","patch_set":18,"id":"21eac1bc_5f0cbb34","line":8532,"updated":"2022-08-18 08:14:28.000000000","message":"hm, I don\u0027t see that as a valid value in the libvirt documentation https://libvirt.org/formatdomain.html#iommu-devices","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":8529,"context_line":"            if device.root_name \u003d\u003d \u0027iommu\u0027:"},{"line_number":8530,"context_line":"                self.assertIsInstance(device,"},{"line_number":8531,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8532,"context_line":"                self.assertEqual(\u0027auto\u0027, device.model)"},{"line_number":8533,"context_line":"                self.assertIsNone(device.aw_bits)"},{"line_number":8534,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8535,"context_line":"                self.assertTrue(device.caching_mode)"}],"source_content_type":"text/x-python","patch_set":18,"id":"dcd531fe_a46390fd","line":8532,"in_reply_to":"21eac1bc_5f0cbb34","updated":"2022-08-20 21:23:36.000000000","message":"Auto is defined here https://review.opendev.org/c/openstack/nova-specs/+/840310/12/specs/zed/approved/libvirt-viommu-device.rst#53\n\n\"``auto`` will select ``virtio`` if Libvirt supports it,\n    else ``intel`` on X86 and ``smmuv3`` on AArch64.\"","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":8530,"context_line":"                self.assertIsInstance(device,"},{"line_number":8531,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8532,"context_line":"                self.assertEqual(\u0027auto\u0027, device.model)"},{"line_number":8533,"context_line":"                self.assertIsNone(device.aw_bits)"},{"line_number":8534,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8535,"context_line":"                self.assertTrue(device.caching_mode)"},{"line_number":8536,"context_line":"                self.assertTrue(device.eim)"}],"source_content_type":"text/x-python","patch_set":18,"id":"e46de40f_efec6c59","line":8533,"updated":"2022-08-18 08:14:28.000000000","message":"why this is set to None? is et even valid in libvirt to set it to None?","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":8530,"context_line":"                self.assertIsInstance(device,"},{"line_number":8531,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8532,"context_line":"                self.assertEqual(\u0027auto\u0027, device.model)"},{"line_number":8533,"context_line":"                self.assertIsNone(device.aw_bits)"},{"line_number":8534,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8535,"context_line":"                self.assertTrue(device.caching_mode)"},{"line_number":8536,"context_line":"                self.assertTrue(device.eim)"}],"source_content_type":"text/x-python","patch_set":18,"id":"efa7db15_85313e4d","line":8533,"in_reply_to":"e46de40f_efec6c59","updated":"2022-08-20 21:23:36.000000000","message":"Fixed","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":8676,"context_line":"                self.assertIsInstance(device,"},{"line_number":8677,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8678,"context_line":"                self.assertEqual(\u0027smmuv3\u0027, device.model)"},{"line_number":8679,"context_line":"                self.assertIsNone(device.aw_bits)"},{"line_number":8680,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8681,"context_line":"                self.assertTrue(device.caching_mode)"},{"line_number":8682,"context_line":"                self.assertFalse(device.eim)"}],"source_content_type":"text/x-python","patch_set":18,"id":"e6176b46_9ae80b8f","line":8679,"updated":"2022-08-18 08:14:28.000000000","message":"ditto","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":8676,"context_line":"                self.assertIsInstance(device,"},{"line_number":8677,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8678,"context_line":"                self.assertEqual(\u0027smmuv3\u0027, device.model)"},{"line_number":8679,"context_line":"                self.assertIsNone(device.aw_bits)"},{"line_number":8680,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8681,"context_line":"                self.assertTrue(device.caching_mode)"},{"line_number":8682,"context_line":"                self.assertFalse(device.eim)"}],"source_content_type":"text/x-python","patch_set":18,"id":"03ff4dd1_ceb5f2fd","line":8679,"in_reply_to":"e6176b46_9ae80b8f","updated":"2022-08-20 21:23:36.000000000","message":"Fixed","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":8722,"context_line":"            if device.root_name \u003d\u003d \u0027iommu\u0027:"},{"line_number":8723,"context_line":"                self.assertIsInstance(device,"},{"line_number":8724,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8725,"context_line":"                self.assertEqual(\u0027auto\u0027, device.model)"},{"line_number":8726,"context_line":"                self.assertEqual(48, device.aw_bits)"},{"line_number":8727,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8728,"context_line":"                self.assertTrue(device.caching_mode)"}],"source_content_type":"text/x-python","patch_set":18,"id":"00d586d3_f5694faa","line":8725,"updated":"2022-08-18 08:14:28.000000000","message":"so the user did not ask for iommu but we gave them one because they use q35 machine type. I don\u0027t see this default behavior in the spec.\n\nalso I don\u0027t see \u0027auto\u0027 as a valid value in the libvirt doc","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":8722,"context_line":"            if device.root_name \u003d\u003d \u0027iommu\u0027:"},{"line_number":8723,"context_line":"                self.assertIsInstance(device,"},{"line_number":8724,"context_line":"                                      vconfig.LibvirtConfigGuestIOMMU)"},{"line_number":8725,"context_line":"                self.assertEqual(\u0027auto\u0027, device.model)"},{"line_number":8726,"context_line":"                self.assertEqual(48, device.aw_bits)"},{"line_number":8727,"context_line":"                self.assertTrue(device.interrupt_remapping)"},{"line_number":8728,"context_line":"                self.assertTrue(device.caching_mode)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5aeeb3ec_e419e1d6","line":8725,"in_reply_to":"00d586d3_f5694faa","updated":"2022-08-20 21:23:36.000000000","message":"Actually this is wrong test, as this part of code never run even once, sorry for the confusion","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":false,"context_lines":[{"line_number":8512,"context_line":"        self.assertEqual(conf.cpu.cores, 2)"},{"line_number":8513,"context_line":"        self.assertEqual(conf.cpu.threads, 1)"},{"line_number":8514,"context_line":""},{"line_number":8515,"context_line":"    def test_get_guest_iommu_not_enabled(self):"},{"line_number":8516,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8517,"context_line":""},{"line_number":8518,"context_line":"        test_instance \u003d _create_test_instance()"}],"source_content_type":"text/x-python","patch_set":21,"id":"50240f94_2c7b6a2d","line":8515,"updated":"2022-08-25 12:35:18.000000000","message":"ok everything above this point is really just test refactos to make the new tests below simplier to write.\n\nit might have been nice to have that in a speerate patch but i guess its fine to proceed with it in this one.","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":8560,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8561,"context_line":""},{"line_number":8562,"context_line":"        self.assertEqual(1, count)"},{"line_number":8563,"context_line":"        self.assertEqual(\u0027q35\u0027, cfg.os_mach_type)"},{"line_number":8564,"context_line":""},{"line_number":8565,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8566,"context_line":"    def test_get_guest_iommu_config_model_auto(self, has_min_version):"}],"source_content_type":"text/x-python","patch_set":21,"id":"8c8e4703_92f3a2ee","line":8563,"updated":"2022-08-25 12:35:18.000000000","message":"ack os this is the case where an explcit model is specifed and intel is just use because x86_64 is our default arch in the tests +1","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"2c7119e111e95642a54ed4ceb0fbe24e2fe33ef4","unresolved":false,"context_lines":[{"line_number":8560,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8561,"context_line":""},{"line_number":8562,"context_line":"        self.assertEqual(1, count)"},{"line_number":8563,"context_line":"        self.assertEqual(\u0027q35\u0027, cfg.os_mach_type)"},{"line_number":8564,"context_line":""},{"line_number":8565,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":8566,"context_line":"    def test_get_guest_iommu_config_model_auto(self, has_min_version):"}],"source_content_type":"text/x-python","patch_set":21,"id":"94d4b7de_9c166e13","line":8563,"in_reply_to":"8c8e4703_92f3a2ee","updated":"2022-08-31 08:23:03.000000000","message":"Ack","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":8596,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8597,"context_line":""},{"line_number":8598,"context_line":"        self.assertEqual(1, count)"},{"line_number":8599,"context_line":"        self.assertEqual(\u0027q35\u0027, cfg.os_mach_type)"},{"line_number":8600,"context_line":""},{"line_number":8601,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dFalse)"},{"line_number":8602,"context_line":"    def test_get_guest_iommu_config_model_auto_intel(self, has_min_version):"}],"source_content_type":"text/x-python","patch_set":21,"id":"0297c0d5_9c9ec849","line":8599,"updated":"2022-08-25 12:35:18.000000000","message":"ack so this ensures we prefer virtio when aviabel for auto.","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"2c7119e111e95642a54ed4ceb0fbe24e2fe33ef4","unresolved":false,"context_lines":[{"line_number":8596,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8597,"context_line":""},{"line_number":8598,"context_line":"        self.assertEqual(1, count)"},{"line_number":8599,"context_line":"        self.assertEqual(\u0027q35\u0027, cfg.os_mach_type)"},{"line_number":8600,"context_line":""},{"line_number":8601,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dFalse)"},{"line_number":8602,"context_line":"    def test_get_guest_iommu_config_model_auto_intel(self, has_min_version):"}],"source_content_type":"text/x-python","patch_set":21,"id":"1b76f3ec_e358ef1b","line":8599,"in_reply_to":"0297c0d5_9c9ec849","updated":"2022-08-31 08:23:03.000000000","message":"Ack","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":8667,"context_line":"                self.assertFalse(device.eim)"},{"line_number":8668,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8669,"context_line":"        self.assertEqual(1, count)"},{"line_number":8670,"context_line":""},{"line_number":8671,"context_line":"    def test_get_guest_iommu_config_not_support_arch(self):"},{"line_number":8672,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8673,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({"}],"source_content_type":"text/x-python","patch_set":21,"id":"d777110a_2b4279ee","line":8670,"updated":"2022-08-25 12:35:18.000000000","message":"and these two test assert the the fallback to the arch specific model when virtio is not avaiable.","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"2c7119e111e95642a54ed4ceb0fbe24e2fe33ef4","unresolved":false,"context_lines":[{"line_number":8667,"context_line":"                self.assertFalse(device.eim)"},{"line_number":8668,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8669,"context_line":"        self.assertEqual(1, count)"},{"line_number":8670,"context_line":""},{"line_number":8671,"context_line":"    def test_get_guest_iommu_config_not_support_arch(self):"},{"line_number":8672,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8673,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({"}],"source_content_type":"text/x-python","patch_set":21,"id":"9b836e02_4fc72a69","line":8670,"in_reply_to":"d777110a_2b4279ee","updated":"2022-08-31 08:23:03.000000000","message":"Ack","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":8668,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8669,"context_line":"        self.assertEqual(1, count)"},{"line_number":8670,"context_line":""},{"line_number":8671,"context_line":"    def test_get_guest_iommu_config_not_support_arch(self):"},{"line_number":8672,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8673,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({"},{"line_number":8674,"context_line":"            \"disk_format\": \"raw\","}],"source_content_type":"text/x-python","patch_set":21,"id":"46377b13_9a70506f","line":8671,"range":{"start_line":8671,"start_character":8,"end_line":8671,"end_character":52},"updated":"2022-08-25 12:35:18.000000000","message":"nit: test_get_guest_iommu_config_not_support_machine_type","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"83a0864be5ba4a01ee15332fcf5d16ee2951b660","unresolved":false,"context_lines":[{"line_number":8668,"context_line":"                self.assertTrue(device.iotlb)"},{"line_number":8669,"context_line":"        self.assertEqual(1, count)"},{"line_number":8670,"context_line":""},{"line_number":8671,"context_line":"    def test_get_guest_iommu_config_not_support_arch(self):"},{"line_number":8672,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8673,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({"},{"line_number":8674,"context_line":"            \"disk_format\": \"raw\","}],"source_content_type":"text/x-python","patch_set":21,"id":"12221730_9f29f625","line":8671,"range":{"start_line":8671,"start_character":8,"end_line":8671,"end_character":52},"in_reply_to":"46377b13_9a70506f","updated":"2022-08-30 16:25:06.000000000","message":"Done","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":8685,"context_line":"                                            image_meta)"},{"line_number":8686,"context_line":""},{"line_number":8687,"context_line":"        self.assertRaises("},{"line_number":8688,"context_line":"            exception.Invalid, drvr._get_guest_config,"},{"line_number":8689,"context_line":"            instance_ref, [], image_meta, disk_info"},{"line_number":8690,"context_line":"        )"},{"line_number":8691,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"24df9ae1_067d1b1d","line":8688,"range":{"start_line":8688,"start_character":22,"end_line":8688,"end_character":29},"updated":"2022-08-25 12:35:18.000000000","message":"that is the parent class you could be more specific here.","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"83a0864be5ba4a01ee15332fcf5d16ee2951b660","unresolved":false,"context_lines":[{"line_number":8685,"context_line":"                                            image_meta)"},{"line_number":8686,"context_line":""},{"line_number":8687,"context_line":"        self.assertRaises("},{"line_number":8688,"context_line":"            exception.Invalid, drvr._get_guest_config,"},{"line_number":8689,"context_line":"            instance_ref, [], image_meta, disk_info"},{"line_number":8690,"context_line":"        )"},{"line_number":8691,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3b4f132f_2b8200c6","line":8688,"range":{"start_line":8688,"start_character":22,"end_line":8688,"end_character":29},"in_reply_to":"24df9ae1_067d1b1d","updated":"2022-08-30 16:25:06.000000000","message":"Done","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":false,"context_lines":[{"line_number":2584,"context_line":"            project_name\u003d\"aubergine\","},{"line_number":2585,"context_line":"            user_id\u003d456,"},{"line_number":2586,"context_line":"            user_name\u003d\"pie\","},{"line_number":2587,"context_line":"        )"},{"line_number":2588,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":2589,"context_line":"            name\u003d\u0027m1.small\u0027,"},{"line_number":2590,"context_line":"            memory_mb\u003d6,"}],"source_content_type":"text/x-python","patch_set":22,"id":"25845043_0dc8933f","line":2587,"updated":"2022-08-31 16:57:16.000000000","message":"unnecesary indentation changes.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"71f15c265530747a25858609baa4348d13c97d75","unresolved":false,"context_lines":[{"line_number":2584,"context_line":"            project_name\u003d\"aubergine\","},{"line_number":2585,"context_line":"            user_id\u003d456,"},{"line_number":2586,"context_line":"            user_name\u003d\"pie\","},{"line_number":2587,"context_line":"        )"},{"line_number":2588,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":2589,"context_line":"            name\u003d\u0027m1.small\u0027,"},{"line_number":2590,"context_line":"            memory_mb\u003d6,"}],"source_content_type":"text/x-python","patch_set":22,"id":"315b3a68_0f6c4678","line":2587,"in_reply_to":"25845043_0dc8933f","updated":"2022-08-31 18:12:21.000000000","message":"this is indented correctly.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":false,"context_lines":[{"line_number":8711,"context_line":"            exception.InvalidVIOMMUArchitecture, drvr._get_guest_config,"},{"line_number":8712,"context_line":"            instance_ref, [], image_meta, disk_info"},{"line_number":8713,"context_line":"        )"},{"line_number":8714,"context_line":""},{"line_number":8715,"context_line":"    def test_get_guest_memory_balloon_config_by_default(self):"},{"line_number":8716,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":8717,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1809bd27_e9faba8e","line":8714,"updated":"2022-08-31 16:57:16.000000000","message":"I don\u0027t see any missing coverage here, excellent point.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":2750,"context_line":"        return root"},{"line_number":2751,"context_line":""},{"line_number":2752,"context_line":""},{"line_number":2753,"context_line":"class LibvirtConfigGuestFeatureIOAPIC(LibvirtConfigGuestFeature):"},{"line_number":2754,"context_line":""},{"line_number":2755,"context_line":"    def __init__(self, **kwargs):"},{"line_number":2756,"context_line":"        super().__init__(\"ioapic\", **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c6b7d3ec_f6497512","line":2753,"updated":"2022-04-21 18:03:43.000000000","message":"i was going to ask for this to be a sperate patch, i know its required for interupt remapping which we should always enable if usion the viommu.\nfor that reason im ok to keep this in this patch isntead of spliting it out.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":2750,"context_line":"        return root"},{"line_number":2751,"context_line":""},{"line_number":2752,"context_line":""},{"line_number":2753,"context_line":"class LibvirtConfigGuestFeatureIOAPIC(LibvirtConfigGuestFeature):"},{"line_number":2754,"context_line":""},{"line_number":2755,"context_line":"    def __init__(self, **kwargs):"},{"line_number":2756,"context_line":"        super().__init__(\"ioapic\", **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bb065c4d_5f27b34f","line":2753,"in_reply_to":"c6b7d3ec_f6497512","updated":"2022-06-01 12:40:21.000000000","message":"Ack","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":3694,"context_line":"    def __init__(self, **kwargs):"},{"line_number":3695,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"}],"source_content_type":"text/x-python","patch_set":5,"id":"7d2d34b1_492767d8","line":3697,"range":{"start_line":3697,"start_character":27,"end_line":3697,"end_character":32},"updated":"2022-04-21 18:03:43.000000000","message":"Supported values are intel (for Q35 guests) smmuv3 (since 5.5.0, for ARM virt guests), and virtio (since 8.3.0, for Q35 and ARM virt guests).\n\nso long term i think we want virtio to be the default.\n\ni woudl prefer to actully use the viommu_model be the way wer request this to be enabled\n\nso hw_viommu_modle\u003dnone|intel|smmuv3|virtio\n\nhardware configurtion is ment to be done via image properties not extra specs\ni could see support both but not flavor extraspec only.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":3694,"context_line":"    def __init__(self, **kwargs):"},{"line_number":3695,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"}],"source_content_type":"text/x-python","patch_set":5,"id":"832d1d39_d55d65a3","line":3697,"range":{"start_line":3697,"start_character":27,"end_line":3697,"end_character":32},"in_reply_to":"0f2468d2_b4b76fc0","updated":"2022-06-01 12:40:21.000000000","message":"addressed in spec","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7249a5c4031708234cfffe75e18cb9abc98afdbf","unresolved":true,"context_lines":[{"line_number":3694,"context_line":"    def __init__(self, **kwargs):"},{"line_number":3695,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"}],"source_content_type":"text/x-python","patch_set":5,"id":"0f2468d2_b4b76fc0","line":3697,"range":{"start_line":3697,"start_character":27,"end_line":3697,"end_character":32},"in_reply_to":"2dd0b6ba_aaf3a6f6","updated":"2022-05-13 11:32:29.000000000","message":"Noted this on the spec but I think this decision should be automatic (i.e. based on the libvirt version and host architecture). We should choose the best option for users","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":3694,"context_line":"    def __init__(self, **kwargs):"},{"line_number":3695,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"}],"source_content_type":"text/x-python","patch_set":5,"id":"2dd0b6ba_aaf3a6f6","line":3697,"range":{"start_line":3697,"start_character":27,"end_line":3697,"end_character":32},"in_reply_to":"7d2d34b1_492767d8","updated":"2022-04-25 14:58:41.000000000","message":"I think this is a nice way of making it exposed with all the different options as well, so we can future proof this","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":3695,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"eb68749d_e187b672","line":3699,"range":{"start_line":3698,"start_character":7,"end_line":3699,"end_character":39},"updated":"2022-04-21 18:03:43.000000000","message":"by default i think we want both of these on unless we expos those too but i dont really sea reason to ever tunr them off.\n\nboth were intoduce in qemu 3.4.0 which is below our min version and without these the perfroamce  of passthough devices partically is quite bad.\n\nits still not greate with caching but its better.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":3695,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"069cfd43_630fb926","line":3699,"range":{"start_line":3698,"start_character":7,"end_line":3699,"end_character":39},"in_reply_to":"eb68749d_e187b672","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"},{"line_number":3703,"context_line":"        iommu \u003d super().format_dom()"}],"source_content_type":"text/x-python","patch_set":5,"id":"e2fe9093_efcab54b","line":3700,"range":{"start_line":3700,"start_character":8,"end_line":3700,"end_character":30},"updated":"2022-04-21 18:03:43.000000000","message":"this im not sure we shoudl expsoe. we could but i woudl be inclide not set this in the guest xml at all and leave this to libvirt.\n\nif we were to supprot this via ideally an image metaddata property we woudl need to schdule based on this to ensure that move operation continue to work.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"c633b01da6115904d91d82c6dfdde1703d49e648","unresolved":false,"context_lines":[{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"},{"line_number":3703,"context_line":"        iommu \u003d super().format_dom()"}],"source_content_type":"text/x-python","patch_set":5,"id":"43e77511_97ed9d43","line":3700,"range":{"start_line":3700,"start_character":8,"end_line":3700,"end_character":30},"in_reply_to":"39bc89a0_3c316f3a","updated":"2022-05-16 17:23:32.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"33f607b86dd6f5a7f5899fae0211decec4433794","unresolved":true,"context_lines":[{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"},{"line_number":3703,"context_line":"        iommu \u003d super().format_dom()"}],"source_content_type":"text/x-python","patch_set":5,"id":"d8c4a8e5_63926522","line":3700,"range":{"start_line":3700,"start_character":8,"end_line":3700,"end_character":30},"in_reply_to":"9de7d990_3a80aeb0","updated":"2022-04-25 15:03:01.000000000","message":"if its strictly requried then an image property or flavor extra specs is my preference\n\nper host config option cause issue with migration so i prefer to tie the value to the liftime of the vm via image properties or flavor extra specs when we can.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7249a5c4031708234cfffe75e18cb9abc98afdbf","unresolved":true,"context_lines":[{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"},{"line_number":3703,"context_line":"        iommu \u003d super().format_dom()"}],"source_content_type":"text/x-python","patch_set":5,"id":"39bc89a0_3c316f3a","line":3700,"range":{"start_line":3700,"start_character":8,"end_line":3700,"end_character":30},"in_reply_to":"d8c4a8e5_63926522","updated":"2022-05-13 11:32:29.000000000","message":"@mnaser\n\n\u003e yeah, our use case kinda makes it necessary to have this, a config option maybe?\n\nCan you explain why this is the case, ideally in the spec.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":3697,"context_line":"        self.model: str \u003d \"intel\""},{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"},{"line_number":3703,"context_line":"        iommu \u003d super().format_dom()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9de7d990_3a80aeb0","line":3700,"range":{"start_line":3700,"start_character":8,"end_line":3700,"end_character":30},"in_reply_to":"e2fe9093_efcab54b","updated":"2022-04-25 14:58:41.000000000","message":"yeah, our use case kinda makes it necessary to have this, a config option maybe?","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"},{"line_number":3703,"context_line":"        iommu \u003d super().format_dom()"},{"line_number":3704,"context_line":"        iommu.set(\"model\", self.model)"}],"source_content_type":"text/x-python","patch_set":5,"id":"933e3afc_085732a5","line":3701,"updated":"2022-04-21 18:03:43.000000000","message":"you should also have self.iotlb: Bool \u003d True","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":3698,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3699,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3700,"context_line":"        self.aw_bits: int \u003d 39"},{"line_number":3701,"context_line":""},{"line_number":3702,"context_line":"    def format_dom(self):"},{"line_number":3703,"context_line":"        iommu \u003d super().format_dom()"},{"line_number":3704,"context_line":"        iommu.set(\"model\", self.model)"}],"source_content_type":"text/x-python","patch_set":5,"id":"66a7e1a0_6af9396c","line":3701,"in_reply_to":"933e3afc_085732a5","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":3722,"context_line":"    def __init__(self, **kwargs):"},{"line_number":3723,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3724,"context_line":""},{"line_number":3725,"context_line":"        self.model: str \u003d fields.VIOMMUModel.AUTO"},{"line_number":3726,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3727,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3728,"context_line":"        self.aw_bits: int \u003d 39"}],"source_content_type":"text/x-python","patch_set":18,"id":"c75a3e5d_3b72e37f","line":3725,"updated":"2022-08-18 08:14:28.000000000","message":"I don\u0027t see auto as valid value in the libvirt doc","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":3722,"context_line":"    def __init__(self, **kwargs):"},{"line_number":3723,"context_line":"        super().__init__(root_name\u003d\"iommu\", **kwargs)"},{"line_number":3724,"context_line":""},{"line_number":3725,"context_line":"        self.model: str \u003d fields.VIOMMUModel.AUTO"},{"line_number":3726,"context_line":"        self.interrupt_remapping: bool \u003d False"},{"line_number":3727,"context_line":"        self.caching_mode: bool \u003d False"},{"line_number":3728,"context_line":"        self.aw_bits: int \u003d 39"}],"source_content_type":"text/x-python","patch_set":18,"id":"e27701ce_17ab3dbb","line":3725,"in_reply_to":"c75a3e5d_3b72e37f","updated":"2022-08-20 21:23:36.000000000","message":"Auto is defined here https://review.opendev.org/c/openstack/nova-specs/+/840310/12/specs/zed/approved/libvirt-viommu-device.rst#53\n\n\"``auto`` will select ``virtio`` if Libvirt supports it,\n    else ``intel`` on X86 and ``smmuv3`` on AArch64.\"","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":3737,"context_line":"        driver.set(\"intremap\", self.get_on_off_str(self.interrupt_remapping))"},{"line_number":3738,"context_line":"        driver.set(\"caching_mode\", self.get_on_off_str(self.caching_mode))"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"        # Set aw_bits to None when the Libvert version not satisfy"},{"line_number":3741,"context_line":"        # MIN_LIBVIRT_VIOMMU_AW_BITS in driver. When it\u0027s None, means it\u0027s not"},{"line_number":3742,"context_line":"        # supported to have aw_bits."},{"line_number":3743,"context_line":"        if self.aw_bits is not None:"}],"source_content_type":"text/x-python","patch_set":18,"id":"8be43abe_f4cc1990","line":3740,"range":{"start_line":3740,"start_character":39,"end_line":3740,"end_character":46},"updated":"2022-08-18 08:14:28.000000000","message":"nit: Libvirt","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":3737,"context_line":"        driver.set(\"intremap\", self.get_on_off_str(self.interrupt_remapping))"},{"line_number":3738,"context_line":"        driver.set(\"caching_mode\", self.get_on_off_str(self.caching_mode))"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"        # Set aw_bits to None when the Libvert version not satisfy"},{"line_number":3741,"context_line":"        # MIN_LIBVIRT_VIOMMU_AW_BITS in driver. When it\u0027s None, means it\u0027s not"},{"line_number":3742,"context_line":"        # supported to have aw_bits."},{"line_number":3743,"context_line":"        if self.aw_bits is not None:"}],"source_content_type":"text/x-python","patch_set":18,"id":"c2c5d6ec_269b7b6a","line":3740,"range":{"start_line":3740,"start_character":39,"end_line":3740,"end_character":46},"in_reply_to":"8be43abe_f4cc1990","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":3738,"context_line":"        driver.set(\"caching_mode\", self.get_on_off_str(self.caching_mode))"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"        # Set aw_bits to None when the Libvert version not satisfy"},{"line_number":3741,"context_line":"        # MIN_LIBVIRT_VIOMMU_AW_BITS in driver. When it\u0027s None, means it\u0027s not"},{"line_number":3742,"context_line":"        # supported to have aw_bits."},{"line_number":3743,"context_line":"        if self.aw_bits is not None:"},{"line_number":3744,"context_line":"            driver.set(\"aw_bits\", str(self.aw_bits))"}],"source_content_type":"text/x-python","patch_set":18,"id":"97a9f241_5cd5682f","line":3741,"updated":"2022-08-18 08:14:28.000000000","message":"Is it OK to emit the field if libvirt does not support it?","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":3738,"context_line":"        driver.set(\"caching_mode\", self.get_on_off_str(self.caching_mode))"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"        # Set aw_bits to None when the Libvert version not satisfy"},{"line_number":3741,"context_line":"        # MIN_LIBVIRT_VIOMMU_AW_BITS in driver. When it\u0027s None, means it\u0027s not"},{"line_number":3742,"context_line":"        # supported to have aw_bits."},{"line_number":3743,"context_line":"        if self.aw_bits is not None:"},{"line_number":3744,"context_line":"            driver.set(\"aw_bits\", str(self.aw_bits))"}],"source_content_type":"text/x-python","patch_set":18,"id":"0e0436ad_4fc954c5","line":3741,"in_reply_to":"97a9f241_5cd5682f","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":3759,"context_line":"            self.caching_mode \u003d self.parse_on_off_str("},{"line_number":3760,"context_line":"                driver.get(\"caching_mode\"))"},{"line_number":3761,"context_line":"            if driver.get(\"aw_bits\") is not None:"},{"line_number":3762,"context_line":"                self.aw_bits \u003d int(driver.get(\"aw_bits\"))"},{"line_number":3763,"context_line":"            self.iotlb \u003d self.parse_on_off_str(driver.get(\"iotlb\"))"},{"line_number":3764,"context_line":"            self.eim \u003d self.parse_on_off_str(driver.get(\"eim\"))"},{"line_number":3765,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"62b7ae95_f9e6f775","line":3762,"updated":"2022-08-18 08:14:28.000000000","message":"hm if aw_bits is None then self.aw_bits will have a value of 39 set by __init__. I think that is misleading at least","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":3759,"context_line":"            self.caching_mode \u003d self.parse_on_off_str("},{"line_number":3760,"context_line":"                driver.get(\"caching_mode\"))"},{"line_number":3761,"context_line":"            if driver.get(\"aw_bits\") is not None:"},{"line_number":3762,"context_line":"                self.aw_bits \u003d int(driver.get(\"aw_bits\"))"},{"line_number":3763,"context_line":"            self.iotlb \u003d self.parse_on_off_str(driver.get(\"iotlb\"))"},{"line_number":3764,"context_line":"            self.eim \u003d self.parse_on_off_str(driver.get(\"eim\"))"},{"line_number":3765,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"109bc7e0_0bbaf947","line":3762,"in_reply_to":"62b7ae95_f9e6f775","updated":"2022-08-20 21:23:36.000000000","message":"fixed","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"7d601e1a662729ef48e40a9ed140e234bb3346f6","unresolved":true,"context_lines":[{"line_number":6969,"context_line":"        if vpmems:"},{"line_number":6970,"context_line":"            self._guest_add_vpmems(guest, vpmems)"},{"line_number":6971,"context_line":""},{"line_number":6972,"context_line":"        self._guest_add_iommu_device(guest, image_meta)"},{"line_number":6973,"context_line":""},{"line_number":6974,"context_line":"        return guest"},{"line_number":6975,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9e9cf698_25c6c7ec","line":6972,"updated":"2022-04-19 11:32:40.000000000","message":"maybe we can pass the flavour here too?","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce0a9c82be215f5e665c34bc68080c96e785a86e","unresolved":false,"context_lines":[{"line_number":6969,"context_line":"        if vpmems:"},{"line_number":6970,"context_line":"            self._guest_add_vpmems(guest, vpmems)"},{"line_number":6971,"context_line":""},{"line_number":6972,"context_line":"        self._guest_add_iommu_device(guest, image_meta)"},{"line_number":6973,"context_line":""},{"line_number":6974,"context_line":"        return guest"},{"line_number":6975,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"0836a200_821dc15d","line":6972,"in_reply_to":"9e9cf698_25c6c7ec","updated":"2022-04-20 07:19:07.000000000","message":"Done","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"7d601e1a662729ef48e40a9ed140e234bb3346f6","unresolved":true,"context_lines":[{"line_number":7299,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7300,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7301,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7302,"context_line":"        iommu.aw_bits \u003d CONF.libvirt.address_width_bits"},{"line_number":7303,"context_line":"        guest.add_device(iommu)"},{"line_number":7304,"context_line":""},{"line_number":7305,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"c0a874f0_4ff3edf9","line":7302,"updated":"2022-04-19 11:32:40.000000000","message":"and use the flavour to set aw_bits if it\u0027s specified, otherwise omit it so it sues the libvirt built in?","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce0a9c82be215f5e665c34bc68080c96e785a86e","unresolved":false,"context_lines":[{"line_number":7299,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7300,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7301,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7302,"context_line":"        iommu.aw_bits \u003d CONF.libvirt.address_width_bits"},{"line_number":7303,"context_line":"        guest.add_device(iommu)"},{"line_number":7304,"context_line":""},{"line_number":7305,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5b03d258_b6e76abb","line":7302,"in_reply_to":"c0a874f0_4ff3edf9","updated":"2022-04-20 07:19:07.000000000","message":"Done","commit_id":"181d9e956bc98b077920fe0434a9d8c21a008ee2"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"a9bbe8e75182195661ae4cdce33c786a67e67fde","unresolved":true,"context_lines":[{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5e171bf3_2dcfab2d","line":7304,"updated":"2022-04-20 14:25:27.000000000","message":"let\u0027s maybe use: `hw:viommu_aw_bits`\n\nand maybe document it here? \n\nhttps://docs.openstack.org/nova/latest/configuration/extra-specs.html#hw-driver","commit_id":"737ea7564ea72f0095c717fa2f33617c68c6174f"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a8d6a9e4_2a5582b9","line":7304,"in_reply_to":"5e171bf3_2dcfab2d","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"737ea7564ea72f0095c717fa2f33617c68c6174f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":6083,"context_line":"            if hide_hypervisor_id:"},{"line_number":6084,"context_line":"                hv.vendorid_spoof \u003d True"},{"line_number":6085,"context_line":""},{"line_number":6086,"context_line":"            guest.add_feature(hv)"},{"line_number":6087,"context_line":""},{"line_number":6088,"context_line":"        if CONF.libvirt.virt_type in (\"qemu\", \"kvm\"):"},{"line_number":6089,"context_line":"            # vmcoreinfo support is x86, ARM-only for now"}],"source_content_type":"text/x-python","patch_set":5,"id":"ee26f7f4_9043e833","line":6086,"range":{"start_line":6086,"start_character":11,"end_line":6086,"end_character":33},"updated":"2022-04-21 18:03:43.000000000","message":"this is kind of unrealted and coudl be a sperate patch but im not agaisnt this.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":6083,"context_line":"            if hide_hypervisor_id:"},{"line_number":6084,"context_line":"                hv.vendorid_spoof \u003d True"},{"line_number":6085,"context_line":""},{"line_number":6086,"context_line":"            guest.add_feature(hv)"},{"line_number":6087,"context_line":""},{"line_number":6088,"context_line":"        if CONF.libvirt.virt_type in (\"qemu\", \"kvm\"):"},{"line_number":6089,"context_line":"            # vmcoreinfo support is x86, ARM-only for now"}],"source_content_type":"text/x-python","patch_set":5,"id":"999a9fe7_6f8d1022","line":6086,"range":{"start_line":6086,"start_character":11,"end_line":6086,"end_character":33},"in_reply_to":"edbbd3a3_5deb69ef","updated":"2022-06-01 12:40:21.000000000","message":"Let\u0027s make this a separate patch","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7249a5c4031708234cfffe75e18cb9abc98afdbf","unresolved":true,"context_lines":[{"line_number":6083,"context_line":"            if hide_hypervisor_id:"},{"line_number":6084,"context_line":"                hv.vendorid_spoof \u003d True"},{"line_number":6085,"context_line":""},{"line_number":6086,"context_line":"            guest.add_feature(hv)"},{"line_number":6087,"context_line":""},{"line_number":6088,"context_line":"        if CONF.libvirt.virt_type in (\"qemu\", \"kvm\"):"},{"line_number":6089,"context_line":"            # vmcoreinfo support is x86, ARM-only for now"}],"source_content_type":"text/x-python","patch_set":5,"id":"edbbd3a3_5deb69ef","line":6086,"range":{"start_line":6086,"start_character":11,"end_line":6086,"end_character":33},"in_reply_to":"ee26f7f4_9043e833","updated":"2022-05-13 11:32:29.000000000","message":"I thought I had it as a separate patch, actually. It could definitely be split out (ideally as a precursor)","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":7287,"context_line":"            # vIOMMU requires QEMU"},{"line_number":7288,"context_line":"            return"},{"line_number":7289,"context_line":""},{"line_number":7290,"context_line":"        if not self._is_x86_guest(image_meta):"},{"line_number":7291,"context_line":"            # vIOMMU is technically support on AArch64, but we need someone"},{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"}],"source_content_type":"text/x-python","patch_set":5,"id":"829e6c7d_461cc6b9","line":7293,"range":{"start_line":7290,"start_character":8,"end_line":7293,"end_character":18},"updated":"2022-04-21 18:03:43.000000000","message":"we shoudl just support this for all architecures.\n\nif really need it can test this on my macbook air\n\nbut we should should not restict this to x86","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":7287,"context_line":"            # vIOMMU requires QEMU"},{"line_number":7288,"context_line":"            return"},{"line_number":7289,"context_line":""},{"line_number":7290,"context_line":"        if not self._is_x86_guest(image_meta):"},{"line_number":7291,"context_line":"            # vIOMMU is technically support on AArch64, but we need someone"},{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"}],"source_content_type":"text/x-python","patch_set":5,"id":"e6fa1d3c_22b092b9","line":7293,"range":{"start_line":7290,"start_character":8,"end_line":7293,"end_character":18},"in_reply_to":"829e6c7d_461cc6b9","updated":"2022-04-25 14:58:41.000000000","message":"perhaps rather than an empty return, we can LOG.warning(..) -- I think we do similar things for aarch64 + n-cpu in general","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":false,"context_lines":[{"line_number":7287,"context_line":"            # vIOMMU requires QEMU"},{"line_number":7288,"context_line":"            return"},{"line_number":7289,"context_line":""},{"line_number":7290,"context_line":"        if not self._is_x86_guest(image_meta):"},{"line_number":7291,"context_line":"            # vIOMMU is technically support on AArch64, but we need someone"},{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"}],"source_content_type":"text/x-python","patch_set":5,"id":"2cd7ba60_5fc639aa","line":7293,"range":{"start_line":7290,"start_character":8,"end_line":7293,"end_character":18},"in_reply_to":"96ff206a_f4179fb3","updated":"2022-07-07 10:45:45.000000000","message":"Ack","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":true,"context_lines":[{"line_number":7287,"context_line":"            # vIOMMU requires QEMU"},{"line_number":7288,"context_line":"            return"},{"line_number":7289,"context_line":""},{"line_number":7290,"context_line":"        if not self._is_x86_guest(image_meta):"},{"line_number":7291,"context_line":"            # vIOMMU is technically support on AArch64, but we need someone"},{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"}],"source_content_type":"text/x-python","patch_set":5,"id":"96ff206a_f4179fb3","line":7293,"range":{"start_line":7290,"start_character":8,"end_line":7293,"end_character":18},"in_reply_to":"e6fa1d3c_22b092b9","updated":"2022-06-01 12:40:21.000000000","message":"IMO, warning log with message said something like `we don\u0027t know if aarch64 gonna work because we can\u0027t test` might be a little aggressive. If it\u0027s okay, I will put a note in code and maybe we can ask in community to get someone help to test this feature?","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"},{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"2fdeea78_b1834f67","line":7297,"range":{"start_line":7295,"start_character":0,"end_line":7297,"end_character":18},"updated":"2022-04-21 18:03:43.000000000","message":"again we shoudl not restict this to q35 as arm which uses virt is also supproted","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"},{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"d4d48096_e7dab32d","line":7297,"range":{"start_line":7295,"start_character":0,"end_line":7297,"end_character":18},"in_reply_to":"27994e00_4ad2a842","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"},{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"d66d098c_b3d24fa6","line":7297,"range":{"start_line":7295,"start_character":0,"end_line":7297,"end_character":18},"in_reply_to":"27994e00_4ad2a842","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":7292,"context_line":"            # with hardware to test this functionality for us"},{"line_number":7293,"context_line":"            return"},{"line_number":7294,"context_line":""},{"line_number":7295,"context_line":"        if \u0027q35\u0027 not in guest.os_mach_type:"},{"line_number":7296,"context_line":"            # vIOMMU support on x86_64 requires the Q35 machine type"},{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"27994e00_4ad2a842","line":7297,"range":{"start_line":7295,"start_character":0,"end_line":7297,"end_character":18},"in_reply_to":"2fdeea78_b1834f67","updated":"2022-04-25 14:58:41.000000000","message":"+1","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"84a9337c_e4fbba75","line":7300,"range":{"start_line":7300,"start_character":7,"end_line":7300,"end_character":29},"updated":"2022-04-21 18:03:43.000000000","message":"as noted else where this should  be configerable or virtio","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"b5861e51_85f88e5e","line":7300,"range":{"start_line":7300,"start_character":7,"end_line":7300,"end_character":29},"in_reply_to":"64a01bc1_f161359c","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ccae161_97915ca8","line":7300,"range":{"start_line":7300,"start_character":7,"end_line":7300,"end_character":29},"in_reply_to":"84a9337c_e4fbba75","updated":"2022-04-25 14:58:41.000000000","message":"_+1","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7249a5c4031708234cfffe75e18cb9abc98afdbf","unresolved":true,"context_lines":[{"line_number":7297,"context_line":"            return"},{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"64a01bc1_f161359c","line":7300,"range":{"start_line":7300,"start_character":7,"end_line":7300,"end_character":29},"in_reply_to":"9ccae161_97915ca8","updated":"2022-05-13 11:32:29.000000000","message":"Use virtio if libvirt \u003e\u003d 8.5.0, else intel or the aarch64 equivalent","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"}],"source_content_type":"text/x-python","patch_set":5,"id":"4a207ea7_5df3a2bc","line":7301,"range":{"start_line":7301,"start_character":7,"end_line":7301,"end_character":68},"updated":"2022-04-21 18:03:43.000000000","message":"no this is support for kvm too\n\nso if we pass the if CONF.libvirt.virt_type not in (\u0027qemu\u0027, \u0027kvm\u0027):\non line 7286 this can just be True","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"}],"source_content_type":"text/x-python","patch_set":5,"id":"d7b122b5_a8693c4e","line":7301,"range":{"start_line":7301,"start_character":7,"end_line":7301,"end_character":68},"in_reply_to":"4a207ea7_5df3a2bc","updated":"2022-04-25 14:58:41.000000000","message":"+1","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7298,"context_line":""},{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bcc126c0_fe9d7564","line":7301,"range":{"start_line":7301,"start_character":7,"end_line":7301,"end_character":68},"in_reply_to":"d7b122b5_a8693c4e","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"e80ef171_dd304734","line":7302,"range":{"start_line":7302,"start_character":8,"end_line":7302,"end_character":33},"updated":"2022-04-21 18:03:43.000000000","message":"+1\nplease also enabel the iotlb caching too","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a408d9c_a828b1c3","line":7302,"range":{"start_line":7302,"start_character":8,"end_line":7302,"end_character":33},"in_reply_to":"b05a019b_a2e285eb","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":7299,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7300,"context_line":"        iommu.model \u003d \u0027intel\u0027"},{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"b05a019b_a2e285eb","line":7302,"range":{"start_line":7302,"start_character":8,"end_line":7302,"end_character":33},"in_reply_to":"e80ef171_dd304734","updated":"2022-04-25 14:58:41.000000000","message":"+1","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""},{"line_number":7308,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"e8a5da14_2cd43011","line":7305,"range":{"start_line":7304,"start_character":8,"end_line":7305,"end_character":65},"updated":"2022-04-21 18:03:43.000000000","message":"this i would omit or expose via an image property or both and image propety and flavor extra spec but not just a flaovr extra spec.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""},{"line_number":7308,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf0b39c7_3ded1f4a","line":7305,"range":{"start_line":7304,"start_character":8,"end_line":7305,"end_character":65},"in_reply_to":"7617a955_35e77296","updated":"2022-06-01 12:40:21.000000000","message":"This is now hidden from end user","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":7301,"context_line":"        iommu.interrupt_remapping \u003d CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027"},{"line_number":7302,"context_line":"        iommu.caching_mode \u003d True"},{"line_number":7303,"context_line":"        extra_specs \u003d flavor[\u0027extra_specs\u0027]"},{"line_number":7304,"context_line":"        if \u0027hw:viommu_aw_bits\u0027 in extra_specs:"},{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""},{"line_number":7308,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7617a955_35e77296","line":7305,"range":{"start_line":7304,"start_character":8,"end_line":7305,"end_character":65},"in_reply_to":"e8a5da14_2cd43011","updated":"2022-04-25 14:58:41.000000000","message":"this is necessary (at least for our use case), so I think we\u0027re going to have to expose it inside image/flavor property, we can do that as well.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"977417ebef4ec2a45b8c26edd9cec4bbf3793b28","unresolved":true,"context_lines":[{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""},{"line_number":7308,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"},{"line_number":7309,"context_line":"            ioapic \u003d vconfig.LibvirtConfigGuestFeatureIOAPIC()"},{"line_number":7310,"context_line":"            guest.add_feature(ioapic)"},{"line_number":7311,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"e40cc2f9_0ac4181d","line":7308,"range":{"start_line":7308,"start_character":8,"end_line":7308,"end_character":44},"updated":"2022-04-21 18:03:43.000000000","message":"this is also not correct it support for qemu and kvm virt type and we shoudl just unconditonally enable the split ioapic fi we are enabeling the viommu.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"a58357ff1122fc32d4a6f8bbfae7fc1b6a5ad855","unresolved":false,"context_lines":[{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""},{"line_number":7308,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"},{"line_number":7309,"context_line":"            ioapic \u003d vconfig.LibvirtConfigGuestFeatureIOAPIC()"},{"line_number":7310,"context_line":"            guest.add_feature(ioapic)"},{"line_number":7311,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"0972fb08_827c409b","line":7308,"range":{"start_line":7308,"start_character":8,"end_line":7308,"end_character":44},"in_reply_to":"8bb94cf2_54e78064","updated":"2022-06-01 12:40:21.000000000","message":"Done","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"00e8a686a9efb2357d826cf48e134cd04c270c2f","unresolved":true,"context_lines":[{"line_number":7305,"context_line":"            iommu.aw_bits \u003d int(extra_specs[\u0027hw:viommu_aw_bits\u0027])"},{"line_number":7306,"context_line":"        guest.add_device(iommu)"},{"line_number":7307,"context_line":""},{"line_number":7308,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027qemu\u0027:"},{"line_number":7309,"context_line":"            ioapic \u003d vconfig.LibvirtConfigGuestFeatureIOAPIC()"},{"line_number":7310,"context_line":"            guest.add_feature(ioapic)"},{"line_number":7311,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"8bb94cf2_54e78064","line":7308,"range":{"start_line":7308,"start_character":8,"end_line":7308,"end_character":44},"in_reply_to":"e40cc2f9_0ac4181d","updated":"2022-04-25 14:58:41.000000000","message":"I agree with this, we should indeed enable it only if viommu is not enabled so we drop deployer impact.","commit_id":"8b2782eff91710833f18dd85e2efb22d912a848a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da834d6a8bf647dcbb6b4f8e10e0bd8377215a81","unresolved":true,"context_lines":[{"line_number":7328,"context_line":"        iommu.model \u003d image_meta.properties.get("},{"line_number":7329,"context_line":"            \u0027hw_viommu_model\u0027) or flavor.extra_specs.get("},{"line_number":7330,"context_line":"                \u0027hw:viommu_model\u0027) or fields.VIOMMUModel.NONE"},{"line_number":7331,"context_line":"        if iommu.model \u003d\u003d fields.VIOMMUModel.AUTO:"},{"line_number":7332,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL):"},{"line_number":7333,"context_line":"                iommu.model \u003d fields.VIOMMUModel.VIRTIO"},{"line_number":7334,"context_line":"            elif self._is_x86_guest(image_meta) and ("},{"line_number":7335,"context_line":"                guest.os_mach_type is not None and \u0027q35\u0027 in guest.os_mach_type"},{"line_number":7336,"context_line":"            ):"},{"line_number":7337,"context_line":"                iommu.model \u003d fields.VIOMMUModel.INTEL"},{"line_number":7338,"context_line":"            elif self._is_aarch64_guest(image_meta):"},{"line_number":7339,"context_line":"                iommu.model \u003d fields.VIOMMUModel.SMMUV3"},{"line_number":7340,"context_line":"            else:"},{"line_number":7341,"context_line":"                iommu.model \u003d fields.VIOMMUModel.NONE"},{"line_number":7342,"context_line":"        if iommu.model \u003d\u003d fields.VIOMMUModel.NONE:"},{"line_number":7343,"context_line":"            return"},{"line_number":7344,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"95661c12_aa698881","line":7341,"range":{"start_line":7331,"start_character":7,"end_line":7341,"end_character":53},"updated":"2022-07-07 10:45:45.000000000","message":"nit: i would kind of perfer this to be its own function","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e7dc204cba5a2f2fc7b57817d4d55de0a50fa415","unresolved":false,"context_lines":[{"line_number":7328,"context_line":"        iommu.model \u003d image_meta.properties.get("},{"line_number":7329,"context_line":"            \u0027hw_viommu_model\u0027) or flavor.extra_specs.get("},{"line_number":7330,"context_line":"                \u0027hw:viommu_model\u0027) or fields.VIOMMUModel.NONE"},{"line_number":7331,"context_line":"        if iommu.model \u003d\u003d fields.VIOMMUModel.AUTO:"},{"line_number":7332,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL):"},{"line_number":7333,"context_line":"                iommu.model \u003d fields.VIOMMUModel.VIRTIO"},{"line_number":7334,"context_line":"            elif self._is_x86_guest(image_meta) and ("},{"line_number":7335,"context_line":"                guest.os_mach_type is not None and \u0027q35\u0027 in guest.os_mach_type"},{"line_number":7336,"context_line":"            ):"},{"line_number":7337,"context_line":"                iommu.model \u003d fields.VIOMMUModel.INTEL"},{"line_number":7338,"context_line":"            elif self._is_aarch64_guest(image_meta):"},{"line_number":7339,"context_line":"                iommu.model \u003d fields.VIOMMUModel.SMMUV3"},{"line_number":7340,"context_line":"            else:"},{"line_number":7341,"context_line":"                iommu.model \u003d fields.VIOMMUModel.NONE"},{"line_number":7342,"context_line":"        if iommu.model \u003d\u003d fields.VIOMMUModel.NONE:"},{"line_number":7343,"context_line":"            return"},{"line_number":7344,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7fcdd773_15ec537d","line":7341,"range":{"start_line":7331,"start_character":7,"end_line":7341,"end_character":53},"in_reply_to":"95661c12_aa698881","updated":"2022-07-20 21:09:31.000000000","message":"Done","commit_id":"670ad3694f8a0a3b0864bc1ba50c5c39e949cfe4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":6625,"context_line":""},{"line_number":6626,"context_line":"    def _is_x86_guest(self, image_meta: \u0027objects.ImageMeta\u0027) -\u003e bool:"},{"line_number":6627,"context_line":"        archs \u003d (fields.Architecture.I686, fields.Architecture.X86_64)"},{"line_number":6628,"context_line":"        return libvirt_utils.get_arch(image_meta) in archs"},{"line_number":6629,"context_line":""},{"line_number":6630,"context_line":"    def _create_consoles_qemu_kvm(self, guest_cfg, instance, flavor,"},{"line_number":6631,"context_line":"                                  image_meta):"}],"source_content_type":"text/x-python","patch_set":18,"id":"ef2017b8_36ea6cea","line":6628,"updated":"2022-08-18 08:14:28.000000000","message":"why the difference for x86? the rest of the checks goes through _check_emulation_arch","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":6625,"context_line":""},{"line_number":6626,"context_line":"    def _is_x86_guest(self, image_meta: \u0027objects.ImageMeta\u0027) -\u003e bool:"},{"line_number":6627,"context_line":"        archs \u003d (fields.Architecture.I686, fields.Architecture.X86_64)"},{"line_number":6628,"context_line":"        return libvirt_utils.get_arch(image_meta) in archs"},{"line_number":6629,"context_line":""},{"line_number":6630,"context_line":"    def _create_consoles_qemu_kvm(self, guest_cfg, instance, flavor,"},{"line_number":6631,"context_line":"                                  image_meta):"}],"source_content_type":"text/x-python","patch_set":18,"id":"b5abd41c_9a922190","line":6628,"in_reply_to":"ef2017b8_36ea6cea","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":7317,"context_line":"        image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":7318,"context_line":"        flavor: \u0027objects.Flavor\u0027,"},{"line_number":7319,"context_line":"    ) -\u003e str:"},{"line_number":7320,"context_line":"        model \u003d image_meta.properties.get("},{"line_number":7321,"context_line":"            \u0027hw_viommu_model\u0027) or flavor.extra_specs.get("},{"line_number":7322,"context_line":"                \u0027hw:viommu_model\u0027)"},{"line_number":7323,"context_line":""},{"line_number":7324,"context_line":"        is_q35 \u003d self._is_x86_guest(image_meta) and ("},{"line_number":7325,"context_line":"            guest.os_mach_type is not None and \u0027q35\u0027 in guest.os_mach_type"}],"source_content_type":"text/x-python","patch_set":18,"id":"9fb4cd90_e75c3d05","line":7322,"range":{"start_line":7320,"start_character":0,"end_line":7322,"end_character":34},"updated":"2022-08-18 08:14:28.000000000","message":"hm is it intentional that the image property value has a bigger precedence than than the flavor value? I don\u0027t see this being discussed in the spec","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":7317,"context_line":"        image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":7318,"context_line":"        flavor: \u0027objects.Flavor\u0027,"},{"line_number":7319,"context_line":"    ) -\u003e str:"},{"line_number":7320,"context_line":"        model \u003d image_meta.properties.get("},{"line_number":7321,"context_line":"            \u0027hw_viommu_model\u0027) or flavor.extra_specs.get("},{"line_number":7322,"context_line":"                \u0027hw:viommu_model\u0027)"},{"line_number":7323,"context_line":""},{"line_number":7324,"context_line":"        is_q35 \u003d self._is_x86_guest(image_meta) and ("},{"line_number":7325,"context_line":"            guest.os_mach_type is not None and \u0027q35\u0027 in guest.os_mach_type"}],"source_content_type":"text/x-python","patch_set":18,"id":"aae070ae_59ffe625","line":7322,"range":{"start_line":7320,"start_character":0,"end_line":7322,"end_character":34},"in_reply_to":"9fb4cd90_e75c3d05","updated":"2022-08-20 21:23:36.000000000","message":"It\u0027s not, fixed now","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":7327,"context_line":"        is_aarch64 \u003d self._is_aarch64_guest(image_meta)"},{"line_number":7328,"context_line":""},{"line_number":7329,"context_line":"        if model and not (is_q35 or is_aarch64):"},{"line_number":7330,"context_line":"            # vIOMMU only support for q35 or libvirt currently,"},{"line_number":7331,"context_line":"            # so we riase exception if it is any other architecture."},{"line_number":7332,"context_line":"            arch \u003d self._check_emulation_arch(image_meta)"},{"line_number":7333,"context_line":"            msg \u003d _(\"vIOMMU required either x86(Q35) or AArch64 architecture, \""}],"source_content_type":"text/x-python","patch_set":18,"id":"86721e13_f70cbbef","line":7330,"range":{"start_line":7330,"start_character":38,"end_line":7330,"end_character":52},"updated":"2022-08-18 08:14:28.000000000","message":"I guess something is missing from here","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":7327,"context_line":"        is_aarch64 \u003d self._is_aarch64_guest(image_meta)"},{"line_number":7328,"context_line":""},{"line_number":7329,"context_line":"        if model and not (is_q35 or is_aarch64):"},{"line_number":7330,"context_line":"            # vIOMMU only support for q35 or libvirt currently,"},{"line_number":7331,"context_line":"            # so we riase exception if it is any other architecture."},{"line_number":7332,"context_line":"            arch \u003d self._check_emulation_arch(image_meta)"},{"line_number":7333,"context_line":"            msg \u003d _(\"vIOMMU required either x86(Q35) or AArch64 architecture, \""}],"source_content_type":"text/x-python","patch_set":18,"id":"5af22997_94d49822","line":7330,"range":{"start_line":7330,"start_character":38,"end_line":7330,"end_character":52},"in_reply_to":"86721e13_f70cbbef","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":7342,"context_line":"            ):"},{"line_number":7343,"context_line":"                model \u003d fields.VIOMMUModel.INTEL"},{"line_number":7344,"context_line":"            elif self._is_aarch64_guest(image_meta):"},{"line_number":7345,"context_line":"                model \u003d fields.VIOMMUModel.SMMUV3"},{"line_number":7346,"context_line":"        return model"},{"line_number":7347,"context_line":""},{"line_number":7348,"context_line":"    def _guest_add_iommu_device("}],"source_content_type":"text/x-python","patch_set":18,"id":"bc099af6_df152e96","line":7345,"updated":"2022-08-18 08:14:28.000000000","message":"probably we missing an else here.","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":7342,"context_line":"            ):"},{"line_number":7343,"context_line":"                model \u003d fields.VIOMMUModel.INTEL"},{"line_number":7344,"context_line":"            elif self._is_aarch64_guest(image_meta):"},{"line_number":7345,"context_line":"                model \u003d fields.VIOMMUModel.SMMUV3"},{"line_number":7346,"context_line":"        return model"},{"line_number":7347,"context_line":""},{"line_number":7348,"context_line":"    def _guest_add_iommu_device("}],"source_content_type":"text/x-python","patch_set":18,"id":"1811b327_2779fb23","line":7345,"in_reply_to":"bc099af6_df152e96","updated":"2022-08-20 21:23:36.000000000","message":"actually we only need above cases, so will change the last elif at #7344 to else","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":7357,"context_line":"            return"},{"line_number":7358,"context_line":""},{"line_number":7359,"context_line":"        # (ricolin) vIOMMU is technically support on AArch64, but we need"},{"line_number":7360,"context_line":"        # someone with hardware to test this functionality."},{"line_number":7361,"context_line":""},{"line_number":7362,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7363,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7f2dabfa_50b0c679","line":7360,"updated":"2022-08-18 08:14:28.000000000","message":"I think we decided to implement it any way so this comment can be removed","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":7357,"context_line":"            return"},{"line_number":7358,"context_line":""},{"line_number":7359,"context_line":"        # (ricolin) vIOMMU is technically support on AArch64, but we need"},{"line_number":7360,"context_line":"        # someone with hardware to test this functionality."},{"line_number":7361,"context_line":""},{"line_number":7362,"context_line":"        iommu \u003d vconfig.LibvirtConfigGuestIOMMU()"},{"line_number":7363,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ad411631_efc18208","line":7360,"in_reply_to":"7f2dabfa_50b0c679","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":6629,"context_line":"    def _is_x86_guest(self, image_meta: \u0027objects.ImageMeta\u0027) -\u003e bool:"},{"line_number":6630,"context_line":"        archs \u003d (fields.Architecture.I686, fields.Architecture.X86_64)"},{"line_number":6631,"context_line":"        return self._check_emulation_arch(image_meta) in archs"},{"line_number":6632,"context_line":""},{"line_number":6633,"context_line":"    def _create_consoles_qemu_kvm(self, guest_cfg, instance, flavor,"},{"line_number":6634,"context_line":"                                  image_meta):"},{"line_number":6635,"context_line":"        char_dev_cls \u003d vconfig.LibvirtConfigGuestSerial"}],"source_content_type":"text/x-python","patch_set":21,"id":"501f10a5_81f5c314","line":6632,"updated":"2022-08-25 12:35:18.000000000","message":"just a general comment that we are not checking the types for this file yet but i dont object to having them here for when we eventually do.","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"2c7119e111e95642a54ed4ceb0fbe24e2fe33ef4","unresolved":false,"context_lines":[{"line_number":6629,"context_line":"    def _is_x86_guest(self, image_meta: \u0027objects.ImageMeta\u0027) -\u003e bool:"},{"line_number":6630,"context_line":"        archs \u003d (fields.Architecture.I686, fields.Architecture.X86_64)"},{"line_number":6631,"context_line":"        return self._check_emulation_arch(image_meta) in archs"},{"line_number":6632,"context_line":""},{"line_number":6633,"context_line":"    def _create_consoles_qemu_kvm(self, guest_cfg, instance, flavor,"},{"line_number":6634,"context_line":"                                  image_meta):"},{"line_number":6635,"context_line":"        char_dev_cls \u003d vconfig.LibvirtConfigGuestSerial"}],"source_content_type":"text/x-python","patch_set":21,"id":"e44403e0_b586f4a6","line":6632,"in_reply_to":"501f10a5_81f5c314","updated":"2022-08-31 08:23:03.000000000","message":"Ack","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":7330,"context_line":"        is_aarch64 \u003d self._is_aarch64_guest(image_meta)"},{"line_number":7331,"context_line":""},{"line_number":7332,"context_line":"        if model and not (is_q35 or is_aarch64):"},{"line_number":7333,"context_line":"            # vIOMMU only support for q35 or aarch64 currently,"},{"line_number":7334,"context_line":"            # so we riase exception if it is any other architecture."},{"line_number":7335,"context_line":"            arch \u003d self._check_emulation_arch(image_meta)"},{"line_number":7336,"context_line":"            msg \u003d _(\"vIOMMU required either x86(Q35) or AArch64 architecture, \""},{"line_number":7337,"context_line":"                    \"but given architecture %s.\") % arch"}],"source_content_type":"text/x-python","patch_set":21,"id":"c12efb93_9ba7134c","line":7334,"range":{"start_line":7333,"start_character":11,"end_line":7334,"end_character":68},"updated":"2022-08-25 12:35:18.000000000","message":"you are conflating two things\n\nq35 is not an architecture it sa machine type.\n\nyou shoudl do this as two differnt tests.\n\nfirst check if the architre is x86 or aarch64\n\nand raise an new invalid architrue excption if not one of those.\n\nthen if x86 check that its q35 and raise an invald machine type exception\n\nfor arrach64 we might also want to enforce that the machine type is virt","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":7330,"context_line":"        is_aarch64 \u003d self._is_aarch64_guest(image_meta)"},{"line_number":7331,"context_line":""},{"line_number":7332,"context_line":"        if model and not (is_q35 or is_aarch64):"},{"line_number":7333,"context_line":"            # vIOMMU only support for q35 or aarch64 currently,"},{"line_number":7334,"context_line":"            # so we riase exception if it is any other architecture."},{"line_number":7335,"context_line":"            arch \u003d self._check_emulation_arch(image_meta)"},{"line_number":7336,"context_line":"            msg \u003d _(\"vIOMMU required either x86(Q35) or AArch64 architecture, \""},{"line_number":7337,"context_line":"                    \"but given architecture %s.\") % arch"}],"source_content_type":"text/x-python","patch_set":21,"id":"4fc52692_47ae4c33","line":7334,"range":{"start_line":7333,"start_character":11,"end_line":7334,"end_character":68},"in_reply_to":"c12efb93_9ba7134c","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0143cf130ad2ccaf5a2acaeb3ac27f19e7947f2c","unresolved":true,"context_lines":[{"line_number":7335,"context_line":"            arch \u003d self._check_emulation_arch(image_meta)"},{"line_number":7336,"context_line":"            msg \u003d _(\"vIOMMU required either x86(Q35) or AArch64 architecture, \""},{"line_number":7337,"context_line":"                    \"but given architecture %s.\") % arch"},{"line_number":7338,"context_line":"            raise exception.Invalid(msg)"},{"line_number":7339,"context_line":""},{"line_number":7340,"context_line":"        if model \u003d\u003d fields.VIOMMUModel.AUTO:"},{"line_number":7341,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL):"}],"source_content_type":"text/x-python","patch_set":21,"id":"de1875fe_d5483894","line":7338,"range":{"start_line":7338,"start_character":28,"end_line":7338,"end_character":35},"updated":"2022-08-25 12:35:18.000000000","message":"you shoudl really add a new expction for this instead of requsing Invalid directly.","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"2c7119e111e95642a54ed4ceb0fbe24e2fe33ef4","unresolved":false,"context_lines":[{"line_number":7335,"context_line":"            arch \u003d self._check_emulation_arch(image_meta)"},{"line_number":7336,"context_line":"            msg \u003d _(\"vIOMMU required either x86(Q35) or AArch64 architecture, \""},{"line_number":7337,"context_line":"                    \"but given architecture %s.\") % arch"},{"line_number":7338,"context_line":"            raise exception.Invalid(msg)"},{"line_number":7339,"context_line":""},{"line_number":7340,"context_line":"        if model \u003d\u003d fields.VIOMMUModel.AUTO:"},{"line_number":7341,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL):"}],"source_content_type":"text/x-python","patch_set":21,"id":"fcb83781_d37ed787","line":7338,"range":{"start_line":7338,"start_character":28,"end_line":7338,"end_character":35},"in_reply_to":"de1875fe_d5483894","updated":"2022-08-31 08:23:03.000000000","message":"Done","commit_id":"d2e685cc766a5ae30e54f28f199656929ac3ff46"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":221,"context_line":"NEXT_MIN_LIBVIRT_VERSION \u003d (7, 0, 0)"},{"line_number":222,"context_line":"NEXT_MIN_QEMU_VERSION \u003d (5, 2, 0)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"MIN_LIBVIRT_VIOMMU_AW_BITS \u003d (6, 5, 0)"},{"line_number":225,"context_line":"MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL \u003d (8, 3, 0)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"MIN_LIBVIRT_AARCH64_CPU_COMPARE \u003d (6, 9, 0)"}],"source_content_type":"text/x-python","patch_set":22,"id":"34396abf_9f9971c4","line":224,"updated":"2022-08-31 16:57:16.000000000","message":"maybe a docstring could help explaining why we check some libvirt version for this, but this is a nit. I can see why you add this.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":221,"context_line":"NEXT_MIN_LIBVIRT_VERSION \u003d (7, 0, 0)"},{"line_number":222,"context_line":"NEXT_MIN_QEMU_VERSION \u003d (5, 2, 0)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"MIN_LIBVIRT_VIOMMU_AW_BITS \u003d (6, 5, 0)"},{"line_number":225,"context_line":"MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL \u003d (8, 3, 0)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"MIN_LIBVIRT_AARCH64_CPU_COMPARE \u003d (6, 9, 0)"}],"source_content_type":"text/x-python","patch_set":22,"id":"67aceca7_c8ee0228","line":224,"in_reply_to":"34396abf_9f9971c4","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":false,"context_lines":[{"line_number":6137,"context_line":"                image_meta.properties.get(\u0027img_hide_hypervisor_id\u0027))"},{"line_number":6138,"context_line":""},{"line_number":6139,"context_line":"        if CONF.libvirt.virt_type in (\u0027qemu\u0027, \u0027kvm\u0027):"},{"line_number":6140,"context_line":"            guest.add_feature(vconfig.LibvirtConfigGuestFeatureACPI())"},{"line_number":6141,"context_line":"            if not CONF.workarounds.libvirt_disable_apic:"},{"line_number":6142,"context_line":"                guest.add_feature(vconfig.LibvirtConfigGuestFeatureAPIC())"},{"line_number":6143,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"7fbbea75_afb09ea9","line":6140,"updated":"2022-08-31 16:57:16.000000000","message":"unnecessary change for this patch, right?","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"71f15c265530747a25858609baa4348d13c97d75","unresolved":false,"context_lines":[{"line_number":6137,"context_line":"                image_meta.properties.get(\u0027img_hide_hypervisor_id\u0027))"},{"line_number":6138,"context_line":""},{"line_number":6139,"context_line":"        if CONF.libvirt.virt_type in (\u0027qemu\u0027, \u0027kvm\u0027):"},{"line_number":6140,"context_line":"            guest.add_feature(vconfig.LibvirtConfigGuestFeatureACPI())"},{"line_number":6141,"context_line":"            if not CONF.workarounds.libvirt_disable_apic:"},{"line_number":6142,"context_line":"                guest.add_feature(vconfig.LibvirtConfigGuestFeatureAPIC())"},{"line_number":6143,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"74787966_e205d2fc","line":6140,"in_reply_to":"7fbbea75_afb09ea9","updated":"2022-08-31 18:12:21.000000000","message":"no this is required for the interupt remapping or cacheing to be enabeld i cant rememebr which so this is an intentional change that is related to the feature","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":false,"context_lines":[{"line_number":6674,"context_line":"                self._create_consoles_qemu_kvm("},{"line_number":6675,"context_line":"                    guest_cfg, instance, flavor, image_meta)"},{"line_number":6676,"context_line":""},{"line_number":6677,"context_line":"    def _is_mipsel_guest(self, image_meta: \u0027objects.ImageMeta\u0027) -\u003e bool:"},{"line_number":6678,"context_line":"        archs \u003d (fields.Architecture.MIPSEL, fields.Architecture.MIPS64EL)"},{"line_number":6679,"context_line":"        return self._check_emulation_arch(image_meta) in archs"},{"line_number":6680,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9d9285c5_2299b5ea","line":6677,"updated":"2022-08-31 16:57:16.000000000","message":"unnecessary mypy change but OK, now you did it...","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":true,"context_lines":[{"line_number":7386,"context_line":"    ) -\u003e str:"},{"line_number":7387,"context_line":"        model \u003d flavor.extra_specs.get("},{"line_number":7388,"context_line":"            \u0027hw:viommu_model\u0027) or image_meta.properties.get("},{"line_number":7389,"context_line":"                \u0027hw_viommu_model\u0027)"},{"line_number":7390,"context_line":""},{"line_number":7391,"context_line":"        is_x86 \u003d self._is_x86_guest(image_meta)"},{"line_number":7392,"context_line":"        is_aarch64 \u003d self._is_aarch64_guest(image_meta)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1352e68a_0aae89d5","line":7389,"updated":"2022-08-31 16:57:16.000000000","message":"you could return quickly here if both the specs or the props aren\u0027t asking for vOIMMU.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"586b0c74a4e8f5ae8c7619a6692628b9e20b06c4","unresolved":false,"context_lines":[{"line_number":7386,"context_line":"    ) -\u003e str:"},{"line_number":7387,"context_line":"        model \u003d flavor.extra_specs.get("},{"line_number":7388,"context_line":"            \u0027hw:viommu_model\u0027) or image_meta.properties.get("},{"line_number":7389,"context_line":"                \u0027hw_viommu_model\u0027)"},{"line_number":7390,"context_line":""},{"line_number":7391,"context_line":"        is_x86 \u003d self._is_x86_guest(image_meta)"},{"line_number":7392,"context_line":"        is_aarch64 \u003d self._is_aarch64_guest(image_meta)"}],"source_content_type":"text/x-python","patch_set":22,"id":"56544881_4480d79b","line":7389,"in_reply_to":"1352e68a_0aae89d5","updated":"2022-08-31 18:41:15.000000000","message":"Done","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d522312c0d02bd8f360eb0349acd1034bd00e788","unresolved":false,"context_lines":[{"line_number":7391,"context_line":"        is_x86 \u003d self._is_x86_guest(image_meta)"},{"line_number":7392,"context_line":"        is_aarch64 \u003d self._is_aarch64_guest(image_meta)"},{"line_number":7393,"context_line":""},{"line_number":7394,"context_line":"        if model:"},{"line_number":7395,"context_line":"            if is_x86:"},{"line_number":7396,"context_line":"                if guest.os_mach_type is not None and not ("},{"line_number":7397,"context_line":"                        \u0027q35\u0027 in guest.os_mach_type"}],"source_content_type":"text/x-python","patch_set":22,"id":"28c41ea0_54ab7280","line":7394,"range":{"start_line":7394,"start_character":11,"end_line":7394,"end_character":16},"updated":"2022-08-31 16:57:16.000000000","message":"from what I see, you directly passthrough the value of the model variable down once you test the architecture.\nFortunately, given the ImageProps is an enum and the flavor spec can only accept an enum too, this works.","commit_id":"9ad100db77a4b38e6d9c87cc0598f66997bebbab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2ea8af4ba9ade2605997a5ef71e61eabd831cec3","unresolved":true,"context_lines":[{"line_number":7418,"context_line":"                    mtype\u003dmtype, arch\u003darch)"},{"line_number":7419,"context_line":"        else:"},{"line_number":7420,"context_line":"            raise exception.InvalidVIOMMUArchitecture("},{"line_number":7421,"context_line":"                arch\u003dself._check_emulation_arch(image_meta))"},{"line_number":7422,"context_line":""},{"line_number":7423,"context_line":"        if model \u003d\u003d fields.VIOMMUModel.AUTO:"},{"line_number":7424,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL):"}],"source_content_type":"text/x-python","patch_set":25,"id":"e4741fcd_a3dfd51d","line":7421,"updated":"2022-09-01 08:05:05.000000000","message":"thanks for clarifying the logic.","commit_id":"14e3b352c24b2a1fe54ba13a733cf6e7989215cc"}],"releasenotes/notes/guest-iommu-device-4795c3a060aca424.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    To enable this, provide `hw:viommu_model` in flavor extra"},{"line_number":9,"context_line":"    spec or equivalent image metadata property `hw_viommu_model` and with the"},{"line_number":10,"context_line":"    guest CPU architecture and OS allows, we can enable viommu in Libvirt"},{"line_number":11,"context_line":"    driver. Support values intel|smmuv3|virtio|auto. Default to ``auto``."},{"line_number":12,"context_line":"    Which ``auto`` will automatically select ``virtio`` if Libvirt supports it,"},{"line_number":13,"context_line":"    else ``intel`` on X86 (Q35) and ``smmuv3`` on AArch64."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"fa271475_d23ec578","line":10,"range":{"start_line":10,"start_character":45,"end_line":10,"end_character":48},"updated":"2022-08-18 08:14:28.000000000","message":"will?","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    To enable this, provide `hw:viommu_model` in flavor extra"},{"line_number":9,"context_line":"    spec or equivalent image metadata property `hw_viommu_model` and with the"},{"line_number":10,"context_line":"    guest CPU architecture and OS allows, we can enable viommu in Libvirt"},{"line_number":11,"context_line":"    driver. Support values intel|smmuv3|virtio|auto. Default to ``auto``."},{"line_number":12,"context_line":"    Which ``auto`` will automatically select ``virtio`` if Libvirt supports it,"},{"line_number":13,"context_line":"    else ``intel`` on X86 (Q35) and ``smmuv3`` on AArch64."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"cde7debc_5a2d1a6a","line":10,"range":{"start_line":10,"start_character":45,"end_line":10,"end_character":48},"in_reply_to":"fa271475_d23ec578","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e1bc5567699e98b9ca9022b572909e61211ec599","unresolved":true,"context_lines":[{"line_number":12,"context_line":"    Which ``auto`` will automatically select ``virtio`` if Libvirt supports it,"},{"line_number":13,"context_line":"    else ``intel`` on X86 (Q35) and ``smmuv3`` on AArch64."},{"line_number":14,"context_line":"    vIOMMU config will raise invalid exception if the guest architecture is"},{"line_number":15,"context_line":"    nither X86 (Q35) or AArch64."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    Note that, enable vIOMMU might introduce significant performance overhead."},{"line_number":18,"context_line":"    You can see performance comparision table from"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"0942edc3_afbc0451","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":10},"updated":"2022-08-18 08:14:28.000000000","message":"nit: neither","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"256652c385db28fa8e18a41a1e6e52e62bf79898","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    Which ``auto`` will automatically select ``virtio`` if Libvirt supports it,"},{"line_number":13,"context_line":"    else ``intel`` on X86 (Q35) and ``smmuv3`` on AArch64."},{"line_number":14,"context_line":"    vIOMMU config will raise invalid exception if the guest architecture is"},{"line_number":15,"context_line":"    nither X86 (Q35) or AArch64."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    Note that, enable vIOMMU might introduce significant performance overhead."},{"line_number":18,"context_line":"    You can see performance comparision table from"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"99529412_ef2004e7","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":10},"in_reply_to":"0942edc3_afbc0451","updated":"2022-08-20 21:23:36.000000000","message":"Done","commit_id":"c900e67a45807ff2703b71a5c99daec7aac75bf8"}]}
