From nobody Sun Feb 8 09:11:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1598975988; cv=none; d=zohomail.com; s=zohoarc; b=Ks0b7kiEyQe5QSk910zVD7jf5cGzNHXHg2hXMUJrqvnd5WUlm8j3C95tzUP3CZZTo0C2T3P7zQxoxF/3IKwKytfBsLitkMLy+rsm43OQic4VhwbN9MmoKMJ1TbJGrYz0bkNL2L4k++6VJDxQpkDEPyM/Rv92Qn6vZituPRXF5PY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598975988; 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=Y1n4j8MWmzH3QTa58abB2b7OQGX7+9wfRdvkH69UYn8=; b=nU+P9DJko8z4ikv1MJWK9zj03H2qcqZDK9xKmk/fxIef/HMnpk6Ap/ssRo2JmxQ9Up+LcOGCkmhGN7Xp2C6stG4Y027pUCUD+kf1gR7QCpiclqFse5OLFNy2j1fcsnbycYUQHhQw/T/ga6FR6C9VfnmsOQvKGRjIEux1sk/SDqY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1598975988060425.23539922569114; Tue, 1 Sep 2020 08:59:48 -0700 (PDT) Received: from localhost ([::1]:52738 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kD5wq-0003hu-87 for importer@patchew.org; Tue, 01 Sep 2020 09:03:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36398) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kD5qU-0001SB-GZ; Tue, 01 Sep 2020 08:57:06 -0400 Received: from mail-qv1-xf43.google.com ([2607:f8b0:4864:20::f43]:41241) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kD5qL-0002m2-Fo; Tue, 01 Sep 2020 08:57:06 -0400 Received: by mail-qv1-xf43.google.com with SMTP id ef16so428102qvb.8; Tue, 01 Sep 2020 05:56:56 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:6be:f6e3:c671:cefe:b943]) by smtp.gmail.com with ESMTPSA id q7sm1430164qkf.35.2020.09.01.05.56.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 05:56:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y1n4j8MWmzH3QTa58abB2b7OQGX7+9wfRdvkH69UYn8=; b=P4ZSj4A1M1q9lwZlJgsAbC454Rvh3CZwxVfaLedfKkt2b+npn+MsN7oWDT8pwSRF2z bsRYrO3wL42M30DRVDYKKD+h1xgFE3Kvb4FT+EFeO2OO6JywPlhyczhlSyfxd5F5gdDK BszP1mlwIrzoL4L87QWStlDzk/iHhZaCdb/nfpG2oiUUEcna+7MAjL+Xip49st7Griu7 NCx8QAZMTjRtVgPzJcnAMt44gvENjEKJZt7ftRkHLvn8XXyUkKz7xOiBhXZ1NOwtBc3f gKQaBhpm5YiTmfdVqwFWFpfAkenvEfGu54/ccJ173hgi7DsA3uGhZFTQqKrd22qhUhxm Roxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y1n4j8MWmzH3QTa58abB2b7OQGX7+9wfRdvkH69UYn8=; b=OrkUVAOXnUbEcf/ilrFmO4gxR91IuDpjZHDB2HvyO7YVSmOZLKYL4e14AyESTumGTr 783eSbZL50FfqrZCZ0FyoBcHYxMzqYz2fcDCbPL1w6xX+6ZuBpIHFaZaZgsFEUTQ0jMF Rlc9PR4v+IRmPfBKNsWxLvB0xz8ks3h4yEtVu95p2UpP1l8Z4dZRHaq8AF8KnqjBL+NZ IBZtU/RX4FiQoDb/Nb8mI686GtVFig+/6+tjE4w4gVWaK4WSIOs4bZsaRvzh2M/pQt+T lnPa8oN6+y6OsrslVyLOmYByOqxG9B+Y7O3CJn5vUhgKUF1mGQCPgelmzmuI4bWWSmtk +U1g== X-Gm-Message-State: AOAM531g8HB3Czjm2Z96Ir/Wf7k9OSQ5vh7etgVRpkxaWf2h4wg0uEfe 0Ae7eXEPXn55+mzzHH3ubsSd0NqvCIbHtQ== X-Google-Smtp-Source: ABdhPJzayrWVpUUHw9fhuUsVAyYJKM1+31j2zwYQCKZNyQUw8zbxE/kfU5LI+PLZDwf3GJ3aDHBSiw== X-Received: by 2002:ad4:5749:: with SMTP id q9mr1744768qvx.56.1598965015946; Tue, 01 Sep 2020 05:56:55 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v2 1/7] ppc: introducing spapr_numa.c NUMA code helper Date: Tue, 1 Sep 2020 09:56:39 -0300 Message-Id: <20200901125645.118026-2-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200901125645.118026-1-danielhb413@gmail.com> References: <20200901125645.118026-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f43; envelope-from=danielhb413@gmail.com; helo=mail-qv1-xf43.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Daniel Henrique Barboza , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We're going to make changes in how spapr handles all ibm,associativity* related properties to enhance our current NUMA support. At this moment we have associativity code scattered all around spapr_* files, with hardcoded values and array sizes. This makes it harder to change any NUMA specific parameters in the future. Having everything in the same place allows not only for easier tuning, but also easier understanding since all NUMA related code is on the same file. This patch introduces a new file to gather all NUMA/associativity handling code in spapr, spapr_numa.c. To get things started, let's remove associativity-reference-points and max-associativity-domains code from spapr_dt_rtas() to a new helper called spapr_numa_write_rtas_dt(). This will decouple spapr_dt_rtas() from the NUMA changes that are going to happen in those two properties. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/meson.build | 3 ++- hw/ppc/spapr.c | 26 ++----------------- hw/ppc/spapr_numa.c | 50 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/spapr_numa.h | 20 +++++++++++++++ 4 files changed, 74 insertions(+), 25 deletions(-) create mode 100644 hw/ppc/spapr_numa.c create mode 100644 include/hw/ppc/spapr_numa.h diff --git a/hw/ppc/meson.build b/hw/ppc/meson.build index 918969b320..ffa2ec37fa 100644 --- a/hw/ppc/meson.build +++ b/hw/ppc/meson.build @@ -25,7 +25,8 @@ ppc_ss.add(when: 'CONFIG_PSERIES', if_true: files( 'spapr_irq.c', 'spapr_tpm_proxy.c', 'spapr_nvdimm.c', - 'spapr_rtas_ddw.c' + 'spapr_rtas_ddw.c', + 'spapr_numa.c', )) ppc_ss.add(when: 'CONFIG_SPAPR_RNG', if_true: files('spapr_rng.c')) ppc_ss.add(when: ['CONFIG_PSERIES', 'CONFIG_LINUX'], if_true: files( diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index b0a04443fb..a45912acac 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -81,6 +81,7 @@ #include "hw/mem/memory-device.h" #include "hw/ppc/spapr_tpm_proxy.h" #include "hw/ppc/spapr_nvdimm.h" +#include "hw/ppc/spapr_numa.h" =20 #include "monitor/monitor.h" =20 @@ -891,16 +892,9 @@ static int spapr_dt_rng(void *fdt) static void spapr_dt_rtas(SpaprMachineState *spapr, void *fdt) { MachineState *ms =3D MACHINE(spapr); - SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(ms); int rtas; GString *hypertas =3D g_string_sized_new(256); GString *qemu_hypertas =3D g_string_sized_new(256); - uint32_t refpoints[] =3D { - cpu_to_be32(0x4), - cpu_to_be32(0x4), - cpu_to_be32(0x2), - }; - uint32_t nr_refpoints =3D ARRAY_SIZE(refpoints); uint64_t max_device_addr =3D MACHINE(spapr)->device_memory->base + memory_region_size(&MACHINE(spapr)->device_memory->mr); uint32_t lrdr_capacity[] =3D { @@ -910,14 +904,6 @@ static void spapr_dt_rtas(SpaprMachineState *spapr, vo= id *fdt) cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE & 0xffffffff), cpu_to_be32(ms->smp.max_cpus / ms->smp.threads), }; - uint32_t maxdomain =3D cpu_to_be32(spapr->gpu_numa_id > 1 ? 1 : 0); - uint32_t maxdomains[] =3D { - cpu_to_be32(4), - maxdomain, - maxdomain, - maxdomain, - cpu_to_be32(spapr->gpu_numa_id), - }; =20 _FDT(rtas =3D fdt_add_subnode(fdt, 0, "rtas")); =20 @@ -953,15 +939,7 @@ static void spapr_dt_rtas(SpaprMachineState *spapr, vo= id *fdt) qemu_hypertas->str, qemu_hypertas->len)); g_string_free(qemu_hypertas, TRUE); =20 - if (smc->pre_5_1_assoc_refpoints) { - nr_refpoints =3D 2; - } - - _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points", - refpoints, nr_refpoints * sizeof(refpoints[0]))); - - _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains", - maxdomains, sizeof(maxdomains))); + spapr_numa_write_rtas_dt(spapr, fdt, rtas); =20 /* * FWNMI reserves RTAS_ERROR_LOG_MAX for the machine check error log, diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c new file mode 100644 index 0000000000..cdf3288cbd --- /dev/null +++ b/hw/ppc/spapr_numa.c @@ -0,0 +1,50 @@ +/* + * QEMU PowerPC pSeries Logical Partition NUMA associativity handling + * + * Copyright IBM Corp. 2020 + * + * Authors: + * Daniel Henrique Barboza + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "qemu-common.h" +#include "hw/ppc/spapr_numa.h" +#include "hw/ppc/fdt.h" + +/* + * Helper that writes ibm,associativity-reference-points and + * max-associativity-domains in the RTAS pointed by @rtas + * in the DT @fdt. + */ +void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, void *fdt, int rta= s) +{ + SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(spapr); + uint32_t refpoints[] =3D { + cpu_to_be32(0x4), + cpu_to_be32(0x4), + cpu_to_be32(0x2), + }; + uint32_t nr_refpoints =3D ARRAY_SIZE(refpoints); + uint32_t maxdomain =3D cpu_to_be32(spapr->gpu_numa_id > 1 ? 1 : 0); + uint32_t maxdomains[] =3D { + cpu_to_be32(4), + maxdomain, + maxdomain, + maxdomain, + cpu_to_be32(spapr->gpu_numa_id), + }; + + if (smc->pre_5_1_assoc_refpoints) { + nr_refpoints =3D 2; + } + + _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points", + refpoints, nr_refpoints * sizeof(refpoints[0]))); + + _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains", + maxdomains, sizeof(maxdomains))); +} diff --git a/include/hw/ppc/spapr_numa.h b/include/hw/ppc/spapr_numa.h new file mode 100644 index 0000000000..7a370a8768 --- /dev/null +++ b/include/hw/ppc/spapr_numa.h @@ -0,0 +1,20 @@ +/* + * QEMU PowerPC pSeries Logical Partition NUMA associativity handling + * + * Copyright IBM Corp. 2020 + * + * Authors: + * Daniel Henrique Barboza + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#ifndef HW_SPAPR_NUMA_H +#define HW_SPAPR_NUMA_H + +#include "hw/ppc/spapr.h" + +void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, void *fdt, int rta= s); + +#endif /* HW_SPAPR_NUMA_H */ --=20 2.26.2 From nobody Sun Feb 8 09:11:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1598965141; cv=none; d=zohomail.com; s=zohoarc; b=i/2y+B845MtROHHqpp3ojPuAtNm3i7KPH+mRh3g7oIn0ZYMPXcpqwEBh8h8f6T8ryBJ0Sz25m41juHXvswHgy+ues9s5t9wCk4dov14TDH2SXM6eOBEN8x+XfVzEO6tUK9nmTWKLyqi35L2Wze65M0Ld8pypTYWOfsrELA3fOGQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598965141; 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=rPSJXCdnCjZN031MOhXLn7MojgWPIyyf26HWbCzojXM=; b=GeO+ZpI1wZqOxPCGRE+T85bRmRncGBo+CDQUo52YvyqNK+OwsbPOb7W8AHJ8tHotBeA9KLymx2rO5gMlYktKvO7EzXTKmqSTQZWdwjUmIGb7HiUbwDipynAI47kigVFdniDd/j3DBoCgfylzBPI9T53Vx2ONmarFQnmkoSJ4nF4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1598965141202887.9162184451762; Tue, 1 Sep 2020 05:59:01 -0700 (PDT) Received: from localhost ([::1]:34090 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kD5sK-0004VG-C9 for importer@patchew.org; Tue, 01 Sep 2020 08:59:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36342) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kD5qQ-0001IV-SU; Tue, 01 Sep 2020 08:57:02 -0400 Received: from mail-qk1-x741.google.com ([2607:f8b0:4864:20::741]:41864) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kD5qP-0002mI-7Z; Tue, 01 Sep 2020 08:57:02 -0400 Received: by mail-qk1-x741.google.com with SMTP id g72so766990qke.8; Tue, 01 Sep 2020 05:56:58 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:6be:f6e3:c671:cefe:b943]) by smtp.gmail.com with ESMTPSA id q7sm1430164qkf.35.2020.09.01.05.56.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 05:56:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rPSJXCdnCjZN031MOhXLn7MojgWPIyyf26HWbCzojXM=; b=E/+hOrORxVytuOCfJt2Z1p8yBu98n5NvWpdrgWYvpzrQtpiXiEdAe5RdiNjuNqn7Np tz9dUDDx0naGD9K9qKwRrUlQakiUu1/qhLHXPV/FWXNx4AkROXatDju1K2q1GiTXVH/i QTFZ5iei2BobqQxuiSG1846AuCZYRQKOfuzOxmeqvYsGIrnGJ1rW80QeIwozYA90rFjy IqhO4q1HGu1tT83JnMz74gSaXN/d2CcSi7Bky6ydX35vbS5zMuHvns/vmxN8kL2+rFOe UepEPOC41vfM8Hk+2su/QbiOcsFy5vzzA5FVpcvYf9d/vUa/Mbb0tur6qKdRYlixTXRV 9gMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rPSJXCdnCjZN031MOhXLn7MojgWPIyyf26HWbCzojXM=; b=LFzsT2oMlpQf24JTbkjRaHnnarL7WaH/N1Lw6w1yeHeKtXCn8fcCfec+fpcAMepauq 1Q7JwCv2EY5e4FTarjAU9nvf/dpzUhU/ipVLuFJiewJVHA60usNPDlbKhA6ooJxm9qYe 7RLadJYt4NOQ22TfYn+H7OXuakQkUF7rIbzmHrqyYoyN0AHLwM3prYsbgQNiMj7VgU24 sB7JvT/c9x8C5Byx3MIam28r3SxzM/lfgDmKOatPx1BbrEXhSLjL0W2S8n7pXZ8BnOef oREOLBYCC4lxPYXLQVXIc5LNzqu921U2IzH9TBObz3OXxbdXaDSx1mQZlr5pDU3E9m60 cP4w== X-Gm-Message-State: AOAM532+h9yv1IrE3bdJcbxbS0cujORnORCesVdkQgqy/C7gM6x8V2xi iFZKs456Hl7ahZrDhMmcCbDbRfBtqbSZ+Q== X-Google-Smtp-Source: ABdhPJzcSm67GpOXYeZNx5fVkC3vwNnRLHb2jeMTY+hwZjaVno30YCHnxDOwuA5790AW9voIgX//FQ== X-Received: by 2002:a05:620a:a0b:: with SMTP id i11mr1787558qka.65.1598965017767; Tue, 01 Sep 2020 05:56:57 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v2 2/7] ppc/spapr_nvdimm: turn spapr_dt_nvdimm() static Date: Tue, 1 Sep 2020 09:56:40 -0300 Message-Id: <20200901125645.118026-3-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200901125645.118026-1-danielhb413@gmail.com> References: <20200901125645.118026-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2607:f8b0:4864:20::741; envelope-from=danielhb413@gmail.com; helo=mail-qk1-x741.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Daniel Henrique Barboza , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This function is only used inside spapr_nvdimm.c. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr_nvdimm.c | 22 +++++++++++----------- include/hw/ppc/spapr_nvdimm.h | 1 - 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/hw/ppc/spapr_nvdimm.c b/hw/ppc/spapr_nvdimm.c index 95cbc30528..5188e2f503 100644 --- a/hw/ppc/spapr_nvdimm.c +++ b/hw/ppc/spapr_nvdimm.c @@ -106,16 +106,6 @@ void spapr_add_nvdimm(DeviceState *dev, uint64_t slot,= Error **errp) } } =20 -int spapr_pmem_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, - void *fdt, int *fdt_start_offset, Error **errp) -{ - NVDIMMDevice *nvdimm =3D NVDIMM(drc->dev); - - *fdt_start_offset =3D spapr_dt_nvdimm(fdt, 0, nvdimm); - - return 0; -} - void spapr_create_nvdimm_dr_connectors(SpaprMachineState *spapr) { MachineState *machine =3D MACHINE(spapr); @@ -127,7 +117,7 @@ void spapr_create_nvdimm_dr_connectors(SpaprMachineStat= e *spapr) } =20 =20 -int spapr_dt_nvdimm(void *fdt, int parent_offset, +static int spapr_dt_nvdimm(void *fdt, int parent_offset, NVDIMMDevice *nvdimm) { int child_offset; @@ -184,6 +174,16 @@ int spapr_dt_nvdimm(void *fdt, int parent_offset, return child_offset; } =20 +int spapr_pmem_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, + void *fdt, int *fdt_start_offset, Error **errp) +{ + NVDIMMDevice *nvdimm =3D NVDIMM(drc->dev); + + *fdt_start_offset =3D spapr_dt_nvdimm(fdt, 0, nvdimm); + + return 0; +} + void spapr_dt_persistent_memory(void *fdt) { int offset =3D fdt_subnode_offset(fdt, 0, "persistent-memory"); diff --git a/include/hw/ppc/spapr_nvdimm.h b/include/hw/ppc/spapr_nvdimm.h index fd1736634c..10a6d9dbbc 100644 --- a/include/hw/ppc/spapr_nvdimm.h +++ b/include/hw/ppc/spapr_nvdimm.h @@ -27,7 +27,6 @@ QEMU_BUILD_BUG_ON(SPAPR_MINIMUM_SCM_BLOCK_SIZE % SPAPR_ME= MORY_BLOCK_SIZE); =20 int spapr_pmem_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, void *fdt, int *fdt_start_offset, Error **errp); -int spapr_dt_nvdimm(void *fdt, int parent_offset, NVDIMMDevice *nvdimm); void spapr_dt_persistent_memory(void *fdt); void spapr_nvdimm_validate(HotplugHandler *hotplug_dev, NVDIMMDevice *nvdi= mm, uint64_t size, Error **errp); --=20 2.26.2 From nobody Sun Feb 8 09:11:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1598968501; cv=none; d=zohomail.com; s=zohoarc; b=k6id40GuJVwLlWlfWBDXOArExRP3JWf4MuO1u0YXfzb23aOFy1EPe36wZVtZgg6Mj2z6KGxyKy9CvN6lF6xNvRq6IKagTq4T/SnpjwCsdJB2ZvaX9XUanAxtiXgxIuwIR5CdOata7UdFg8106JwKePhP9uMfBUn6pfuSyCQHBrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598968501; 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=X4JeEPL4ZEeR7MtFOXVba+YwGV0pzjZM+YkE3+nJcS8=; b=jzu84/1XwahMorihtSLMU78ARNwGs5DM1imVhstHKBvMbtELI+23e1wSRyJMVpsFYQw5GlWdXktFc5xnYU+KP6R1Xzb+NHyu1ASqGyHCT5/yp7EndjW3aAQVMk8XLBghFendaYkSK3GKu9NLY8cmvcW2Pqnt5t7NycXWWOFBNdI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1598968501896833.284833254488; Tue, 1 Sep 2020 06:55:01 -0700 (PDT) Received: from localhost ([::1]:55428 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kD5xM-0004nK-EE for importer@patchew.org; Tue, 01 Sep 2020 09:04:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36372) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kD5qS-0001No-RF; Tue, 01 Sep 2020 08:57:04 -0400 Received: from mail-qk1-x741.google.com ([2607:f8b0:4864:20::741]:35306) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kD5qP-0002mS-GB; Tue, 01 Sep 2020 08:57:04 -0400 Received: by mail-qk1-x741.google.com with SMTP id p25so783144qkp.2; Tue, 01 Sep 2020 05:57:00 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:6be:f6e3:c671:cefe:b943]) by smtp.gmail.com with ESMTPSA id q7sm1430164qkf.35.2020.09.01.05.56.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 05:56:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X4JeEPL4ZEeR7MtFOXVba+YwGV0pzjZM+YkE3+nJcS8=; b=obZH9ZadJbTGB4kEHJ2XxtsuDXllSlyRtupbFuAVXVyooNnD2q4rLhdBi1B5h63SYi /DkXNKL4SKvt4IcEoUeNwNxhOkPbABZDEKI+u5/VBs1HPikdWXB4EQZjRcWfZevthjt3 wNgDDzFX7iWoOOLZgDSM/2MgAwZhkX0DiSrPev2Q7UyfBBrNVAneqDvZq1xxD9EiCt/e qcBHsd3Vg/hzLY56TuITSMRp/ScK9I1UpHcjZQOAmdG8pa9BUX3uf4LtfOybAoxnGknY fqYhOGt3pReTbJlwWD6Tvqdc2vAt8Ejo1GU15/b3LtNtpSuw/WO6f/Be1AIpUmggJV3H wyDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X4JeEPL4ZEeR7MtFOXVba+YwGV0pzjZM+YkE3+nJcS8=; b=QemLPOmSBgViC8wrffawaGyGUc07EsfrKjz1kSPviAImf7KfWCAkX054FPjkFZrNNw WJFF73QUSJ3cyKXCe+0ziVJOqTspQDxyyP0N6rx1di/HrajTbNg9MD4kFSi1FmDxPiVM Gm1Xd9xUksVOo5adMkawEDvsLNzVdJFWCqOBwaDpny7Ms9TbmNa8B3gzkBLZPDUbND5y R0rPMCsxBdu1q3u8ZId96sSzkkS/z6tWRrhm2Tqqx1Len4xPgRENV8FPNmI/pL8PNqAh ZXWsTvobYGRuicZbuE4cP/EDP3bniMKdCfrh/NJywCMkvMUZSX8kFLGJviJxlKaZXU5G P2EA== X-Gm-Message-State: AOAM530ysbgBNAUuFk4CPP3/KbAZJnStJ3B919efgAS7mMuFKXmm4QeQ aP5ewKT8Qe90AQ2aqN26mpDMX3VfpUBHHQ== X-Google-Smtp-Source: ABdhPJyU1AX9Jyxe44eQ4bNryAI2ElSOZCRbheBPE6roFRqlX3E04Naax59EQb+6MlFpcem6s7mnZQ== X-Received: by 2002:a05:620a:141a:: with SMTP id d26mr1668288qkj.217.1598965019682; Tue, 01 Sep 2020 05:56:59 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v2 3/7] spapr: introduce SpaprMachineClass::numa_assoc_array Date: Tue, 1 Sep 2020 09:56:41 -0300 Message-Id: <20200901125645.118026-4-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200901125645.118026-1-danielhb413@gmail.com> References: <20200901125645.118026-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2607:f8b0:4864:20::741; envelope-from=danielhb413@gmail.com; helo=mail-qk1-x741.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Daniel Henrique Barboza , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The next step to centralize all NUMA/associativity handling in the spapr machine is to create a 'one stop place' for all things ibm,associativity. This patch introduces numa_assoc_array, a 2 dimensional array that will store all ibm,associativity arrays of all NUMA nodes. This array is initialized in a new spapr_numa_associativity_init() function, called in spapr_machine_init(). It is being initialized with the same values used in other ibm,associativity properties around spapr files (i.e. all zeros, last value is node_id). The idea is to remove all hardcoded definitions and FDT writes of ibm,associativity arrays, doing instead a call to the new helper spapr_numa_write_associativity_dt() helper, that will be able to write the DT with the correct values. We'll start small, handling the trivial cases first. The remaining instances of ibm,associativity will be handled next. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr.c | 23 ++++++++++------------- hw/ppc/spapr_numa.c | 32 ++++++++++++++++++++++++++++++++ hw/ppc/spapr_nvdimm.c | 19 +++++++------------ hw/ppc/spapr_pci.c | 9 ++------- include/hw/ppc/spapr.h | 13 ++++++++++++- include/hw/ppc/spapr_numa.h | 5 +++++ include/hw/ppc/spapr_nvdimm.h | 2 +- 7 files changed, 69 insertions(+), 34 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index a45912acac..fb9b2572fe 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -314,14 +314,9 @@ static void add_str(GString *s, const gchar *s1) g_string_append_len(s, s1, strlen(s1) + 1); } =20 -static int spapr_dt_memory_node(void *fdt, int nodeid, hwaddr start, - hwaddr size) +static int spapr_dt_memory_node(SpaprMachineState *spapr, void *fdt, int n= odeid, + hwaddr start, hwaddr size) { - uint32_t associativity[] =3D { - cpu_to_be32(0x4), /* length */ - cpu_to_be32(0x0), cpu_to_be32(0x0), - cpu_to_be32(0x0), cpu_to_be32(nodeid) - }; char mem_name[32]; uint64_t mem_reg_property[2]; int off; @@ -335,8 +330,7 @@ static int spapr_dt_memory_node(void *fdt, int nodeid, = hwaddr start, _FDT((fdt_setprop_string(fdt, off, "device_type", "memory"))); _FDT((fdt_setprop(fdt, off, "reg", mem_reg_property, sizeof(mem_reg_property)))); - _FDT((fdt_setprop(fdt, off, "ibm,associativity", associativity, - sizeof(associativity)))); + spapr_numa_write_associativity_dt(spapr, fdt, off, nodeid); return off; } =20 @@ -649,7 +643,7 @@ static int spapr_dt_memory(SpaprMachineState *spapr, vo= id *fdt) if (!mem_start) { /* spapr_machine_init() checks for rma_size <=3D node0_size * already */ - spapr_dt_memory_node(fdt, i, 0, spapr->rma_size); + spapr_dt_memory_node(spapr, fdt, i, 0, spapr->rma_size); mem_start +=3D spapr->rma_size; node_size -=3D spapr->rma_size; } @@ -661,7 +655,7 @@ static int spapr_dt_memory(SpaprMachineState *spapr, vo= id *fdt) sizetmp =3D 1ULL << ctzl(mem_start); } =20 - spapr_dt_memory_node(fdt, i, mem_start, sizetmp); + spapr_dt_memory_node(spapr, fdt, i, mem_start, sizetmp); node_size -=3D sizetmp; mem_start +=3D sizetmp; } @@ -1275,7 +1269,7 @@ void *spapr_build_fdt(SpaprMachineState *spapr, bool = reset, size_t space) =20 /* NVDIMM devices */ if (mc->nvdimm_supported) { - spapr_dt_persistent_memory(fdt); + spapr_dt_persistent_memory(spapr, fdt); } =20 return fdt; @@ -2810,6 +2804,9 @@ static void spapr_machine_init(MachineState *machine) */ spapr->gpu_numa_id =3D MAX(1, machine->numa_state->num_nodes); =20 + /* Init numa_assoc_array */ + spapr_numa_associativity_init(machine); + if ((!kvm_enabled() || kvmppc_has_cap_mmu_radix()) && ppc_type_check_compat(machine->cpu_type, CPU_POWERPC_LOGICAL_3_00,= 0, spapr->max_compat_pvr)) { @@ -3394,7 +3391,7 @@ int spapr_lmb_dt_populate(SpaprDrc *drc, SpaprMachine= State *spapr, addr =3D spapr_drc_index(drc) * SPAPR_MEMORY_BLOCK_SIZE; node =3D object_property_get_uint(OBJECT(drc->dev), PC_DIMM_NODE_PROP, &error_abort); - *fdt_start_offset =3D spapr_dt_memory_node(fdt, node, addr, + *fdt_start_offset =3D spapr_dt_memory_node(spapr, fdt, node, addr, SPAPR_MEMORY_BLOCK_SIZE); return 0; } diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c index cdf3288cbd..2cfe13eaed 100644 --- a/hw/ppc/spapr_numa.c +++ b/hw/ppc/spapr_numa.c @@ -15,6 +15,38 @@ #include "hw/ppc/spapr_numa.h" #include "hw/ppc/fdt.h" =20 + +void spapr_numa_associativity_init(MachineState *machine) +{ + SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(machine); + int nb_numa_nodes =3D machine->numa_state->num_nodes; + int i; + + /* + * For all associativity arrays: first position is the size, + * position MAX_DISTANCE_REF_POINTS is always the numa_id, + * represented by the index 'i'. + * + * This will break on sparse NUMA setups, when/if QEMU starts + * to support it, because there will be no more guarantee that + * 'i' will be a valid node_id set by the user. + */ + for (i =3D 0; i < nb_numa_nodes; i++) { + smc->numa_assoc_array[i][0] =3D cpu_to_be32(MAX_DISTANCE_REF_POINT= S); + smc->numa_assoc_array[i][MAX_DISTANCE_REF_POINTS] =3D cpu_to_be32(= i); + } +} + +void spapr_numa_write_associativity_dt(SpaprMachineState *spapr, void *fdt, + int offset, int nodeid) +{ + SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(spapr); + + _FDT((fdt_setprop(fdt, offset, "ibm,associativity", + smc->numa_assoc_array[nodeid], + sizeof(smc->numa_assoc_array[nodeid])))); +} + /* * Helper that writes ibm,associativity-reference-points and * max-associativity-domains in the RTAS pointed by @rtas diff --git a/hw/ppc/spapr_nvdimm.c b/hw/ppc/spapr_nvdimm.c index 5188e2f503..63872054f3 100644 --- a/hw/ppc/spapr_nvdimm.c +++ b/hw/ppc/spapr_nvdimm.c @@ -31,6 +31,7 @@ #include "hw/ppc/fdt.h" #include "qemu/range.h" #include "sysemu/sysemu.h" +#include "hw/ppc/spapr_numa.h" =20 void spapr_nvdimm_validate(HotplugHandler *hotplug_dev, NVDIMMDevice *nvdi= mm, uint64_t size, Error **errp) @@ -117,8 +118,8 @@ void spapr_create_nvdimm_dr_connectors(SpaprMachineStat= e *spapr) } =20 =20 -static int spapr_dt_nvdimm(void *fdt, int parent_offset, - NVDIMMDevice *nvdimm) +static int spapr_dt_nvdimm(SpaprMachineState *spapr, void *fdt, + int parent_offset, NVDIMMDevice *nvdimm) { int child_offset; char *buf; @@ -128,11 +129,6 @@ static int spapr_dt_nvdimm(void *fdt, int parent_offse= t, &error_abort); uint64_t slot =3D object_property_get_uint(OBJECT(nvdimm), PC_DIMM_SLO= T_PROP, &error_abort); - uint32_t associativity[] =3D { - cpu_to_be32(0x4), /* length */ - cpu_to_be32(0x0), cpu_to_be32(0x0), - cpu_to_be32(0x0), cpu_to_be32(node) - }; uint64_t lsize =3D nvdimm->label_size; uint64_t size =3D object_property_get_int(OBJECT(nvdimm), PC_DIMM_SIZE= _PROP, NULL); @@ -152,8 +148,7 @@ static int spapr_dt_nvdimm(void *fdt, int parent_offset, _FDT((fdt_setprop_string(fdt, child_offset, "compatible", "ibm,pmemory= "))); _FDT((fdt_setprop_string(fdt, child_offset, "device_type", "ibm,pmemor= y"))); =20 - _FDT((fdt_setprop(fdt, child_offset, "ibm,associativity", associativit= y, - sizeof(associativity)))); + spapr_numa_write_associativity_dt(spapr, fdt, child_offset, node); =20 buf =3D qemu_uuid_unparse_strdup(&nvdimm->uuid); _FDT((fdt_setprop_string(fdt, child_offset, "ibm,unit-guid", buf))); @@ -179,12 +174,12 @@ int spapr_pmem_dt_populate(SpaprDrc *drc, SpaprMachin= eState *spapr, { NVDIMMDevice *nvdimm =3D NVDIMM(drc->dev); =20 - *fdt_start_offset =3D spapr_dt_nvdimm(fdt, 0, nvdimm); + *fdt_start_offset =3D spapr_dt_nvdimm(spapr, fdt, 0, nvdimm); =20 return 0; } =20 -void spapr_dt_persistent_memory(void *fdt) +void spapr_dt_persistent_memory(SpaprMachineState *spapr, void *fdt) { int offset =3D fdt_subnode_offset(fdt, 0, "persistent-memory"); GSList *iter, *nvdimms =3D nvdimm_get_device_list(); @@ -202,7 +197,7 @@ void spapr_dt_persistent_memory(void *fdt) for (iter =3D nvdimms; iter; iter =3D iter->next) { NVDIMMDevice *nvdimm =3D iter->data; =20 - spapr_dt_nvdimm(fdt, offset, nvdimm); + spapr_dt_nvdimm(spapr, fdt, offset, nvdimm); } g_slist_free(nvdimms); =20 diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 0a418f1e67..4d97ff6c70 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -52,6 +52,7 @@ #include "sysemu/kvm.h" #include "sysemu/hostmem.h" #include "sysemu/numa.h" +#include "hw/ppc/spapr_numa.h" =20 /* Copied from the kernel arch/powerpc/platforms/pseries/msi.c */ #define RTAS_QUERY_FN 0 @@ -2321,11 +2322,6 @@ int spapr_dt_phb(SpaprMachineState *spapr, SpaprPhbS= tate *phb, cpu_to_be32(1), cpu_to_be32(RTAS_IBM_RESET_PE_DMA_WINDOW) }; - uint32_t associativity[] =3D {cpu_to_be32(0x4), - cpu_to_be32(0x0), - cpu_to_be32(0x0), - cpu_to_be32(0x0), - cpu_to_be32(phb->numa_node)}; SpaprTceTable *tcet; SpaprDrc *drc; Error *err =3D NULL; @@ -2358,8 +2354,7 @@ int spapr_dt_phb(SpaprMachineState *spapr, SpaprPhbSt= ate *phb, =20 /* Advertise NUMA via ibm,associativity */ if (phb->numa_node !=3D -1) { - _FDT(fdt_setprop(fdt, bus_off, "ibm,associativity", associativity, - sizeof(associativity))); + spapr_numa_write_associativity_dt(spapr, fdt, bus_off, phb->numa_n= ode); } =20 /* Build the interrupt-map, this must matches what is done diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index a1e230ad39..140914f9a1 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -105,6 +105,16 @@ typedef enum { =20 #define FDT_MAX_SIZE 0x100000 =20 +/* + * NUMA related macros. MAX_DISTANCE_REF_POINTS was taken + * from Taken from Linux kernel arch/powerpc/mm/numa.h. + * + * NUMA_ASSOC_SIZE is the base array size of an ibm,associativity + * array for any non-CPU resource. + */ +#define MAX_DISTANCE_REF_POINTS 4 +#define NUMA_ASSOC_SIZE (MAX_DISTANCE_REF_POINTS + 1) + typedef struct SpaprCapabilities SpaprCapabilities; struct SpaprCapabilities { uint8_t caps[SPAPR_CAP_NUM]; @@ -131,9 +141,10 @@ struct SpaprMachineClass { bool smp_threads_vsmt; /* set VSMT to smp_threads by default */ hwaddr rma_limit; /* clamp the RMA to this size */ bool pre_5_1_assoc_refpoints; + uint32_t numa_assoc_array[MAX_NODES][NUMA_ASSOC_SIZE]; =20 void (*phb_placement)(SpaprMachineState *spapr, uint32_t index, - uint64_t *buid, hwaddr *pio,=20 + uint64_t *buid, hwaddr *pio, hwaddr *mmio32, hwaddr *mmio64, unsigned n_dma, uint32_t *liobns, hwaddr *nv2gpa, hwaddr *nv2atsd, Error **errp); diff --git a/include/hw/ppc/spapr_numa.h b/include/hw/ppc/spapr_numa.h index 7a370a8768..2625e3db67 100644 --- a/include/hw/ppc/spapr_numa.h +++ b/include/hw/ppc/spapr_numa.h @@ -13,8 +13,13 @@ #ifndef HW_SPAPR_NUMA_H #define HW_SPAPR_NUMA_H =20 +#include "hw/boards.h" #include "hw/ppc/spapr.h" =20 +void spapr_numa_associativity_init(MachineState *machine); void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, void *fdt, int rta= s); +void spapr_numa_write_associativity_dt(SpaprMachineState *spapr, void *fdt, + int offset, int nodeid); + =20 #endif /* HW_SPAPR_NUMA_H */ diff --git a/include/hw/ppc/spapr_nvdimm.h b/include/hw/ppc/spapr_nvdimm.h index 10a6d9dbbc..3eb344e8e9 100644 --- a/include/hw/ppc/spapr_nvdimm.h +++ b/include/hw/ppc/spapr_nvdimm.h @@ -27,7 +27,7 @@ QEMU_BUILD_BUG_ON(SPAPR_MINIMUM_SCM_BLOCK_SIZE % SPAPR_ME= MORY_BLOCK_SIZE); =20 int spapr_pmem_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, void *fdt, int *fdt_start_offset, Error **errp); -void spapr_dt_persistent_memory(void *fdt); +void spapr_dt_persistent_memory(SpaprMachineState *spapr, void *fdt); void spapr_nvdimm_validate(HotplugHandler *hotplug_dev, NVDIMMDevice *nvdi= mm, uint64_t size, Error **errp); void spapr_add_nvdimm(DeviceState *dev, uint64_t slot, Error **errp); --=20 2.26.2 From nobody Sun Feb 8 09:11:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1598965309; cv=none; d=zohomail.com; s=zohoarc; b=ON0WigodJ8TZqVLwjrHTQpJtL65KxMxQQ6XnkrsEburIxllFfN/wmbACtRV6tXYUhZs/SRtZryTtXeI6uj89hpA10ZWtuh+SRqLtNIunAlrMiDU2NlnPMBnlHaFvqfdHx28IXMtwSPeGCeBbNgKFsnv/ufFnM1L0S0g3AMjfpgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598965309; 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=fmYFoJEOIU4mP5jnAooDQQH/NJrDz9DrWxhjpnPtt1Q=; b=LFmiN/6nqw7AR+YofGfdDV9dsAp4qIwJ45E0vhKQrlV23FZQlemXK+5k22vSN4+Dc5UlbR3XLu+csgeGxHrHTnfvfQBTdup2fAeBEYT74bOQ0J1Ul+SMXjUBhLG1jlTRKeqXqYZt2Sm7ceCQ+KTIhUl7r8NDaUkfpB6VICMQ9pc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1598965309425953.1200169991505; Tue, 1 Sep 2020 06:01:49 -0700 (PDT) Received: from localhost ([::1]:43528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kD5v1-0008RM-3c for importer@patchew.org; Tue, 01 Sep 2020 09:01:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36424) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kD5qW-0001X3-BF; Tue, 01 Sep 2020 08:57:08 -0400 Received: from mail-qk1-x744.google.com ([2607:f8b0:4864:20::744]:36327) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kD5qQ-0002mj-ON; Tue, 01 Sep 2020 08:57:08 -0400 Received: by mail-qk1-x744.google.com with SMTP id f2so779330qkh.3; Tue, 01 Sep 2020 05:57:02 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:6be:f6e3:c671:cefe:b943]) by smtp.gmail.com with ESMTPSA id q7sm1430164qkf.35.2020.09.01.05.56.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 05:57:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fmYFoJEOIU4mP5jnAooDQQH/NJrDz9DrWxhjpnPtt1Q=; b=qCRO+HCzWdheAic9XZckzuR4cCeHmdLQ1HZva5Jb1PhdKK/ABydDPLRjcrnOm8wrHc tkYPQ63aMCB0e1oB5i3gCg/erT+IWCE8wQJjyKSx2vj1PHOHuQBhe/tpv6JwvEDAKUFo 1gZyERxV2enVnK1rAojbj2n2QoMhuwFeVAQe/aFtrpmeRScxskFeDkV0ovBorNL2mx94 4oXK2U/mF3rEdKYsM4GzWA+Fi2y0HKJtjUfq/lYfAQIn1Uzu2DduHT6JRacDIJWmModW jM8ttuSv8alXvlXQOn930VfvRv/8o19XFBfY+95uRgNja2Hi2onDOW1bwJkBpdn4K44O +U7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fmYFoJEOIU4mP5jnAooDQQH/NJrDz9DrWxhjpnPtt1Q=; b=ImlUHhxz/aYFt+wtpRgL6YZ7XZBGy4IUGBt2QyGIou9omXnEGY58eVedNlzpgXJnUG 4hRgYdvOzzA8HO1fsp3QYq2oAxoErYUS5h8a1PGMUcy9hounRSCp48+DVXwM8nkWTELu FtDqqwlByVzj+GYgNUXmyIx4dZb8NlpZRZqVps6yawDLuy9lQ89skfESba9TdAISkADh LREpFUmPqH/P86dchIviGEo35q4/8IIONU7u9BVr5V965guFb7Y5MXne/tflhhcnnv6B 299vsTSvwr4mhMcFdpwocY/qcKPfI2RWg3+bt4zGdB0uJhIcgey8MWI7I34VYXc8pQlk L30A== X-Gm-Message-State: AOAM530RO/dZvX10qYXpFwT0I4AlBZf8KPAOuncHuxvlDOQz2J7eKxue K12XZVCJ9wAXMPBgVDSGdUAecafhK4ARIg== X-Google-Smtp-Source: ABdhPJxmzNZVWVJZM+eKDgQ1h7lhCQnQpzJAYsYHmcbFjcrxTM3CEQwWCnAI4RCEKRsLhUk5tC/rNQ== X-Received: by 2002:a37:a602:: with SMTP id p2mr1747878qke.254.1598965021337; Tue, 01 Sep 2020 05:57:01 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v2 4/7] spapr, spapr_numa: handle vcpu ibm,associativity Date: Tue, 1 Sep 2020 09:56:42 -0300 Message-Id: <20200901125645.118026-5-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200901125645.118026-1-danielhb413@gmail.com> References: <20200901125645.118026-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2607:f8b0:4864:20::744; envelope-from=danielhb413@gmail.com; helo=mail-qk1-x744.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Daniel Henrique Barboza , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Vcpus have an additional paramenter to be appended, vcpu_id. This also changes the size of the of property itself, which is being represented in index 0 of numa_assoc_array[cpu->node_id], and defaults to MAX_DISTANCE_REF_POINTS for all cases but vcpus. All this logic makes more sense in spapr_numa.c, where we handle everything NUMA and associativity. A new helper spapr_numa_fixup_cpu_dt() was added, and spapr.c uses it the same way as it was using the former spapr_fixup_cpu_numa_dt(). Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr.c | 17 +---------------- hw/ppc/spapr_numa.c | 28 ++++++++++++++++++++++++++++ include/hw/ppc/spapr_numa.h | 2 ++ 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index fb9b2572fe..172f965fe0 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -202,21 +202,6 @@ static int spapr_fixup_cpu_smt_dt(void *fdt, int offse= t, PowerPCCPU *cpu, return ret; } =20 -static int spapr_fixup_cpu_numa_dt(void *fdt, int offset, PowerPCCPU *cpu) -{ - int index =3D spapr_get_vcpu_id(cpu); - uint32_t associativity[] =3D {cpu_to_be32(0x5), - cpu_to_be32(0x0), - cpu_to_be32(0x0), - cpu_to_be32(0x0), - cpu_to_be32(cpu->node_id), - cpu_to_be32(index)}; - - /* Advertise NUMA via ibm,associativity */ - return fdt_setprop(fdt, offset, "ibm,associativity", associativity, - sizeof(associativity)); -} - static void spapr_dt_pa_features(SpaprMachineState *spapr, PowerPCCPU *cpu, void *fdt, int offset) @@ -785,7 +770,7 @@ static void spapr_dt_cpu(CPUState *cs, void *fdt, int o= ffset, pft_size_prop, sizeof(pft_size_prop)))); =20 if (ms->numa_state->num_nodes > 1) { - _FDT(spapr_fixup_cpu_numa_dt(fdt, offset, cpu)); + _FDT(spapr_numa_fixup_cpu_dt(spapr, fdt, offset, cpu)); } =20 _FDT(spapr_fixup_cpu_smt_dt(fdt, offset, cpu, compat_smt)); diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c index 2cfe13eaed..b8882d209e 100644 --- a/hw/ppc/spapr_numa.c +++ b/hw/ppc/spapr_numa.c @@ -47,6 +47,34 @@ void spapr_numa_write_associativity_dt(SpaprMachineState= *spapr, void *fdt, sizeof(smc->numa_assoc_array[nodeid])))); } =20 +int spapr_numa_fixup_cpu_dt(SpaprMachineState *spapr, void *fdt, + int offset, PowerPCCPU *cpu) +{ + SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(spapr); + uint vcpu_assoc_size =3D NUMA_ASSOC_SIZE + 1; + uint32_t vcpu_assoc[vcpu_assoc_size]; + int index =3D spapr_get_vcpu_id(cpu); + int i; + + /* + * VCPUs have an extra 'cpu_id' value in ibm,associativity + * compared to other resources. Increment the size at index + * 0, copy all associativity domains already set, then put + * cpu_id last. + */ + vcpu_assoc[0] =3D cpu_to_be32(MAX_DISTANCE_REF_POINTS + 1); + + for (i =3D 1; i <=3D MAX_DISTANCE_REF_POINTS; i++) { + vcpu_assoc[i] =3D smc->numa_assoc_array[cpu->node_id][i]; + } + + vcpu_assoc[vcpu_assoc_size - 1] =3D cpu_to_be32(index); + + /* Advertise NUMA via ibm,associativity */ + return fdt_setprop(fdt, offset, "ibm,associativity", + vcpu_assoc, sizeof(vcpu_assoc)); +} + /* * Helper that writes ibm,associativity-reference-points and * max-associativity-domains in the RTAS pointed by @rtas diff --git a/include/hw/ppc/spapr_numa.h b/include/hw/ppc/spapr_numa.h index 2625e3db67..f92fb4f28a 100644 --- a/include/hw/ppc/spapr_numa.h +++ b/include/hw/ppc/spapr_numa.h @@ -20,6 +20,8 @@ void spapr_numa_associativity_init(MachineState *machine); void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, void *fdt, int rta= s); void spapr_numa_write_associativity_dt(SpaprMachineState *spapr, void *fdt, int offset, int nodeid); +int spapr_numa_fixup_cpu_dt(SpaprMachineState *spapr, void *fdt, + int offset, PowerPCCPU *cpu); =20 =20 #endif /* HW_SPAPR_NUMA_H */ --=20 2.26.2 From nobody Sun Feb 8 09:11:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1598965099; cv=none; d=zohomail.com; s=zohoarc; b=A/+NTIisksIfyOFSWFCqw7HDzD9sUXKfFrF5EBf+SfdEgRH1Xw62MQwZixYA8H5NOHMqduxYmdSdGY23aqONf5kYDXfJmt5i/qzcZRvSwMt5WXLvC0n0CtT/81e3zy2ADwPivf/VKGaKkjlhH+PO5oXZan35IjK8TlNdL6Rp8jA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598965099; 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=2JShfyJfS/zPyW00aOHuTSz2uDpf88AEIFLQZdU+7JY=; b=cQePZN4JB++WW/vG134+VLBhvca+3V2scdjiAB75uHizmQX0mwFakrELD3Wg1uI6MpH8FsMPCCVElVc1KsV3EjTUyFIGvnf4LMR3Qc+u36oqMOPqiSCfrUGbRFdG+Fbt8dkWMVlyWLws4g8SXBBi5d07rZbpkLhaE1+IFFGzSD8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1598965099864668.6217298235514; Tue, 1 Sep 2020 05:58:19 -0700 (PDT) Received: from localhost ([::1]:59112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kD5rf-0003Dr-2g for importer@patchew.org; Tue, 01 Sep 2020 08:58:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36390) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kD5qU-0001RX-A8; Tue, 01 Sep 2020 08:57:06 -0400 Received: from mail-qt1-x843.google.com ([2607:f8b0:4864:20::843]:46137) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kD5qS-0002my-Fm; Tue, 01 Sep 2020 08:57:05 -0400 Received: by mail-qt1-x843.google.com with SMTP id b3so722642qtg.13; Tue, 01 Sep 2020 05:57:03 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:6be:f6e3:c671:cefe:b943]) by smtp.gmail.com with ESMTPSA id q7sm1430164qkf.35.2020.09.01.05.57.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 05:57:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2JShfyJfS/zPyW00aOHuTSz2uDpf88AEIFLQZdU+7JY=; b=J7sc2BeZIc0F4Jnwj5qicUhFh+x5JuIcpu081afNgAZIkrWbpYAJa3WCgW5KuNKx// rqw1FZl6symCFL2Mo9BoKwUdD37Ik8YHzeh611mwwHiBgX4VFdezts5LkwsmxPb2g+x/ D8EQ/9K6pLx9qymbVFqDxjZ0U/Q4lFWMH9l+ROFQQYUBLMPGUfUU7YjijqQ1oYCZxtsy NnaOw51elqSk9KJyMQ8w7rmJIyenhIjCEn54h83vV+8aC2ly/Ucs0SYmuBxJDWrB2ixc ri72G/yJjrRI0RaKPb3co5niUW7RmojUVNa+MuhpWGNrhHm72EJKorZb2ve1D2JPn0m3 8U4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2JShfyJfS/zPyW00aOHuTSz2uDpf88AEIFLQZdU+7JY=; b=V4xCWSNvsmOw4k0rflEYyvsWyYPtQBs6LFk6PsIplA71dqURpukcwJndoV/mKYaQ9a 1VcCnHWBbCpeCqi5iQP6NWVsiOlswkuBON3Upd9dl0d3kW/F6nkgLD+OCtxp7On43XeB snRu3+db1XfNxgyLWNQmawTnLlwHCXPYDFw42C29Mo8Ka+qz+Pw9yXuSJ6zzza6hUQWg loyFiMrGBT03eN+ihVVwHFnhoOjmlMopiwGdN2gHdl0nUZXLrBs7zbdCh8xbIY3KH/HL fLAYb38SfScH/z+JLhdX9Aa/wwtHCA0Bu0SqTUukGu3UorQnnqsZO8/eYX/KfEOUrA7n dL+g== X-Gm-Message-State: AOAM532ozrgawhnCUS9+RpZ2wHgdff+8sSM0LL27RX42/sdpxPEm+EOn tV7Eq7GQwFf62BW5egV6VgLT7isfwx4VcA== X-Google-Smtp-Source: ABdhPJyfcDPQTDj+bsXpBCGAEOG9XcnhUPfsOoUlXG/rcNBnlQ9NTnHWkx2bSj/8Ltx6H/W+t0SbJQ== X-Received: by 2002:aed:30e1:: with SMTP id 88mr1719972qtf.66.1598965023028; Tue, 01 Sep 2020 05:57:03 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v2 5/7] spapr, spapr_numa: move lookup-arrays handling to spapr_numa.c Date: Tue, 1 Sep 2020 09:56:43 -0300 Message-Id: <20200901125645.118026-6-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200901125645.118026-1-danielhb413@gmail.com> References: <20200901125645.118026-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2607:f8b0:4864:20::843; envelope-from=danielhb413@gmail.com; helo=mail-qt1-x843.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Daniel Henrique Barboza , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" In a similar fashion as the previous patch, let's move the handling of ibm,associativity-lookup-arrays from spapr.c to spapr_numa.c. A spapr_numa_write_assoc_lookup_arrays() helper was created, and spapr_dt_dynamic_reconfiguration_memory() can now use it to advertise the lookup-arrays. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr.c | 25 ++---------------------- hw/ppc/spapr_numa.c | 39 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/spapr_numa.h | 2 ++ 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 172f965fe0..65d2ccd578 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -535,13 +535,10 @@ static int spapr_dt_dynamic_reconfiguration_memory(Sp= aprMachineState *spapr, void *fdt) { MachineState *machine =3D MACHINE(spapr); - int nb_numa_nodes =3D machine->numa_state->num_nodes; - int ret, i, offset; + int ret, offset; uint64_t lmb_size =3D SPAPR_MEMORY_BLOCK_SIZE; uint32_t prop_lmb_size[] =3D {cpu_to_be32(lmb_size >> 32), cpu_to_be32(lmb_size & 0xffffffff)}; - uint32_t *int_buf, *cur_index, buf_len; - int nr_nodes =3D nb_numa_nodes ? nb_numa_nodes : 1; MemoryDeviceInfoList *dimms =3D NULL; =20 /* @@ -582,25 +579,7 @@ static int spapr_dt_dynamic_reconfiguration_memory(Spa= prMachineState *spapr, return ret; } =20 - /* ibm,associativity-lookup-arrays */ - buf_len =3D (nr_nodes * 4 + 2) * sizeof(uint32_t); - cur_index =3D int_buf =3D g_malloc0(buf_len); - int_buf[0] =3D cpu_to_be32(nr_nodes); - int_buf[1] =3D cpu_to_be32(4); /* Number of entries per associativity = list */ - cur_index +=3D 2; - for (i =3D 0; i < nr_nodes; i++) { - uint32_t associativity[] =3D { - cpu_to_be32(0x0), - cpu_to_be32(0x0), - cpu_to_be32(0x0), - cpu_to_be32(i) - }; - memcpy(cur_index, associativity, sizeof(associativity)); - cur_index +=3D 4; - } - ret =3D fdt_setprop(fdt, offset, "ibm,associativity-lookup-arrays", in= t_buf, - (cur_index - int_buf) * sizeof(uint32_t)); - g_free(int_buf); + ret =3D spapr_numa_write_assoc_lookup_arrays(spapr, fdt, offset); =20 return ret; } diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c index b8882d209e..9eb4bdbe80 100644 --- a/hw/ppc/spapr_numa.c +++ b/hw/ppc/spapr_numa.c @@ -75,6 +75,45 @@ int spapr_numa_fixup_cpu_dt(SpaprMachineState *spapr, vo= id *fdt, vcpu_assoc, sizeof(vcpu_assoc)); } =20 + +int spapr_numa_write_assoc_lookup_arrays(SpaprMachineState *spapr, void *f= dt, + int offset) +{ + MachineState *machine =3D MACHINE(spapr); + SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(spapr); + int nb_numa_nodes =3D machine->numa_state->num_nodes; + int nr_nodes =3D nb_numa_nodes ? nb_numa_nodes : 1; + uint32_t *int_buf, *cur_index, buf_len; + int ret, i, j; + + /* ibm,associativity-lookup-arrays */ + buf_len =3D (nr_nodes * MAX_DISTANCE_REF_POINTS + 2) * sizeof(uint32_t= ); + cur_index =3D int_buf =3D g_malloc0(buf_len); + int_buf[0] =3D cpu_to_be32(nr_nodes); + /* Number of entries per associativity list */ + int_buf[1] =3D cpu_to_be32(MAX_DISTANCE_REF_POINTS); + cur_index +=3D 2; + for (i =3D 0; i < nr_nodes; i++) { + /* + * For the lookup-array we use the ibm,associativity array, + * from numa_assoc_array. without the first element (size). + */ + uint32_t associativity[MAX_DISTANCE_REF_POINTS]; + + for (j =3D 0; j < MAX_DISTANCE_REF_POINTS; j++) { + associativity[j] =3D smc->numa_assoc_array[i][j + 1]; + } + + memcpy(cur_index, associativity, sizeof(associativity)); + cur_index +=3D 4; + } + ret =3D fdt_setprop(fdt, offset, "ibm,associativity-lookup-arrays", in= t_buf, + (cur_index - int_buf) * sizeof(uint32_t)); + g_free(int_buf); + + return ret; +} + /* * Helper that writes ibm,associativity-reference-points and * max-associativity-domains in the RTAS pointed by @rtas diff --git a/include/hw/ppc/spapr_numa.h b/include/hw/ppc/spapr_numa.h index f92fb4f28a..f6127501a6 100644 --- a/include/hw/ppc/spapr_numa.h +++ b/include/hw/ppc/spapr_numa.h @@ -22,6 +22,8 @@ void spapr_numa_write_associativity_dt(SpaprMachineState = *spapr, void *fdt, int offset, int nodeid); int spapr_numa_fixup_cpu_dt(SpaprMachineState *spapr, void *fdt, int offset, PowerPCCPU *cpu); +int spapr_numa_write_assoc_lookup_arrays(SpaprMachineState *spapr, void *f= dt, + int offset); =20 =20 #endif /* HW_SPAPR_NUMA_H */ --=20 2.26.2 From nobody Sun Feb 8 09:11:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1598965303; cv=none; d=zohomail.com; s=zohoarc; b=hf2CHk0zHB/qUJZhdQy41aY0YgNjGPitevvNqGvwmOnbTk0Ymq52h8QEA/CylmZQYIFHElOCdIJec7q64o2BL+wRJ1oCVUOwd8aXJmwfHzFEN40eOTW3lh/qVXALrmCXVuWgX5h+aQkKQojokz8tdgrpf/Q9C5/3zNqNkRFTMXc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598965303; 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=44LN6WKw2NuzFJmsrJlYdSX6iSr07Frryi3h99Vzf9c=; b=OuQssgiyj4yczmN/fsnIjBPxozE61EzVO4wWbDk73GFQAPCiZnXUD/a0WMWk/yMIUm/aJHdBEyS8y+nFDUDn3AC0UFTrJHvzDsTmpTFV0L0mr1CU/Nuxv6Xfy4wI3KoVTpE5PAgLw5DcLVEh5/w1HTY1HhJ9+F4cS+Qvm3ElniI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1598965303911449.34727871865914; Tue, 1 Sep 2020 06:01:43 -0700 (PDT) Received: from localhost ([::1]:43390 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kD5uw-0008Mn-KB for importer@patchew.org; Tue, 01 Sep 2020 09:01:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36418) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kD5qW-0001WR-6e; Tue, 01 Sep 2020 08:57:08 -0400 Received: from mail-qt1-x842.google.com ([2607:f8b0:4864:20::842]:43933) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kD5qU-0002nK-8H; Tue, 01 Sep 2020 08:57:07 -0400 Received: by mail-qt1-x842.google.com with SMTP id g3so669576qtq.10; Tue, 01 Sep 2020 05:57:05 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:6be:f6e3:c671:cefe:b943]) by smtp.gmail.com with ESMTPSA id q7sm1430164qkf.35.2020.09.01.05.57.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 05:57:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=44LN6WKw2NuzFJmsrJlYdSX6iSr07Frryi3h99Vzf9c=; b=LdLRs+7uYDbI+TLDEdAnDa69/GWygdQo5mCMybauUFJ09vEUS4iCfMXD4eBkhpuotc onpcHxA9dp4QXetVyklDNT4IrdK83rwJ01QlMblyDPjrIqzanWtNBfy5EkujgjzMLAb4 8tmVMkv2tm8aYPBbyNgn6ZNTvmKrZN8fIFUmYHPDNP07juBuXS3WMyySlfLxNfDQ1xpC C+FX53a7V7ohIgEUaYxlcfBx4Xp0RUtCUOuwZgWxxUELtkG7rsrsZX/8V1re9Ce4pvIb ESQNoEWqqDjOC7fBDsdu8+oM/lrOJTZQ65SHtYmHooZi0Ra0GicmXWGN/OUWWZr5dPjY TE6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=44LN6WKw2NuzFJmsrJlYdSX6iSr07Frryi3h99Vzf9c=; b=ZFB2eDjRuacGpb71kXm/+h57RUsEBlSekg3yDVi6OKSV73p9BZwA8uK1CFvrDTFeAc qpVAs4XSNMxaxmnj5qBrsLUlw8U1e+k52Aw6Vvpoo5NXKm+GfOo4tO0ffOzGv8iwLOG8 C9eUFgpISJ1N/womCyzfHJBokE65rnaHRYsy5w7r9fQ59UjD1Wprq3PuJQ4l2hD19fPx v5hkDPmndFOa5EJnoMmfdX7VS4DkSXhJgE/3+/kY7QBRE/8XcnqA8BvoJ9+H8CC2K4U6 l6p4CUUfnfe7dEBB8rk/0UqVF8FlsNsB+oYU7MFKidNk2cwoghQsbg116tkARhBm+BcZ ZLIQ== X-Gm-Message-State: AOAM5338NacpTIgOG/Gf8ztXd8o+Dx0pLEKt8B7CI7a6A3KW+UhuWu/r HJWpdkZWcV3wDmPcSx+AgiFUIggHI0XfdQ== X-Google-Smtp-Source: ABdhPJxzDfXgbYc/jJjEtH93nC6SK3mRSyU+AiN3e2sm4XB9KvH4cE64YC9A/9ZEKGiFnJi9nYHEIQ== X-Received: by 2002:ac8:43cf:: with SMTP id w15mr1625104qtn.55.1598965024649; Tue, 01 Sep 2020 05:57:04 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v2 6/7] spapr_numa: move NVLink2 associativity handling to spapr_numa.c Date: Tue, 1 Sep 2020 09:56:44 -0300 Message-Id: <20200901125645.118026-7-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200901125645.118026-1-danielhb413@gmail.com> References: <20200901125645.118026-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2607:f8b0:4864:20::842; envelope-from=danielhb413@gmail.com; helo=mail-qt1-x842.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Daniel Henrique Barboza , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This patch adds a new spapr_numa_write_assoc_nvlink2() helper to handle the ibm,associativity for NVLink2 GPUs. Signed-off-by: Daniel Henrique Barboza Reviewed-by: David Gibson --- hw/ppc/spapr_numa.c | 23 +++++++++++++++++++++++ hw/ppc/spapr_pci_nvlink2.c | 19 ++----------------- include/hw/ppc/spapr_numa.h | 3 +++ 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c index 9eb4bdbe80..785cc24624 100644 --- a/hw/ppc/spapr_numa.c +++ b/hw/ppc/spapr_numa.c @@ -15,6 +15,8 @@ #include "hw/ppc/spapr_numa.h" #include "hw/ppc/fdt.h" =20 +/* Moved from hw/ppc/spapr_pci_nvlink2.c */ +#define SPAPR_GPU_NUMA_ID (cpu_to_be32(1)) =20 void spapr_numa_associativity_init(MachineState *machine) { @@ -114,6 +116,27 @@ int spapr_numa_write_assoc_lookup_arrays(SpaprMachineS= tate *spapr, void *fdt, return ret; } =20 +void spapr_numa_write_assoc_nvlink2(void *fdt, int offset, int numa_id, + SpaprPhbState *sphb) +{ + uint32_t associativity[NUMA_ASSOC_SIZE]; + int i; + + associativity[0] =3D cpu_to_be32(MAX_DISTANCE_REF_POINTS); + for (i =3D 1; i < NUMA_ASSOC_SIZE; i++) { + associativity[i] =3D cpu_to_be32(numa_id); + }; + + if (sphb->pre_5_1_assoc) { + associativity[1] =3D SPAPR_GPU_NUMA_ID; + associativity[2] =3D SPAPR_GPU_NUMA_ID; + associativity[3] =3D SPAPR_GPU_NUMA_ID; + } + + _FDT((fdt_setprop(fdt, offset, "ibm,associativity", associativity, + sizeof(associativity)))); +} + /* * Helper that writes ibm,associativity-reference-points and * max-associativity-domains in the RTAS pointed by @rtas diff --git a/hw/ppc/spapr_pci_nvlink2.c b/hw/ppc/spapr_pci_nvlink2.c index 76ae77ebc8..662a0af990 100644 --- a/hw/ppc/spapr_pci_nvlink2.c +++ b/hw/ppc/spapr_pci_nvlink2.c @@ -29,6 +29,7 @@ #include "qemu/error-report.h" #include "hw/ppc/fdt.h" #include "hw/pci/pci_bridge.h" +#include "hw/ppc/spapr_numa.h" =20 #define PHANDLE_PCIDEV(phb, pdev) (0x12000000 | \ (((phb)->index) << 16) | ((pdev)->dev= fn)) @@ -37,8 +38,6 @@ #define PHANDLE_NVLINK(phb, gn, nn) (0x00130000 | (((phb)->index) << 8) |= \ ((gn) << 4) | (nn)) =20 -#define SPAPR_GPU_NUMA_ID (cpu_to_be32(1)) - typedef struct SpaprPhbPciNvGpuSlot { uint64_t tgt; uint64_t gpa; @@ -360,13 +359,6 @@ void spapr_phb_nvgpu_ram_populate_dt(SpaprPhbState *sp= hb, void *fdt) Object *nv_mrobj =3D object_property_get_link(OBJECT(nvslot->gpdev= ), "nvlink2-mr[0]", &error_abort); - uint32_t associativity[] =3D { - cpu_to_be32(0x4), - cpu_to_be32(nvslot->numa_id), - cpu_to_be32(nvslot->numa_id), - cpu_to_be32(nvslot->numa_id), - cpu_to_be32(nvslot->numa_id) - }; uint64_t size =3D object_property_get_uint(nv_mrobj, "size", NULL); uint64_t mem_reg[2] =3D { cpu_to_be64(nvslot->gpa), cpu_to_be64(si= ze) }; char *mem_name =3D g_strdup_printf("memory@%"PRIx64, nvslot->gpa); @@ -376,14 +368,7 @@ void spapr_phb_nvgpu_ram_populate_dt(SpaprPhbState *sp= hb, void *fdt) _FDT((fdt_setprop_string(fdt, off, "device_type", "memory"))); _FDT((fdt_setprop(fdt, off, "reg", mem_reg, sizeof(mem_reg)))); =20 - if (sphb->pre_5_1_assoc) { - associativity[1] =3D SPAPR_GPU_NUMA_ID; - associativity[2] =3D SPAPR_GPU_NUMA_ID; - associativity[3] =3D SPAPR_GPU_NUMA_ID; - } - - _FDT((fdt_setprop(fdt, off, "ibm,associativity", associativity, - sizeof(associativity)))); + spapr_numa_write_assoc_nvlink2(fdt, off, nvslot->numa_id, sphb); =20 _FDT((fdt_setprop_string(fdt, off, "compatible", "ibm,coherent-device-memory"))); diff --git a/include/hw/ppc/spapr_numa.h b/include/hw/ppc/spapr_numa.h index f6127501a6..b6e0721b07 100644 --- a/include/hw/ppc/spapr_numa.h +++ b/include/hw/ppc/spapr_numa.h @@ -15,6 +15,7 @@ =20 #include "hw/boards.h" #include "hw/ppc/spapr.h" +#include "hw/pci-host/spapr.h" =20 void spapr_numa_associativity_init(MachineState *machine); void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, void *fdt, int rta= s); @@ -24,6 +25,8 @@ int spapr_numa_fixup_cpu_dt(SpaprMachineState *spapr, voi= d *fdt, int offset, PowerPCCPU *cpu); int spapr_numa_write_assoc_lookup_arrays(SpaprMachineState *spapr, void *f= dt, int offset); +void spapr_numa_write_assoc_nvlink2(void *fdt, int offset, int numa_id, + SpaprPhbState *sphb); =20 =20 #endif /* HW_SPAPR_NUMA_H */ --=20 2.26.2 From nobody Sun Feb 8 09:11:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1598968531; cv=none; d=zohomail.com; s=zohoarc; b=i8rvc9Zgyuj6dgQveE1NtL1/L607IAwRnO/VWaFDZHMYDZVK1+17RZAGByRf0ajcT4C4ic2i/xVxYl0qyI3lLlWamG6+9b5pqxqn3yQVHIAuGjkTs3vzg5d9jsCzHkE+THmtbdRzZbMnAEzV55hIpwmUgleAiel8Jo3KBp0edPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598968531; 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=0Dg2hr+Km79kta4Vbo921CtoCw0M28LSvQZWr2OX06o=; b=g1PRKrRzVcT/almg2x5YkUkZOg+ucwW11XPUweMITvid5MHH5l/UO5FO2iE5dtazpKA5BZWio3ePtTvqgmaEZOKGPz8I5rmhbbWDo8R53REgW0c4DLKWTRvHs8/xrdA5HQ2lQmP6FTbDw1npy3FUT33mZF738+9w0gg/+Rc2MMc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1598968531498649.0116191859147; Tue, 1 Sep 2020 06:55:31 -0700 (PDT) Received: from localhost ([::1]:60588 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kD5yv-0006xZ-Mn for importer@patchew.org; Tue, 01 Sep 2020 09:05:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36444) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kD5qX-0001b0-Ix; Tue, 01 Sep 2020 08:57:09 -0400 Received: from mail-qt1-x843.google.com ([2607:f8b0:4864:20::843]:41835) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kD5qV-0002o4-Os; Tue, 01 Sep 2020 08:57:09 -0400 Received: by mail-qt1-x843.google.com with SMTP id t20so738474qtr.8; Tue, 01 Sep 2020 05:57:07 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:6be:f6e3:c671:cefe:b943]) by smtp.gmail.com with ESMTPSA id q7sm1430164qkf.35.2020.09.01.05.57.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 05:57:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0Dg2hr+Km79kta4Vbo921CtoCw0M28LSvQZWr2OX06o=; b=nLJ0b1JJpiYHL1Kmgp8cgZm05Jy9SjjnxYGhrYEEEG+M0IhcOgtgpHLUN/adTN4F3T XrjA3Kp3Pl0FRBWMuBgsCdli3UhvMy9E/HIRUhp22FKu9h8SstnBf9XKCJ1v5LxtDgPt Gv/5DkAPP6WpzRsYfgUrGT8I26p6OJ54c2aidYb+RPyQDvqaxpU6t2LI1/X/dlHZd40i pB9lWVl34DZADLkIh5ruylqNVCkz0mVvBRY+moEGpZcxkRpgFlIbcyzxNPALyknGk1X2 IlXATIU6vU80apcQIDBM/6rJ4CQE37PdQKVse1IrCiwK2tNRS2GmhjCgQwMIof8GPduZ NKhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0Dg2hr+Km79kta4Vbo921CtoCw0M28LSvQZWr2OX06o=; b=VZnnamAkdj7aLRzt54eT58MhWVTNFgy5Mr01uE7u29Y/aMd3u77eKVq9obtXKpuI8p 7c+V5OFOfeO5LTU5Zl8cMFjVt3+eDSf/g8oP6kX/UjzAnNN2qArZIpRpxY6US73Yf+qn ZfvOyOeEvPo9hovJFZUqh7hAXyZ+dlaG6EnA4a0mwjrulcz4G0TvvMHSr++3Xft4X9Vx iCapkhkkB1eumpfsJYBMb6ysIzGszuOL/aWttVc2OJvC2f4EtqC5WX+8021XxkcvUR6N yTG8z9bNzK3E3U2G9ee2nWAuLUxVR+hu55VZgXTlL6YVezIfWg2PfJmTci7FvE0zsdHn Ut8Q== X-Gm-Message-State: AOAM532Eo8tZDyyum84Yve0aw/2hRPts1XaiWqp0Ds/bUOA/BOY4foYz vwC3k4OyS4vuqKULBqMTryivrrzoiI501A== X-Google-Smtp-Source: ABdhPJyjHI22maHuZj4Nu78N30tCOAZbtGlbn/gbZUzB6gVQTfCMadpCg7lxIFQ0BD5kOTFMwEUK3g== X-Received: by 2002:ac8:614b:: with SMTP id d11mr1579767qtm.271.1598965026369; Tue, 01 Sep 2020 05:57:06 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v2 7/7] spapr_hcall: h_home_node_associativity now reads numa_assoc_array Date: Tue, 1 Sep 2020 09:56:45 -0300 Message-Id: <20200901125645.118026-8-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200901125645.118026-1-danielhb413@gmail.com> References: <20200901125645.118026-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2607:f8b0:4864:20::843; envelope-from=danielhb413@gmail.com; helo=mail-qt1-x843.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: Daniel Henrique Barboza , qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" home_node_associativity reply now uses the associativity values for tcpu->node_id provided by numa_assoc_array. This will avoid further changes in this code when numa_assoc_array changes values, but it won't be enough to prevent further changes if (falar aqui q se mudar o tamanho do array tem q mexer nessa funcao tambem, falar q a macro associativity() deixa a automacao de tudo mto unreadable) Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr_hcall.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index c1d01228c6..2ec30efdcb 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -1878,9 +1878,13 @@ static target_ulong h_home_node_associativity(PowerP= CCPU *cpu, target_ulong opcode, target_ulong *args) { + SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(spapr); target_ulong flags =3D args[0]; target_ulong procno =3D args[1]; PowerPCCPU *tcpu; + uint32_t assoc_domain1; + uint32_t assoc_domain2; + uint32_t assoc_domain3; int idx; =20 /* only support procno from H_REGISTER_VPA */ @@ -1893,13 +1897,21 @@ static target_ulong h_home_node_associativity(Power= PCCPU *cpu, return H_P2; } =20 + /* + * Index 0 is the ibm,associativity size of the node, + * which isn't relevant here. + */ + assoc_domain1 =3D smc->numa_assoc_array[tcpu->node_id][1]; + assoc_domain2 =3D smc->numa_assoc_array[tcpu->node_id][2]; + assoc_domain3 =3D smc->numa_assoc_array[tcpu->node_id][3]; + /* sequence is the same as in the "ibm,associativity" property */ =20 idx =3D 0; #define ASSOCIATIVITY(a, b) (((uint64_t)(a) << 32) | \ ((uint64_t)(b) & 0xffffffff)) - args[idx++] =3D ASSOCIATIVITY(0, 0); - args[idx++] =3D ASSOCIATIVITY(0, tcpu->node_id); + args[idx++] =3D ASSOCIATIVITY(assoc_domain1, assoc_domain2); + args[idx++] =3D ASSOCIATIVITY(assoc_domain3, tcpu->node_id); args[idx++] =3D ASSOCIATIVITY(procno, -1); for ( ; idx < 6; idx++) { args[idx] =3D -1; --=20 2.26.2