Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/41480/?format=api
http://patchwork.dpdk.org/api/patches/41480/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/798fa82633f347495706e964fc44f6ab273d7baa.1529940601.git.anatoly.burakov@intel.com/", "project": { "id": 1, "url": "http://patchwork.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<798fa82633f347495706e964fc44f6ab273d7baa.1529940601.git.anatoly.burakov@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/798fa82633f347495706e964fc44f6ab273d7baa.1529940601.git.anatoly.burakov@intel.com", "date": "2018-06-25T15:59:41", "name": "[RFC,4/9] usertools/lib: support FreeBSD for platform info", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "82bafdd07fabf07f81ac28c830398743d3db96fc", "submitter": { "id": 4, "url": "http://patchwork.dpdk.org/api/people/4/?format=api", "name": "Anatoly Burakov", "email": "anatoly.burakov@intel.com" }, "delegate": { "id": 1, "url": "http://patchwork.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/798fa82633f347495706e964fc44f6ab273d7baa.1529940601.git.anatoly.burakov@intel.com/mbox/", "series": [ { "id": 225, "url": "http://patchwork.dpdk.org/api/series/225/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=225", "date": "2018-06-25T15:59:39", "name": "Modularize and enhance DPDK Python scripts", "version": 1, "mbox": "http://patchwork.dpdk.org/series/225/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/41480/comments/", "check": "fail", "checks": "http://patchwork.dpdk.org/api/patches/41480/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 402F24CC0;\n\tMon, 25 Jun 2018 17:59:56 +0200 (CEST)", "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id AC7DF2BEB\n\tfor <dev@dpdk.org>; Mon, 25 Jun 2018 17:59:51 +0200 (CEST)", "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t25 Jun 2018 08:59:49 -0700", "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby orsmga001.jf.intel.com with ESMTP; 25 Jun 2018 08:59:47 -0700", "from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com\n\t[10.237.217.45])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\tw5PFxlt4032509; Mon, 25 Jun 2018 16:59:47 +0100", "from sivswdev01.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev01.ir.intel.com with ESMTP id w5PFxljA026604;\n\tMon, 25 Jun 2018 16:59:47 +0100", "(from aburakov@localhost)\n\tby sivswdev01.ir.intel.com with LOCAL id w5PFxlZk026599;\n\tMon, 25 Jun 2018 16:59:47 +0100" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.51,270,1526367600\"; d=\"scan'208\";a=\"67552569\"", "From": "Anatoly Burakov <anatoly.burakov@intel.com>", "To": "dev@dpdk.org", "Cc": "john.mcnamara@intel.com, bruce.richardson@intel.com,\n\tpablo.de.lara.guarch@intel.com, david.hunt@intel.com,\n\tmohammad.abdul.awal@intel.com", "Date": "Mon, 25 Jun 2018 16:59:41 +0100", "Message-Id": "<798fa82633f347495706e964fc44f6ab273d7baa.1529940601.git.anatoly.burakov@intel.com>", "X-Mailer": "git-send-email 1.7.0.7", "In-Reply-To": [ "<cover.1529940601.git.anatoly.burakov@intel.com>", "<cover.1529940601.git.anatoly.burakov@intel.com>" ], "References": [ "<cover.1529940601.git.anatoly.burakov@intel.com>", "<cover.1529940601.git.anatoly.burakov@intel.com>" ], "Subject": "[dpdk-dev] [RFC 4/9] usertools/lib: support FreeBSD for platform\n\tinfo", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "This enables FreeBSD support for PlatformInfo part of the\nDPDKConfigLib script, thereby enabling FreeBSD support for the\ncpu_layout script.\n\nSigned-off-by: Anatoly Burakov <anatoly.burakov@intel.com>\n---\n usertools/DPDKConfigLib/PlatformInfo.py | 81 ++++++++++++++++++++++++-\n 1 file changed, 78 insertions(+), 3 deletions(-)", "diff": "diff --git a/usertools/DPDKConfigLib/PlatformInfo.py b/usertools/DPDKConfigLib/PlatformInfo.py\nindex 734d22026..4ca507a37 100755\n--- a/usertools/DPDKConfigLib/PlatformInfo.py\n+++ b/usertools/DPDKConfigLib/PlatformInfo.py\n@@ -6,6 +6,15 @@\n from .Util import *\n import re\n import glob\n+import platform\n+import subprocess\n+import string\n+import xml.etree.ElementTree # for FreeBSD topology parsing\n+try:\n+ import queue # python 3\n+except ImportError:\n+ import Queue as queue # python 2\n+\n \n __SYSFS_CPU_INFO_PATH = \"/sys/devices/system/cpu\"\n __SYSFS_IOMMU_CLASS_PATH = \"/sys/class/iommu\"\n@@ -26,6 +35,9 @@\n \n __HT_CPU_FLAGS = [\"ht\"]\n \n+__SYSCTL_TOPOLOGY_CMDLINE = ['sysctl', '-b', 'kern.sched.topology_spec']\n+__SYSCTL_MEM_CMDLINE = ['sysctl', 'hw.realmem']\n+\n \n def _parse_cpuinfo(pinfo):\n core_info_list = []\n@@ -107,6 +119,56 @@ def _iommu_is_enabled():\n pass\n \n \n+def _parse_sysctl_cpu_topology(pinfo):\n+ output = subprocess.check_output(__SYSCTL_TOPOLOGY_CMDLINE)\n+\n+ # output from sysctl contains null terminator, remove it\n+ raw_xml = output[:-1]\n+ tree = xml.etree.ElementTree.fromstring(raw_xml)\n+ groups = queue.Queue()\n+\n+ # put first group onto the queue\n+ for e in tree.findall('group'):\n+ groups.put(e)\n+\n+ # per-level list of cores\n+ levels = {}\n+\n+ while not groups.empty():\n+ group = groups.get()\n+ level = int(group.get('level'))\n+ cpus = [int(cpu) for cpu in group.find('cpu').text.split(\",\")]\n+ cur_value = levels.setdefault(level, [])\n+\n+ # store discovered cpu's\n+ cur_value.append(cpus)\n+ levels[level] = cur_value\n+\n+ children = group.find('children')\n+ if children is not None:\n+ for c in children.findall('group'):\n+ groups.put(c)\n+\n+ # find deepest level\n+ max_level = max(levels.keys())\n+\n+ # for each group in the deepest level, take first CPU and make it physical\n+ # core id\n+ for cpus in levels[max_level]:\n+ pinfo.core_map[pinfo.numa_nodes[0], cpus[0]] = cpus\n+\n+ # also make note of hyperthreading\n+ if len(cpus) > 1:\n+ pinfo.hyperthreading_supported = True\n+\n+\n+def _parse_sysctl_ram_size():\n+ output = subprocess.check_output(__SYSCTL_MEM_CMDLINE)\n+ _, mem_str = kv_split(output, ':')\n+ mem_amount = int(mem_str) / 1024 # kilobytes\n+ return mem_amount\n+\n+\n class PlatformInfo:\n def __init__(self):\n self.update()\n@@ -125,6 +187,19 @@ def reset(self):\n \n def update(self):\n self.reset()\n- _parse_cpuinfo(self)\n- _parse_meminfo(self)\n- self.hugepage_sizes_enabled = _find_enabled_hugepage_sizes()\n+ system = platform.system()\n+ if system == 'Linux':\n+ _parse_cpuinfo(self)\n+ _parse_meminfo(self)\n+ self.hugepage_sizes_enabled = _find_enabled_hugepage_sizes()\n+ elif system == 'FreeBSD':\n+ # DPDK doesn't support NUMA on FreeBSD\n+ self.numa_nodes = [0]\n+ # find number of threads\n+ _parse_sysctl_cpu_topology(self)\n+ # find RAM size\n+ self.ram_size = _parse_sysctl_ram_size()\n+ # DPDK doesn't use hugepages on FreeBSD\n+ self.hugepage_sizes_supported = []\n+ self.hugepage_sizes_enabled = []\n+ self.default_hugepage_size = 0\n", "prefixes": [ "RFC", "4/9" ] }{ "id": 41480, "url": "