From nobody Tue May 7 13:14:19 2024 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=1599240329; cv=none; d=zohomail.com; s=zohoarc; b=ZeYnf0eJkinMjW9UqAugy7oSV/krOmcuMJiPtUA9F3uatAIYxOtORjGezHkQb2p8Ry0UKQUQOvD9Ns3x7fYb8lNu4Bb6agBD+LUcqMYu+b2hS1hTJHT1iyD0in2uqR6PT7iyOn51dpqlKcHvZtMCkl1tkSjA23OFe+93bitCNdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599240329; 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=Algq3dgij7WJPgSn72cXErD3mDE4VJisbpLxFJRfzcI=; b=Wc+NZ1Q/Mxcrumw/gmNyPU3yP2r7PbIbQ0QOeAnjPFGqfibWRy/V1gxJLa6etW29w3rKc0i6YYgob4ZJywGdt+epfY+am5L98G0sfs+OFqiDqgnV6fjPId4H/jo+6fVcd5BCnk3K/3JwFw4AxCEqDSNigTQKCsBNZfqMZi2DvtU= 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 1599240329391295.09958172801987; Fri, 4 Sep 2020 10:25:29 -0700 (PDT) Received: from localhost ([::1]:39530 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kEFSq-0006hS-58 for importer@patchew.org; Fri, 04 Sep 2020 13:25:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49624) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kEFS2-0005TQ-5E; Fri, 04 Sep 2020 13:24:38 -0400 Received: from mail-qk1-x730.google.com ([2607:f8b0:4864:20::730]:38681) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kEFS0-0005CM-3M; Fri, 04 Sep 2020 13:24:37 -0400 Received: by mail-qk1-x730.google.com with SMTP id d20so7028637qka.5; Fri, 04 Sep 2020 10:24:35 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c6:1dc:ffbd:d3fb:97ff:aaca]) by smtp.gmail.com with ESMTPSA id s192sm3269245qke.50.2020.09.04.10.24.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Sep 2020 10:24:33 -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=Algq3dgij7WJPgSn72cXErD3mDE4VJisbpLxFJRfzcI=; b=CVKhUqVseTU0Iqb3NsAwIYF/XySJ8esnLq5WSPJhk97FxBAS8zwp0VZzdNabN20bcy zYTeojqpvmokuCJs54Zv3vPxHWcdzz/jXuDvnqY2XyZ9GR8tLR0PGDPKjyAMBvX9SGxG 4crosf32JJWqm+YrR29NuAz+CQ1SDIuVvny0lbPcvrGncRVOvLVJ++oN+xyAasmdK/mp FScZ+fQYmAyeFzqWPwKt5TbLFKwL+ySu4XQS/PYyKbMA13eX3t7CuEyv1RguunB7cLv4 VyzDycMnZ+r24F+xYbPyQ4wbJh3wMRTiz9R6orq4n+L3pyzMi9bXkmv4KePdScITr8/n ZX4g== 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=Algq3dgij7WJPgSn72cXErD3mDE4VJisbpLxFJRfzcI=; b=maMkOv01HV+NrjKaWmsdYXGjMvc5KgD5oS1VTZeZqJOICTUHDL9oG99XvRFXIjhwU8 to/SyRgMKqmQK4MYOsoXvr6KuJPhflDskpbKdDuR9N1R/GznV5ihanTBXrr7dXvm7eKa tnspPbCIbejxQ5qMuumDYgWgXZ44QeiErW3TXFl26PrsZ8J6F0WrwPTykD78vBN9QaHP 6P1wVmTPOSP0iH9/V78plH+7YZ4IL67vuegtEGLM6wq0frlsbE70sg78S8rjelk0WIOz Y0B3rYwujn6z7uW4tVcwWy+JqZZtRW9jyRvdrOIeCznLWoPw5tU7v502Z9Dseqx4ohJ5 OgbA== X-Gm-Message-State: AOAM532OcCfhAKiGEvZ7jy+iangNvfZrmUtwtHwrtBoiFpXDPJ14zod3 qOX/fjoMAJTlPd/7As54fN56IHXz/mk= X-Google-Smtp-Source: ABdhPJz8Ul9qAb/jIRtPtjRi/S4vDLh+Vo//JS3gyK4quxCDgCiLNWdYn7xd4dzjPt4AzGeSnNZHHQ== X-Received: by 2002:a05:620a:211b:: with SMTP id l27mr8557333qkl.56.1599240274532; Fri, 04 Sep 2020 10:24:34 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v6 1/3] spapr: move h_home_node_associativity to spapr_numa.c Date: Fri, 4 Sep 2020 14:24:20 -0300 Message-Id: <20200904172422.617460-2-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200904172422.617460-1-danielhb413@gmail.com> References: <20200904172422.617460-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::730; envelope-from=danielhb413@gmail.com; helo=mail-qk1-x730.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, groug@kaod.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 implementation of this hypercall will be modified to use spapr->numa_assoc_arrays input. Moving it to spapr_numa.c makes make more sense. Reviewed-by: Greg Kurz Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr_hcall.c | 40 --------------------------------------- hw/ppc/spapr_numa.c | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index c1d01228c6..c2776b6a7d 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -1873,42 +1873,6 @@ static target_ulong h_client_architecture_support(Po= werPCCPU *cpu, return ret; } =20 -static target_ulong h_home_node_associativity(PowerPCCPU *cpu, - SpaprMachineState *spapr, - target_ulong opcode, - target_ulong *args) -{ - target_ulong flags =3D args[0]; - target_ulong procno =3D args[1]; - PowerPCCPU *tcpu; - int idx; - - /* only support procno from H_REGISTER_VPA */ - if (flags !=3D 0x1) { - return H_FUNCTION; - } - - tcpu =3D spapr_find_cpu(procno); - if (tcpu =3D=3D NULL) { - return H_P2; - } - - /* sequence is the same as in the "ibm,associativity" property */ - - 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(procno, -1); - for ( ; idx < 6; idx++) { - args[idx] =3D -1; - } -#undef ASSOCIATIVITY - - return H_SUCCESS; -} - static target_ulong h_get_cpu_characteristics(PowerPCCPU *cpu, SpaprMachineState *spapr, target_ulong opcode, @@ -2139,10 +2103,6 @@ static void hypercall_register_types(void) spapr_register_hypercall(KVMPPC_H_CAS, h_client_architecture_support); =20 spapr_register_hypercall(KVMPPC_H_UPDATE_DT, h_update_dt); - - /* Virtual Processor Home Node */ - spapr_register_hypercall(H_HOME_NODE_ASSOCIATIVITY, - h_home_node_associativity); } =20 type_init(hypercall_register_types) diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c index 93a000b729..368c1a494d 100644 --- a/hw/ppc/spapr_numa.c +++ b/hw/ppc/spapr_numa.c @@ -165,3 +165,48 @@ void spapr_numa_write_rtas_dt(SpaprMachineState *spapr= , void *fdt, int rtas) _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains", maxdomains, sizeof(maxdomains))); } + +static target_ulong h_home_node_associativity(PowerPCCPU *cpu, + SpaprMachineState *spapr, + target_ulong opcode, + target_ulong *args) +{ + target_ulong flags =3D args[0]; + target_ulong procno =3D args[1]; + PowerPCCPU *tcpu; + int idx; + + /* only support procno from H_REGISTER_VPA */ + if (flags !=3D 0x1) { + return H_FUNCTION; + } + + tcpu =3D spapr_find_cpu(procno); + if (tcpu =3D=3D NULL) { + return H_P2; + } + + /* sequence is the same as in the "ibm,associativity" property */ + + 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(procno, -1); + for ( ; idx < 6; idx++) { + args[idx] =3D -1; + } +#undef ASSOCIATIVITY + + return H_SUCCESS; +} + +static void spapr_numa_register_types(void) +{ + /* Virtual Processor Home Node */ + spapr_register_hypercall(H_HOME_NODE_ASSOCIATIVITY, + h_home_node_associativity); +} + +type_init(spapr_numa_register_types) --=20 2.26.2 From nobody Tue May 7 13:14:19 2024 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=1599240343; cv=none; d=zohomail.com; s=zohoarc; b=gj7yipLH7m6Phu8k1Tw/ns78eo2DWeVlukxX/8ZiuTcvgG+AdhJV8CkAoudS5hXk8atx0kJC0NIv/mk+x42IZiHz1xipJqMbCzR5O4qGL0rrx3hAGP0yBG0CySIeHp9t4IJR2SCECLxoZacWc+I1HKf7pu8NEjmAefQlSkhj8dA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599240343; 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=7QLFzSnvMKavTsEqY+8UYuNGsBaZ2S7VcOLmTGXn2BU=; b=RQR1y4XSDRr1jh5s7i8tWqr8vBsbL8ZBedyH+znjxPIaHja5lUOs73qjrQ3nUSkaLaU+ymRC8V0wKOX9zdLY1ZWG5uitWreF/UHnEsNwUiMk1f+7TkBOl9acqUSNfVythW3XIiB7pjTv0aIMrzCQtUX7hq2AwEojyRl4JFUFm8w= 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 1599240343524135.94588740068082; Fri, 4 Sep 2020 10:25:43 -0700 (PDT) Received: from localhost ([::1]:39856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kEFT4-0006pC-8K for importer@patchew.org; Fri, 04 Sep 2020 13:25:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kEFS4-0005Xf-DJ; Fri, 04 Sep 2020 13:24:40 -0400 Received: from mail-qk1-x741.google.com ([2607:f8b0:4864:20::741]:36321) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kEFS2-0005DD-KZ; Fri, 04 Sep 2020 13:24:40 -0400 Received: by mail-qk1-x741.google.com with SMTP id f2so7043348qkh.3; Fri, 04 Sep 2020 10:24:37 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c6:1dc:ffbd:d3fb:97ff:aaca]) by smtp.gmail.com with ESMTPSA id s192sm3269245qke.50.2020.09.04.10.24.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Sep 2020 10:24:36 -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=7QLFzSnvMKavTsEqY+8UYuNGsBaZ2S7VcOLmTGXn2BU=; b=DF5QkE/GtDfzJLu8985VzRA+Swl8+PsODQPxNXzOqvYOYr9xn+RYfS9B/mR83rf0bf 7vHAlYsig7RTqwBlAv/Dxc/KoIehiVCYIg4ziaEGISst3TjeYhq7jvPEfIxe2c2v6E75 Cnb+8Nn9Chi00g5zgHzAoju5we45J+BX7tFOFC2RYsuLMVsm+71PW1Jh5rwtzOeyMwq/ yJicaTCMVAYSc+WCFjCQnf5rT+vUBEim7yc4MTW++627pRIeVtevGUHLcatZfCGleFBD Q73IYMhKx1JZC64LBlan7dMgVFOV1ZAV+tTFKF9tBVelzxlD9kxdUyvzmMGRmA68N/xO zdOA== 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=7QLFzSnvMKavTsEqY+8UYuNGsBaZ2S7VcOLmTGXn2BU=; b=CS21tITIJfGtxnh1ffAC0231++wMinAAlNE85KLe4R7Ekje69I6W3VnztLXXpygID6 4Oh01IDUwFlsRtk9v9yPT4jXqQM331h4AIPQZLIvBpIJ/ktwmhrYkD3UPrIAdAETDndq lHcse6YbE6WHGTPr0XfdJCtswlMvadOBFInH2fumQMuIrvUQJ1MIOGjjhjd3nLC6h1oa 0QuMtx0Z1W6w+DXG+93s9OMyQZTUxLIMqUe2EUNbgSNkg0lGbaoFDd8ZakGwg/cAUDUv lNCjysiYpXIxInX/cuhUOJ+8/xyG8xFGkb13XoVvAEQQcD9LNRGI26UliwP5lKHrdHOZ 8ixg== X-Gm-Message-State: AOAM533TWSLJjgytnveeadZhZIl4pqpvLzdwhQ0g7YTQ+jCw9RJFdANf Sz3/iQvlSXBvrf0i1u7OY6TTuCNTuy8= X-Google-Smtp-Source: ABdhPJw+2wPT5mzC1MjLnzj/lHPnm7e8BMXsWTJ9GaMJJ8hBANNGUqTY1KvOoqOC38YAs2ZAXLG/Ew== X-Received: by 2002:a37:9e81:: with SMTP id h123mr8257861qke.117.1599240277194; Fri, 04 Sep 2020 10:24:37 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v6 2/3] spapr_numa: create a vcpu associativity helper Date: Fri, 4 Sep 2020 14:24:21 -0300 Message-Id: <20200904172422.617460-3-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200904172422.617460-1-danielhb413@gmail.com> References: <20200904172422.617460-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, groug@kaod.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 work to be done in h_home_node_associativity() intersects with what is already done in spapr_numa_fixup_cpu_dt(). This patch creates a new helper, spapr_numa_get_vcpu_assoc(), to be used for both spapr_numa_fixup_cpu_dt() and h_home_node_associativity(). While we're at it, use memcpy() instead of loop assignment to created the returned array. Reviewed-by: Greg Kurz Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr_numa.c | 31 ++++++++++++++++++------------- include/hw/ppc/spapr.h | 7 ++++++- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c index 368c1a494d..066ffc2a5f 100644 --- a/hw/ppc/spapr_numa.c +++ b/hw/ppc/spapr_numa.c @@ -71,31 +71,36 @@ void spapr_numa_write_associativity_dt(SpaprMachineStat= e *spapr, void *fdt, sizeof(spapr->numa_assoc_array[nodeid])))); } =20 -int spapr_numa_fixup_cpu_dt(SpaprMachineState *spapr, void *fdt, - int offset, PowerPCCPU *cpu) +static uint32_t *spapr_numa_get_vcpu_assoc(SpaprMachineState *spapr, + PowerPCCPU *cpu) { - uint vcpu_assoc_size =3D NUMA_ASSOC_SIZE + 1; - uint32_t vcpu_assoc[vcpu_assoc_size]; + uint32_t *vcpu_assoc =3D g_new(uint32_t, VCPU_ASSOC_SIZE); int index =3D spapr_get_vcpu_id(cpu); - int i; =20 /* * 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. + * 0, put cpu_id last, then copy the remaining associativity + * domains. */ vcpu_assoc[0] =3D cpu_to_be32(MAX_DISTANCE_REF_POINTS + 1); + vcpu_assoc[VCPU_ASSOC_SIZE - 1] =3D cpu_to_be32(index); + memcpy(vcpu_assoc + 1, spapr->numa_assoc_array[cpu->node_id] + 1, + (VCPU_ASSOC_SIZE - 2) * sizeof(uint32_t)); =20 - for (i =3D 1; i <=3D MAX_DISTANCE_REF_POINTS; i++) { - vcpu_assoc[i] =3D spapr->numa_assoc_array[cpu->node_id][i]; - } + return vcpu_assoc; +} + +int spapr_numa_fixup_cpu_dt(SpaprMachineState *spapr, void *fdt, + int offset, PowerPCCPU *cpu) +{ + g_autofree uint32_t *vcpu_assoc =3D NULL; =20 - vcpu_assoc[vcpu_assoc_size - 1] =3D cpu_to_be32(index); + vcpu_assoc =3D spapr_numa_get_vcpu_assoc(spapr, cpu); =20 /* Advertise NUMA via ibm,associativity */ - return fdt_setprop(fdt, offset, "ibm,associativity", - vcpu_assoc, sizeof(vcpu_assoc)); + return fdt_setprop(fdt, offset, "ibm,associativity", vcpu_assoc, + VCPU_ASSOC_SIZE * sizeof(uint32_t)); } =20 =20 diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 9a63380801..e50a2672e3 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -107,13 +107,18 @@ typedef enum { =20 /* * NUMA related macros. MAX_DISTANCE_REF_POINTS was taken - * from Taken from Linux kernel arch/powerpc/mm/numa.h. + * from Linux kernel arch/powerpc/mm/numa.h. It represents the + * amount of associativity domains for non-CPU resources. * * NUMA_ASSOC_SIZE is the base array size of an ibm,associativity * array for any non-CPU resource. + * + * VCPU_ASSOC_SIZE represents the size of ibm,associativity array + * for CPUs, which has an extra element (vcpu_id) in the end. */ #define MAX_DISTANCE_REF_POINTS 4 #define NUMA_ASSOC_SIZE (MAX_DISTANCE_REF_POINTS + 1) +#define VCPU_ASSOC_SIZE (NUMA_ASSOC_SIZE + 1) =20 typedef struct SpaprCapabilities SpaprCapabilities; struct SpaprCapabilities { --=20 2.26.2 From nobody Tue May 7 13:14:19 2024 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=1599240416; cv=none; d=zohomail.com; s=zohoarc; b=iOYepNvyADAu+Ov3hu5dAxI2F1bZNEWvVDpKi0B3mWp7HviV3F6IF3LxgjIcd0OgNTKt09BWYCYILqmnnla83ubg00h1tqngkDE5KAdIBCut4ubwyPhmjmxiX9cKe9cOddlcpC8yJ+2/l6Jseziel1ciM7uE6bQdnhOTa1nxU5o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599240416; 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=0g5HndXT5oEGs5Ygz3OSEu/DbagArUsuah/DY8mAiyY=; b=iS9Atd8FqzmHPERotVBfxb0XWPQmyU7lyDAwOhWmAlyAmwTiHT1FX6thRpB0haQB2TeUg8kpLfYyeaXILDGpkwtSsCjY0k0upVRT2JlefegCy2K805iilQwvYfLGEloVqBKOEPFEn3lGLAxxn+A4b2rwVkdMnbuDR7rYp2ZYYIU= 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 1599240416488256.4952745891061; Fri, 4 Sep 2020 10:26:56 -0700 (PDT) Received: from localhost ([::1]:44810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kEFUF-0000Zi-6D for importer@patchew.org; Fri, 04 Sep 2020 13:26:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49650) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kEFS6-0005b7-3C; Fri, 04 Sep 2020 13:24:42 -0400 Received: from mail-qk1-x741.google.com ([2607:f8b0:4864:20::741]:37996) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kEFS4-0005DS-ES; Fri, 04 Sep 2020 13:24:41 -0400 Received: by mail-qk1-x741.google.com with SMTP id d20so7028863qka.5; Fri, 04 Sep 2020 10:24:39 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c6:1dc:ffbd:d3fb:97ff:aaca]) by smtp.gmail.com with ESMTPSA id s192sm3269245qke.50.2020.09.04.10.24.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Sep 2020 10:24:38 -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=0g5HndXT5oEGs5Ygz3OSEu/DbagArUsuah/DY8mAiyY=; b=GV1U1serhQmMQIFq8wEvfrQENTAfNaDN/bEX8F0F0BlVvN5zqtyiEIWWF0WCFcFmJi r76dXEDN2lVZUz5mE6AUPj7pDNdI8oEbivJ3Lfvma//NUDRPHLZsiRiFJqfGEPUXoKHU fD9mKhiceYVf1j4nZ3znyGYpYO2xhPv0weGBJpkBY2rKf4xUW7BWZAG0OgpisrzyXZ+J VV6carV1Xcboa3LsCOZ043Lwc1YMIWjJUTbGK96S5HCxFVlOgjpz/uGgXhgdr5ocdJ32 mHY9kJP6GCqQWzHwxt3Wfe9w2eB5v7NFGd57rzMTKPd8nArmNeIc+6VxPFjd8v6ixIwd qjHg== 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=0g5HndXT5oEGs5Ygz3OSEu/DbagArUsuah/DY8mAiyY=; b=preONPYP1156QNSwqMiYuYB5w4o12HkfVNpkqigr12qi97jpV9UgsK0nmkapCr9vRI 1G8u9aLd0FW5PKwUV27Aoj2ruMVg+iEQkZOi17ofrtkDsNN4BC16Cr+CzKJ8oPe3yY8H MlQ8k34urmPZQBFU8aTzkNi7ZzpChDgq485bjAIZe6ztOzmvh77kx5iSEzqKOmwELv2t hQp0zxjbRbThUBfrTwCHMornlkNEgZbj85CgdIeR3E9rzUmW+m8PTl91Q0/IUTPn1Zvd 63BaslfwaIO9MBSED5+hm5UoZrsX6J8qd3O5IYlnkQIaCuSixk1O2tn3I6dxTCX6O1MP a3vQ== X-Gm-Message-State: AOAM531w1vwjRMQQm/lGuIgEZesq7xBPnjqb4kV767IWjFWwz90Jo+bI fFgkHnLQ/YAQKtuebIUtWY7xvYDxSHM= X-Google-Smtp-Source: ABdhPJxJps5zoqVf3On6bicrfXiLJpP60DhVjRfdwAGppRgCnMUwcACxp+VtVVrMSOWBYP+d6fzeRA== X-Received: by 2002:a37:6441:: with SMTP id y62mr2472519qkb.144.1599240279022; Fri, 04 Sep 2020 10:24:39 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v6 3/3] spapr_numa: use spapr_numa_get_vcpu_assoc() in home_node hcall Date: Fri, 4 Sep 2020 14:24:22 -0300 Message-Id: <20200904172422.617460-4-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200904172422.617460-1-danielhb413@gmail.com> References: <20200904172422.617460-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, groug@kaod.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 current implementation of h_home_node_associativity hard codes the values of associativity domains of the vcpus. Let's make it consider the values already initialized in spapr->numa_assoc_array, via the spapr_numa_get_vcpu_assoc() helper. We want to set it and forget it, and for that we also need to assert that we don't overflow the registers of the hypercall. From R4 to R9 we can squeeze in 12 associativity domains for vcpus, so let's assert that VCPU_ASSOC_SIZE -1 isn't greater than that. Reviewed-by: Greg Kurz Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr_numa.c | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c index 066ffc2a5f..64fe567f5d 100644 --- a/hw/ppc/spapr_numa.c +++ b/hw/ppc/spapr_numa.c @@ -176,10 +176,11 @@ static target_ulong h_home_node_associativity(PowerPC= CPU *cpu, target_ulong opcode, target_ulong *args) { + g_autofree uint32_t *vcpu_assoc =3D NULL; target_ulong flags =3D args[0]; target_ulong procno =3D args[1]; PowerPCCPU *tcpu; - int idx; + int idx, assoc_idx; =20 /* only support procno from H_REGISTER_VPA */ if (flags !=3D 0x1) { @@ -191,16 +192,40 @@ static target_ulong h_home_node_associativity(PowerPC= CPU *cpu, return H_P2; } =20 - /* sequence is the same as in the "ibm,associativity" property */ + /* + * Given that we want to be flexible with the sizes and indexes, + * we must consider that there is a hard limit of how many + * associativities domain we can fit in R4 up to R9, which would be + * 12 associativity domains for vcpus. Assert and bail if that's + * not the case. + */ + G_STATIC_ASSERT((VCPU_ASSOC_SIZE - 1) <=3D 12); + + vcpu_assoc =3D spapr_numa_get_vcpu_assoc(spapr, tcpu); + /* assoc_idx starts at 1 to skip associativity size */ + assoc_idx =3D 1; =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(procno, -1); - for ( ; idx < 6; idx++) { - args[idx] =3D -1; + + for (idx =3D 0; idx < 6; idx++) { + int32_t a, b; + + /* + * vcpu_assoc[] will contain the associativity domains for tcpu, + * including tcpu->node_id and procno, meaning that we don't + * need to use these variables here. + * + * We'll read 2 values at a time to fill up the ASSOCIATIVITY() + * macro. The ternary will fill the remaining registers with -1 + * after we went through vcpu_assoc[]. + */ + a =3D assoc_idx < VCPU_ASSOC_SIZE ? + be32_to_cpu(vcpu_assoc[assoc_idx++]) : -1; + b =3D assoc_idx < VCPU_ASSOC_SIZE ? + be32_to_cpu(vcpu_assoc[assoc_idx++]) : -1; + + args[idx] =3D ASSOCIATIVITY(a, b); } #undef ASSOCIATIVITY =20 --=20 2.26.2