From nobody Mon Feb 9 23:18:27 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1571570451; cv=none; d=zoho.com; s=zohoarc; b=mVvQ6OwKc47QX/uFFupOo3OIRW3ZacSmwlhZHdr+2cbSr9IeAVfX3Zktq5mOi/n0YBIabLgsUqLPgPacVokXUNTQeu170G9wZ2eOLAJfrdkOxOuX81xN3r2z7A4FElYFk59XSFyOOFkiamlL4YtaZC12Vi7fgUTJniV/44GY0rA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571570451; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UQrsrUaHgn1rEtTh/EA8tl71AME3zSdYrwXIbcrnCIM=; b=Vw4LAaAdFiGc8oYhlOr/Bg51BHaD2rIdqfbi2Muo+1RftC/cJ3nW0O3NM+MCyzH+eetwxOReGb7RxLwpW8jl1l/MC6b5qUeSws0UVs+1GQC1Y0lXEq0DFvkfx1T5z/brHusksg80NhCK98EcnAYwfXhwe+oIkIowjvP+nXfatjY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571570451105970.2708817946738; Sun, 20 Oct 2019 04:20:51 -0700 (PDT) Received: from localhost ([::1]:59382 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iM9GT-0008V5-L2 for importer@patchew.org; Sun, 20 Oct 2019 07:20:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35746) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iM97h-0002eP-UF for qemu-devel@nongnu.org; Sun, 20 Oct 2019 07:11:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iM97g-0002z5-H7 for qemu-devel@nongnu.org; Sun, 20 Oct 2019 07:11:45 -0400 Received: from mga12.intel.com ([192.55.52.136]:63374) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iM97g-0002wA-5Z for qemu-devel@nongnu.org; Sun, 20 Oct 2019 07:11:44 -0400 Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Oct 2019 04:11:43 -0700 Received: from tao-optiplex-7060.sh.intel.com ([10.239.159.36]) by orsmga005.jf.intel.com with ESMTP; 20 Oct 2019 04:11:41 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,319,1566889200"; d="scan'208";a="371917572" From: Tao Xu To: imammedo@redhat.com, eblake@redhat.com, ehabkost@redhat.com Subject: [PATCH v13 07/12] numa: Calculate hmat latency and bandwidth entry list Date: Sun, 20 Oct 2019 19:11:20 +0800 Message-Id: <20191020111125.27659-8-tao3.xu@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191020111125.27659-1-tao3.xu@intel.com> References: <20191020111125.27659-1-tao3.xu@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 192.55.52.136 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jingqi.liu@intel.com, tao3.xu@intel.com, fan.du@intel.com, qemu-devel@nongnu.org, jonathan.cameron@huawei.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Compress HMAT latency and bandwidth raw data into uint16_t data, which can be stored in HMAT table. Suggested-by: Igor Mammedov Signed-off-by: Tao Xu --- New patch in v13. --- hw/core/numa.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/hw/core/numa.c b/hw/core/numa.c index 3cf77f6ac9..4033a5a470 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -474,6 +474,45 @@ static void complete_init_numa_distance(MachineState *= ms) } } =20 +static void calculate_hmat_entry_list(HMAT_LB_Info *hmat_lb, int num_nodes) +{ + int i, index; + uint16_t *entry_list; + uint64_t base; + GArray *lb_data_list; + HMAT_LB_Data *lb_data; + + if (hmat_lb->data_type <=3D HMAT_LB_DATA_WRITE_LATENCY) { + base =3D hmat_lb->base_latency; + lb_data_list =3D hmat_lb->latency; + } else { + base =3D hmat_lb->base_bandwidth; + lb_data_list =3D hmat_lb->bandwidth; + } + + entry_list =3D g_malloc0(lb_data_list->len * sizeof(uint16_t)); + for (i =3D 0; i < lb_data_list->len; i++) { + lb_data =3D &g_array_index(lb_data_list, HMAT_LB_Data, i); + index =3D lb_data->initiator * num_nodes + lb_data->target; + if (entry_list[index]) { + error_report("Duplicate configuration of the latency for " + "initiator=3D%d and target=3D%d.", lb_data->initiator, + lb_data->target); + exit(1); + } + + entry_list[index] =3D (uint16_t)(lb_data->rawdata / base); + } + + if (hmat_lb->data_type <=3D HMAT_LB_DATA_WRITE_LATENCY) { + hmat_lb->entry_latency =3D entry_list; + } else { + /* Convert base from Byte to Megabyte */ + hmat_lb->base_bandwidth =3D base / MiB; + hmat_lb->entry_bandwidth =3D entry_list; + } +} + void numa_legacy_auto_assign_ram(MachineClass *mc, NodeInfo *nodes, int nb_nodes, ram_addr_t size) { @@ -512,9 +551,10 @@ void numa_default_auto_assign_ram(MachineClass *mc, No= deInfo *nodes, =20 void numa_complete_configuration(MachineState *ms) { - int i; + int i, hierarchy, type; MachineClass *mc =3D MACHINE_GET_CLASS(ms); NodeInfo *numa_info =3D ms->numa_state->nodes; + HMAT_LB_Info *numa_hmat_lb; =20 /* * If memory hotplug is enabled (slots > 0) but without '-numa' @@ -611,6 +651,21 @@ void numa_complete_configuration(MachineState *ms) /* Validation succeeded, now fill in any missing distances. */ complete_init_numa_distance(ms); } + + if (ms->numa_state->hmat_enabled) { + for (hierarchy =3D HMAT_LB_MEM_MEMORY; + hierarchy <=3D HMAT_LB_MEM_CACHE_3RD_LEVEL; hierarchy++) { + for (type =3D HMAT_LB_DATA_ACCESS_LATENCY; + type <=3D HMAT_LB_DATA_WRITE_BANDWIDTH; type++) { + numa_hmat_lb =3D ms->numa_state->hmat_lb[hierarchy][ty= pe]; + + if (numa_hmat_lb) { + calculate_hmat_entry_list(numa_hmat_lb, + ms->numa_state->num_node= s); + } + } + } + } } } =20 --=20 2.20.1