)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44dcdd922a47dc0a9691098d972367d34f5363aa","unresolved":false,"context_lines":[{"line_number":10,"context_line":"libvirt version before enabling NUMA and hugepage support."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"While good, it\u0027s not sufficient.  We also need to check the qemu"},{"line_number":13,"context_line":"version since NUMA hugepage support wasn\u0027t added until version 2.1."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ib31c4f806e30a8b33669d5a15bd1578050c7e352"},{"line_number":16,"context_line":"Closes-Bug: #1422775"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_6c8df97a","line":13,"updated":"2015-04-11 13:07:13.000000000","message":"Reference:\n\nhttp://wiki.qemu.org/ChangeLog/2.1#x86","commit_id":"647462740d1205b0881f21a2d09aa47ef7f61359"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"be8e6ab40b8da4861088d2b25d075b29653f3c10","unresolved":false,"context_lines":[{"line_number":10,"context_line":"libvirt version before enabling NUMA and hugepage support."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"While good, it\u0027s not sufficient.  We also need to check the qemu"},{"line_number":13,"context_line":"version since NUMA hugepage support wasn\u0027t added until version 2.1."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ib31c4f806e30a8b33669d5a15bd1578050c7e352"},{"line_number":16,"context_line":"Closes-Bug: #1422775"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_4cba3de3","line":13,"in_reply_to":"7aaa499b_6c8df97a","updated":"2015-04-11 15:58:29.000000000","message":"Done","commit_id":"647462740d1205b0881f21a2d09aa47ef7f61359"}],"nova/tests/unit/virt/libvirt/fakelibvirt.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c29ae81e18074c79513c2bb9e99035e430eb41fe","unresolved":false,"context_lines":[{"line_number":744,"context_line":""},{"line_number":745,"context_line":"class Connection(object):"},{"line_number":746,"context_line":"    def __init__(self, uri\u003dNone, readonly\u003dFalse, version\u003d9011,"},{"line_number":747,"context_line":"                 hv_version\u003d1001000, host_info\u003dNone):"},{"line_number":748,"context_line":"        if not uri or uri \u003d\u003d \u0027\u0027:"},{"line_number":749,"context_line":"            if allow_default_uri_connection:"},{"line_number":750,"context_line":"                uri \u003d \u0027qemu:///session\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ad0253b_c33f3424","line":747,"updated":"2015-04-28 21:44:51.000000000","message":"Where does the 1.1.0 version come from?","commit_id":"7f4d7e0b67521344e32790e4b59c42073182a2cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"34499a2e53e1c562af6b0d330478bc15f0ebf438","unresolved":false,"context_lines":[{"line_number":744,"context_line":""},{"line_number":745,"context_line":"class Connection(object):"},{"line_number":746,"context_line":"    def __init__(self, uri\u003dNone, readonly\u003dFalse, version\u003d9011,"},{"line_number":747,"context_line":"                 hv_version\u003d1001000, host_info\u003dNone):"},{"line_number":748,"context_line":"        if not uri or uri \u003d\u003d \u0027\u0027:"},{"line_number":749,"context_line":"            if allow_default_uri_connection:"},{"line_number":750,"context_line":"                uri \u003d \u0027qemu:///session\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ad0253b_e90d6f38","line":747,"in_reply_to":"5ad0253b_c33f3424","updated":"2015-04-28 22:22:26.000000000","message":"Lowest MIN_QEMU supported value in nova.virt.libvirt.driver, matches the 9011 on min libvirt version:\n\nMIN_LIBVIRT_VERSION \u003d (0, 9, 11)","commit_id":"7f4d7e0b67521344e32790e4b59c42073182a2cf"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fff9155306a5f9f9b339fa6e84431215d6135b2","unresolved":false,"context_lines":[{"line_number":1338,"context_line":"            self.assertEqual(0, len(cfg.cputune.vcpupin))"},{"line_number":1339,"context_line":"            self.assertIsNone(cfg.cpu.numa)"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":1342,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"},{"line_number":1343,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getLibVersion\u0027)"},{"line_number":1344,"context_line":"    @mock.patch.object(host.Host, \u0027get_capabilities\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aaa499b_cb759afa","line":1341,"updated":"2015-04-15 16:05:17.000000000","message":"It seems we\u0027re mocking out the internals of host.has_min_version which is gross since that\u0027s in the host module and these are tests for the driver module.  We really should be moving some of this to test_host.py and mock out host.has_min_version, but I don\u0027t really want to hold this change up for that.","commit_id":"13d0d8f42c1009e4a5a1be49163bb14aff19ead0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fff9155306a5f9f9b339fa6e84431215d6135b2","unresolved":false,"context_lines":[{"line_number":8871,"context_line":"        mock_version.side_effect \u003d fake_version"},{"line_number":8872,"context_line":"        self._test_get_host_numa_topology(mempages\u003dTrue)"},{"line_number":8873,"context_line":""},{"line_number":8874,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":8875,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"},{"line_number":8876,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getLibVersion\u0027)"},{"line_number":8877,"context_line":"    def test_get_host_numa_topology_no_mempages(self, mock_lib_version,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aaa499b_6b67a64d","line":8874,"updated":"2015-04-15 16:05:17.000000000","message":"ditto","commit_id":"13d0d8f42c1009e4a5a1be49163bb14aff19ead0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fff9155306a5f9f9b339fa6e84431215d6135b2","unresolved":false,"context_lines":[{"line_number":8900,"context_line":"            self.assertIsNone(drvr._get_host_numa_topology())"},{"line_number":8901,"context_line":"        get_caps.assert_called_with()"},{"line_number":8902,"context_line":""},{"line_number":8903,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":8904,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"},{"line_number":8905,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getLibVersion\u0027)"},{"line_number":8906,"context_line":"    def test_get_host_numa_topology_old_version(self, mock_lib_version,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aaa499b_0b570259","line":8903,"updated":"2015-04-15 16:05:17.000000000","message":"ditto","commit_id":"13d0d8f42c1009e4a5a1be49163bb14aff19ead0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c9dd4c9be67655e5dfa43ae16e328691ddc6d965","unresolved":false,"context_lines":[{"line_number":8902,"context_line":"                              return_value\u003dcaps)"},{"line_number":8903,"context_line":"        ) as (has_min_version, get_caps):"},{"line_number":8904,"context_line":"            self.assertIsNone(drvr._get_host_numa_topology())"},{"line_number":8905,"context_line":"        get_caps.assert_called_with()"},{"line_number":8906,"context_line":""},{"line_number":8907,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":8908,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_d3fdcc6f","line":8905,"updated":"2015-04-19 12:22:29.000000000","message":"Hmm, maybe better to do:\n\nself.assertEqual(2, get_caps.call_count)","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dc39e28ce1e51c6cadfa613e49aa8c852731f5bf","unresolved":false,"context_lines":[{"line_number":8902,"context_line":"                              return_value\u003dcaps)"},{"line_number":8903,"context_line":"        ) as (has_min_version, get_caps):"},{"line_number":8904,"context_line":"            self.assertIsNone(drvr._get_host_numa_topology())"},{"line_number":8905,"context_line":"        get_caps.assert_called_with()"},{"line_number":8906,"context_line":""},{"line_number":8907,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":8908,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_5e7c0572","line":8905,"in_reply_to":"dac4157f_d3fdcc6f","updated":"2015-04-20 15:18:05.000000000","message":"Done","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c9dd4c9be67655e5dfa43ae16e328691ddc6d965","unresolved":false,"context_lines":[{"line_number":8919,"context_line":"        mock_type.return_value \u003d libvirt_driver.REQ_HYPERVISOR_NUMA_HUGEPAGE"},{"line_number":8920,"context_line":"        self.assertIsNone(drvr._get_host_numa_topology())"},{"line_number":8921,"context_line":""},{"line_number":8922,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":8923,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"},{"line_number":8924,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getLibVersion\u0027)"},{"line_number":8925,"context_line":"    def test_get_host_numa_topology_xen(self, mock_lib_version,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_f308d093","line":8922,"updated":"2015-04-19 12:22:29.000000000","message":"Wait, why did we need to change this to mock the things that happen inside the hosts module?  If you care about how host.has_min_version is called, just assert the call parameters to mock_version and leave the mock as it was, e.g.:\n\nmock_version.assert_called_once_with(...)","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c30e25c13fdc8b52ef354d8069825043e3c31748","unresolved":false,"context_lines":[{"line_number":8919,"context_line":"        mock_type.return_value \u003d libvirt_driver.REQ_HYPERVISOR_NUMA_HUGEPAGE"},{"line_number":8920,"context_line":"        self.assertIsNone(drvr._get_host_numa_topology())"},{"line_number":8921,"context_line":""},{"line_number":8922,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":8923,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"},{"line_number":8924,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getLibVersion\u0027)"},{"line_number":8925,"context_line":"    def test_get_host_numa_topology_xen(self, mock_lib_version,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_adef6caf","line":8922,"in_reply_to":"dac4157f_5e0f65e1","updated":"2015-04-20 18:52:33.000000000","message":"Oh right, REQ_HYPERVISOR_NUMA_HUGEPAGE replaces the hard-coded qemu/kvm list in the driver.","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dc39e28ce1e51c6cadfa613e49aa8c852731f5bf","unresolved":false,"context_lines":[{"line_number":8919,"context_line":"        mock_type.return_value \u003d libvirt_driver.REQ_HYPERVISOR_NUMA_HUGEPAGE"},{"line_number":8920,"context_line":"        self.assertIsNone(drvr._get_host_numa_topology())"},{"line_number":8921,"context_line":""},{"line_number":8922,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getType\u0027)"},{"line_number":8923,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027)"},{"line_number":8924,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getLibVersion\u0027)"},{"line_number":8925,"context_line":"    def test_get_host_numa_topology_xen(self, mock_lib_version,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_5e0f65e1","line":8922,"in_reply_to":"dac4157f_f308d093","updated":"2015-04-20 15:18:05.000000000","message":"Not quite sure I follow you.  Previously the check for \"xen\" was done in libvirt.driver.LibvirtDriver._has_numa_support() by checking CONF.libvirt.virt_type. So we could just mock has_min_version() as true and test the arch check in isolation.\n\nWith my change, the check for \"xen\" is now done in libvirt.host.Host._version_check(), by checking conn.getType() so I need to mock the Connection type/version/libversion values.","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"896ca9981e25fe938ab87f01be89aa5dca0cafb3","unresolved":false,"context_lines":[{"line_number":4726,"context_line":"    def _has_numa_support(self):"},{"line_number":4727,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4728,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4729,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4732,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_39238cbf","line":4729,"updated":"2015-04-07 15:43:20.000000000","message":"Looks like the original code allows QEMU and KVM, but this change requires QEMU. Does KVM not support NUMA or hugepages?","commit_id":"fb63516c65db49140e41cfbe6468474c135a6ed1"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"c63dcab5810e23a05162e701256bb161bc14845f","unresolved":false,"context_lines":[{"line_number":4726,"context_line":"    def _has_numa_support(self):"},{"line_number":4727,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4728,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4729,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4732,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_842791b5","line":4729,"in_reply_to":"9aa53dc9_2fdb3e7e","updated":"2015-04-08 20:55:29.000000000","message":"I think that unifying them would be clearer. Thanks for the explanation.","commit_id":"fb63516c65db49140e41cfbe6468474c135a6ed1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2473302d629af5a62f3abe225e5f5db9e5db2d12","unresolved":false,"context_lines":[{"line_number":4726,"context_line":"    def _has_numa_support(self):"},{"line_number":4727,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4728,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4729,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4732,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_2fdb3e7e","line":4729,"in_reply_to":"9aa53dc9_39238cbf","updated":"2015-04-07 16:08:31.000000000","message":"I admit it\u0027s a bit confusing.  With current qemu \"kvm\" is really just qemu with \"accel\u003dkvm\" and thus it shows up as a libvirt type of \"QEMU\".\n\nAlso, we\u0027ll now have 3 separate features looking for a libvirt type of \"QEMU\".  I\u0027m wondering if I should just unify them all into a generic REQ_KVM_QEMU constant.   (Maybe in another commit.) Thoughts?","commit_id":"fb63516c65db49140e41cfbe6468474c135a6ed1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a69d7fcfc60d53a76b5b72b3b1abff559e7f26d5","unresolved":false,"context_lines":[{"line_number":4726,"context_line":"    def _has_numa_support(self):"},{"line_number":4727,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4728,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4729,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4732,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_b967384c","line":4729,"in_reply_to":"9aa53dc9_491e3560","updated":"2015-04-09 16:16:06.000000000","message":"NUMA support was enabled before qemu 2.1, and hugepage support was enabled before 2.1, but the combination of the two was only enabled by 2.1.\n\nThe way the current nova libvirt code is written, if you support NUMA and hugepages it will try to use qemu features only present in 2.1 or later.\n\nAlso, the current libvirt code uses LibvirtConfigGuestNUMATuneMemNode which specifies per-NUMA-node memory placement mode and nodeset--when those are specified libvirt tries to use  \"memory-backend-ram\" which is only available in qemu 2.1 or later.  And just to make things interesting, this will occur even if you don\u0027t explicitly enable NUMA features (enabling dedicated CPUs will end up implicitly enabling NUMA due to the fact that it uses the numa topology data structures)\n\nSo basically while it is theoretically possible to support either NUMA or hugepages on older qemu (but not both together), in practice the current nova code does not do this.\n\nThe check that I want to add is an accurate reflection of the current state of the code.  If someone wants to add back support for older qemu, they can modify the check at that time.","commit_id":"fb63516c65db49140e41cfbe6468474c135a6ed1"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8075fba0980eecdb05e227d4f850d276c19f92e7","unresolved":false,"context_lines":[{"line_number":4726,"context_line":"    def _has_numa_support(self):"},{"line_number":4727,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4728,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4729,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4732,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_491e3560","line":4729,"in_reply_to":"9aa53dc9_842791b5","updated":"2015-04-09 07:04:23.000000000","message":"Support of NUMA has been added before 2.1.0 and most of the distribution provides a version of QEMU with the support of NUMA. We can probably remove that check or find the good version here.","commit_id":"fb63516c65db49140e41cfbe6468474c135a6ed1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44dcdd922a47dc0a9691098d972367d34f5363aa","unresolved":false,"context_lines":[{"line_number":4727,"context_line":""},{"line_number":4728,"context_line":"        return jsonutils.dumps(pci_info)"},{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4732,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4733,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_4ce91d1a","line":4730,"updated":"2015-04-11 13:07:13.000000000","message":"Should this also be filtering by platform?  From reading the qemu 2.1 change log it looks like numa is only supported on x86_64, but we also support ppc64 and s390x in the libvirt driver, but I assume trying to use numa support with pkvm or zkvm wouldn\u0027t work.","commit_id":"647462740d1205b0881f21a2d09aa47ef7f61359"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"be8e6ab40b8da4861088d2b25d075b29653f3c10","unresolved":false,"context_lines":[{"line_number":4727,"context_line":""},{"line_number":4728,"context_line":"        return jsonutils.dumps(pci_info)"},{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4732,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4733,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_ec7109e2","line":4730,"in_reply_to":"7aaa499b_4ce91d1a","updated":"2015-04-11 15:58:29.000000000","message":"I read\"x86\" to mean both i686 as well as x86_64.  Will code it up that way, happy to change it if someone can say for sure.","commit_id":"647462740d1205b0881f21a2d09aa47ef7f61359"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"3289587af35d92c9f4b079c6c9265bc4ea229a20","unresolved":false,"context_lines":[{"line_number":4727,"context_line":""},{"line_number":4728,"context_line":"        return jsonutils.dumps(pci_info)"},{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4732,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4733,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_1c1e910c","line":4730,"in_reply_to":"7aaa499b_8fdb971b","updated":"2015-04-13 10:59:20.000000000","message":"@Matt Riedemann: Thanks for the info. I\u0027m double-checking with the zkvm dev team what the state for these features are.","commit_id":"647462740d1205b0881f21a2d09aa47ef7f61359"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ec11a0ebea0391d9573b028235dbe8387f52a2df","unresolved":false,"context_lines":[{"line_number":4727,"context_line":""},{"line_number":4728,"context_line":"        return jsonutils.dumps(pci_info)"},{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4732,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4733,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_8fdb971b","line":4730,"in_reply_to":"7aaa499b_ec7109e2","updated":"2015-04-11 18:16:11.000000000","message":"Yeah, I meant just \u0027x\u0027, but not supported on p or z.\n\nI\u0027ve added Jon Grimm to confirm for pkvm and Markus Zoeller to confirm for zkvm.","commit_id":"647462740d1205b0881f21a2d09aa47ef7f61359"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8b6157267163b46604c4c7380de9234e678c382b","unresolved":false,"context_lines":[{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4732,"context_line":"        return ((caps.host.cpu.arch in (arch.I686, arch.X86_64)) and"},{"line_number":4733,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4734,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_7647cd4b","line":4732,"updated":"2015-04-14 08:15:43.000000000","message":"nit: maybe we could introduce a new variable \"supported_archs \u003d [arch.I686, arch.X86_64]\". This would be easier to extend as soon as other architectures (e.g. power, system z) will implement this.","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":9349,"name":"Jon Grimm","email":"jon.grimm@gmail.com","username":"jgrimm"},"change_message_id":"d10f5f51c0c9c5eca9536693f1fa3c54e9227393","unresolved":false,"context_lines":[{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4732,"context_line":"        return ((caps.host.cpu.arch in (arch.I686, arch.X86_64)) and"},{"line_number":4733,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4734,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_8380c047","line":4732,"in_reply_to":"7aaa499b_7647cd4b","updated":"2015-04-14 17:27:54.000000000","message":"Checking on this for powerkvm yet.  I know NUMA is supported, but it sounds like qemu 2.1 memory-file-backend support is the thing specifically required; trying to track down outlook/definitive answer.","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7fcd511ed32f83f587d745665d133e78283760b5","unresolved":false,"context_lines":[{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4732,"context_line":"        return ((caps.host.cpu.arch in (arch.I686, arch.X86_64)) and"},{"line_number":4733,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4734,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_c3cb681d","line":4732,"in_reply_to":"7aaa499b_8380c047","updated":"2015-04-14 17:41:28.000000000","message":"The issue is that as soon as you use cpu pinning, multiple numa nodes in a VM, or hugepages, then this driver wants to use the LibvirtConfigGuestCPUNUMA and LibvirtConfigGuestNUMATune config classes. In my testing, that maps to using the memory-file-backend support.","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":9349,"name":"Jon Grimm","email":"jon.grimm@gmail.com","username":"jgrimm"},"change_message_id":"fc0afd12fc737b6314eb38bfc2afd2602fce8ac2","unresolved":false,"context_lines":[{"line_number":4729,"context_line":""},{"line_number":4730,"context_line":"    def _has_numa_support(self):"},{"line_number":4731,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4732,"context_line":"        return ((caps.host.cpu.arch in (arch.I686, arch.X86_64)) and"},{"line_number":4733,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4734,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_2ebb1329","line":4732,"in_reply_to":"7aaa499b_c3cb681d","updated":"2015-04-14 17:51:03.000000000","message":"Thanks Chris. My guess is that its not there yet (per changelog), but I\u0027d like to get an outlook from qemu/ppc64 folks on wh can expect (and make sure we get tested and can add in as an arch on this check).","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8b6157267163b46604c4c7380de9234e678c382b","unresolved":false,"context_lines":[{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4736,"context_line":""},{"line_number":4737,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4738,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4739,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4740,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4741,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_93302b03","line":4738,"updated":"2015-04-14 08:15:43.000000000","message":"KVM on system z (zKVM) doesn\u0027t support yet NUMA and HUGEPAGES (and there are currently no future plans for doing that). So even if the version number check is passed it will fail on the system z platform (arch\u003ds390x). Shouldn\u0027t the architecture check be part of this method like in the \"_has_numa_support\" method?","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":9349,"name":"Jon Grimm","email":"jon.grimm@gmail.com","username":"jgrimm"},"change_message_id":"fc0afd12fc737b6314eb38bfc2afd2602fce8ac2","unresolved":false,"context_lines":[{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4736,"context_line":""},{"line_number":4737,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4738,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4739,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4740,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4741,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_c335a8f7","line":4738,"in_reply_to":"7aaa499b_839d605b","updated":"2015-04-14 17:51:03.000000000","message":"Correct.","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e838c9d63b17121348761f5292d803eae2cb498f","unresolved":false,"context_lines":[{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4736,"context_line":""},{"line_number":4737,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4738,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4739,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4740,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4741,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_7d3b019d","line":4738,"in_reply_to":"7aaa499b_839d605b","updated":"2015-04-15 07:25:35.000000000","message":"Yes","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":9349,"name":"Jon Grimm","email":"jon.grimm@gmail.com","username":"jgrimm"},"change_message_id":"d10f5f51c0c9c5eca9536693f1fa3c54e9227393","unresolved":false,"context_lines":[{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4736,"context_line":""},{"line_number":4737,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4738,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4739,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4740,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4741,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_dab0f4df","line":4738,"in_reply_to":"7aaa499b_93302b03","updated":"2015-04-14 17:27:54.000000000","message":"KVM on ppc64 arch should support HUGEPAGES.","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7fcd511ed32f83f587d745665d133e78283760b5","unresolved":false,"context_lines":[{"line_number":4735,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4736,"context_line":""},{"line_number":4737,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4738,"context_line":"        return self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4739,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4740,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE)"},{"line_number":4741,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aaa499b_839d605b","line":4738,"in_reply_to":"7aaa499b_93302b03","updated":"2015-04-14 17:41:28.000000000","message":"Okay, so this function should also check the arch and should support it for arch.I686, arch.X86_64, and arch.PPC64?","commit_id":"d0aa2238a3730a16752ac147367cdefc44becf0c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1a98fa58dc5f914654d28e1d86cacc3a82e22015","unresolved":false,"context_lines":[{"line_number":4740,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4741,"context_line":"        # This means that the host can support multiple values for the size"},{"line_number":4742,"context_line":"        # field in LibvirtConfigGuestMemoryBackingPage"},{"line_number":4743,"context_line":"        supported_archs \u003d [arch.I686, arch.X86_64, arch.PPC64]"},{"line_number":4744,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4745,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4746,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_98392aa7","line":4743,"updated":"2015-04-15 15:32:44.000000000","message":"If we\u0027re waiting on an answer about ppc64 support for numa support in _has_numa_support, I\u0027d just drop ppc64 here and risk assume it doesn\u0027t work.  Markus said this doesn\u0027t work on zkvm (s390x), so we can rule that out, mark pkvm as TBD and get the version constraint fix in for qemu 2.1.  If it turns out that ppc64 works with this stuff, that can be added later as a separate patch.","commit_id":"f713a42b787d424f5a7d2ce9773ae55eb8858f81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fff9155306a5f9f9b339fa6e84431215d6135b2","unresolved":false,"context_lines":[{"line_number":4731,"context_line":"        # This means that the host can support LibvirtConfigGuestNUMATune"},{"line_number":4732,"context_line":"        # and the nodeset field in LibvirtConfigGuestMemoryBackingPage"},{"line_number":4733,"context_line":"        supported_archs \u003d [arch.I686, arch.X86_64]"},{"line_number":4734,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4735,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4736,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4737,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aaa499b_cb9d9a67","line":4734,"updated":"2015-04-15 16:05:17.000000000","message":"nit: from what I can tell, everything that calls this method has the host capabilities at some point in the caller so we could plumb this down so it\u0027s not redone here, but since caps are cached within the host object it\u0027s fine to just get it here.","commit_id":"13d0d8f42c1009e4a5a1be49163bb14aff19ead0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"794def1a1e2b3515660c6a57d974ac960fd2190d","unresolved":false,"context_lines":[{"line_number":4745,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4746,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4747,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4748,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4749,"context_line":""},{"line_number":4750,"context_line":"    def _get_host_numa_topology(self):"},{"line_number":4751,"context_line":"        if not self._has_numa_support():"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aaa499b_6b9c460f","line":4748,"updated":"2015-04-15 16:09:09.000000000","message":"For right now this looks good from my point of view. \n\nThe different implementation levels of qemu, kvm, libvirt depending on the platform they run on bring me to the conclusion that here (and probably on other places) should be a more flexible way to do this in the future. If, for example, s390 will introduce hugepage support with qemu version 42, I wouldn\u0027t want to bump the overall MIN_QEMU_NUMA_HUGEPAGE_VERSION to 42 and prevent to run this on an x86 node which uses qemu version 3.0 (for the sake of example). But that could be a mailing list discussion.","commit_id":"13d0d8f42c1009e4a5a1be49163bb14aff19ead0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0db293c4cb4fbef2f58f2454c7ecbf405bfc55bb","unresolved":false,"context_lines":[{"line_number":4745,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4746,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4747,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4748,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4749,"context_line":""},{"line_number":4750,"context_line":"    def _get_host_numa_topology(self):"},{"line_number":4751,"context_line":"        if not self._has_numa_support():"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aa745d1_c3118a5f","line":4748,"in_reply_to":"7aaa499b_2ee08cf9","updated":"2015-04-15 19:48:42.000000000","message":"Maybe cross that bridge when we get there...","commit_id":"13d0d8f42c1009e4a5a1be49163bb14aff19ead0"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2367290fe25a7ab4a34b1b78e6847d04cb5ad805","unresolved":false,"context_lines":[{"line_number":4745,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4746,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4747,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4748,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4749,"context_line":""},{"line_number":4750,"context_line":"    def _get_host_numa_topology(self):"},{"line_number":4751,"context_line":"        if not self._has_numa_support():"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aaa499b_2ee08cf9","line":4748,"in_reply_to":"7aaa499b_6b9c460f","updated":"2015-04-15 16:22:42.000000000","message":"Agreed, it would probably make sense to have per-arch qemu versions at the very least.","commit_id":"13d0d8f42c1009e4a5a1be49163bb14aff19ead0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c9dd4c9be67655e5dfa43ae16e328691ddc6d965","unresolved":false,"context_lines":[{"line_number":4735,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4736,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4737,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4738,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4739,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4740,"context_line":""},{"line_number":4741,"context_line":"    def _has_hugepage_support(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_93d194fe","line":4738,"updated":"2015-04-19 12:22:29.000000000","message":"Is it just me or is the alignment off here?","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dc39e28ce1e51c6cadfa613e49aa8c852731f5bf","unresolved":false,"context_lines":[{"line_number":4735,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4736,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4737,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"},{"line_number":4738,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4739,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4740,"context_line":""},{"line_number":4741,"context_line":"    def _has_hugepage_support(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_5bfe576c","line":4738,"in_reply_to":"dac4157f_93d194fe","updated":"2015-04-20 15:18:05.000000000","message":"Yeah, it got thrown off by the arch check.  Fixing.","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c9dd4c9be67655e5dfa43ae16e328691ddc6d965","unresolved":false,"context_lines":[{"line_number":4745,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4746,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4747,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4748,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4749,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4750,"context_line":""},{"line_number":4751,"context_line":"    def _get_host_numa_topology(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_73ce005c","line":4748,"updated":"2015-04-19 12:22:29.000000000","message":"ditto","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dc39e28ce1e51c6cadfa613e49aa8c852731f5bf","unresolved":false,"context_lines":[{"line_number":4745,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4746,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4747,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"},{"line_number":4748,"context_line":"                                          MIN_QEMU_NUMA_HUGEPAGE_VERSION,"},{"line_number":4749,"context_line":"                                          REQ_HYPERVISOR_NUMA_HUGEPAGE))"},{"line_number":4750,"context_line":""},{"line_number":4751,"context_line":"    def _get_host_numa_topology(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dac4157f_fbf52b83","line":4748,"in_reply_to":"dac4157f_73ce005c","updated":"2015-04-20 15:18:05.000000000","message":"Done","commit_id":"e99fa9361dfcf83df647a390b02f98a38b9e1d84"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fcc31f6ca9ae0143c784d0e71271cebc9089dae6","unresolved":false,"context_lines":[{"line_number":4731,"context_line":"    def _has_numa_support(self):"},{"line_number":4732,"context_line":"        # This means that the host can support LibvirtConfigGuestNUMATune"},{"line_number":4733,"context_line":"        # and the nodeset field in LibvirtConfigGuestMemoryBackingPage"},{"line_number":4734,"context_line":"        supported_archs \u003d [arch.I686, arch.X86_64]"},{"line_number":4735,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4736,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4737,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab921fb_3139e9a4","line":4734,"updated":"2015-04-27 02:28:40.000000000","message":"nit, how about move this to the top of the file as constant?","commit_id":"e8ce5480a661234fb25a29b8d9ffba945780d3a1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"491dbc0009537a739c5ffbcce65a73a6c71bbc7c","unresolved":false,"context_lines":[{"line_number":4731,"context_line":"    def _has_numa_support(self):"},{"line_number":4732,"context_line":"        # This means that the host can support LibvirtConfigGuestNUMATune"},{"line_number":4733,"context_line":"        # and the nodeset field in LibvirtConfigGuestMemoryBackingPage"},{"line_number":4734,"context_line":"        supported_archs \u003d [arch.I686, arch.X86_64]"},{"line_number":4735,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4736,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4737,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_NUMA_VERSION,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab921fb_ccad769c","line":4734,"in_reply_to":"bab921fb_3139e9a4","updated":"2015-04-27 04:43:42.000000000","message":"It would be simple to move this up to the top of the file, but looking at the rest of the file all of the arch tests are all in the middle of the code rather than as constants at the top.  I think it\u0027s actually clearer to put the arch list right here in the test function.","commit_id":"e8ce5480a661234fb25a29b8d9ffba945780d3a1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fcc31f6ca9ae0143c784d0e71271cebc9089dae6","unresolved":false,"context_lines":[{"line_number":4741,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4742,"context_line":"        # This means that the host can support multiple values for the size"},{"line_number":4743,"context_line":"        # field in LibvirtConfigGuestMemoryBackingPage"},{"line_number":4744,"context_line":"        supported_archs \u003d [arch.I686, arch.X86_64]"},{"line_number":4745,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4746,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4747,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab921fb_f13ed189","line":4744,"updated":"2015-04-27 02:28:40.000000000","message":"ditto","commit_id":"e8ce5480a661234fb25a29b8d9ffba945780d3a1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"491dbc0009537a739c5ffbcce65a73a6c71bbc7c","unresolved":false,"context_lines":[{"line_number":4741,"context_line":"    def _has_hugepage_support(self):"},{"line_number":4742,"context_line":"        # This means that the host can support multiple values for the size"},{"line_number":4743,"context_line":"        # field in LibvirtConfigGuestMemoryBackingPage"},{"line_number":4744,"context_line":"        supported_archs \u003d [arch.I686, arch.X86_64]"},{"line_number":4745,"context_line":"        caps \u003d self._host.get_capabilities()"},{"line_number":4746,"context_line":"        return ((caps.host.cpu.arch in supported_archs) and"},{"line_number":4747,"context_line":"                self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab921fb_4c9a866f","line":4744,"in_reply_to":"bab921fb_f13ed189","updated":"2015-04-27 04:43:42.000000000","message":"Same response as above.  Note that we would have to have two separate constants anyways, so it wouldn\u0027t actually remove any duplicated code.  Currently the two lines are identical, but there\u0027s no guarantee that the arch list for numa and hugepages will stay the same.","commit_id":"e8ce5480a661234fb25a29b8d9ffba945780d3a1"}]}
