From patchwork Wed Jan 20 23:23:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12033849 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2812C433E0 for ; Wed, 20 Jan 2021 23:24:28 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1897C206DB for ; Wed, 20 Jan 2021 23:24:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1897C206DB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:58100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l2Mpv-0001sq-4k for qemu-devel@archiver.kernel.org; Wed, 20 Jan 2021 18:24:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35908) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l2Mor-0000Ou-3i; Wed, 20 Jan 2021 18:23:21 -0500 Received: from mail-qk1-x733.google.com ([2607:f8b0:4864:20::733]:45205) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l2Mop-0005kQ-FZ; Wed, 20 Jan 2021 18:23:20 -0500 Received: by mail-qk1-x733.google.com with SMTP id b64so27110840qkc.12; Wed, 20 Jan 2021 15:23:18 -0800 (PST) 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=Hg71OBcLzDNQS/O/QSEJZoTF7ksGsyQQlX4bvjHlEns=; b=ivp02S9ZrawMM455lDGw28X3iX4rbwcVR2X+XlyRlSU1O7SuVjDUfGM3FtoYxZQ7zL z9BZscyZzPX2/6yN/mSzjvINXPwCRCNz224swszhbXx2In+PaNF80ogDRaVFl8FbjCXL 1peZ8jnYnCePnARl5LY/QpUkQa53Lg6gIZ2DhTN6OijZIJtG91vOk4ybTY9rxUS/9vD4 ETg2wqkjtAEVdP7RMZDXjHWADjPKmGr3KHZxWHD+Yui/6Khc0HDCl9LIOiE4Tc3OPpvA 3klXkkBTRRkc/Mr5Oen7/fWIihjD0CoaAtRJNSvO5tlaQ/WWlS0vORpCD3WXp4l5eYSf IF0w== 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=Hg71OBcLzDNQS/O/QSEJZoTF7ksGsyQQlX4bvjHlEns=; b=TWNRKgW6TPlhxLk5qoK3l08WJ4MmiV5mUY+3brqW8FZhATZKvo9oFuU94hQPPBc2RQ c7KI3w7TS98dCvW0gBxDQjH9U7bY95WoRnKdP0Yaz/bec8eSxpaa4npnlSbcFt7K0Vs1 m9HYk/NHg1AU+9Fz61MdM2LiHuV7LhRp/0ryW53wdbR5o4evtoGkTKRVhqO6TXisA+Qd EywFt/GikDrI5+yH/Ze19i1zSxByg4QgHS4KnoPXukxZYK4WbAzujR6Dsf6QAan95iRi COrbsa0LoHug4ZLnIGPRL0JB1ikf1jhD2+JGKcMpKxhLowMbHQ6CorDRmTfAWJD8u4vf 9eXA== X-Gm-Message-State: AOAM532YNdEo5nqmIUaf90sEq2z74LV4pu+pSuoRA0rk/0Gh1Top3eBF Y6Sl+dhve71nBn6OvnvMgne+XJtddjs= X-Google-Smtp-Source: ABdhPJyiTuSsTOlj2eC/EIKlBTwjTctJTVDEFXaiwjwhaJjhhXH6LInlz4Q/z/WB2zgLNkuRZekI1Q== X-Received: by 2002:ae9:c107:: with SMTP id z7mr12199954qki.160.1611184998124; Wed, 20 Jan 2021 15:23:18 -0800 (PST) Received: from rekt.ibmuc.com ([2804:431:c7c7:a75a:cb34:ba60:6de6:be1d]) by smtp.gmail.com with ESMTPSA id b6sm2452548qkc.128.2021.01.20.15.23.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Jan 2021 15:23:17 -0800 (PST) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v1 1/2] spapr.c: use g_auto* with 'nodename' in CPU DT functions Date: Wed, 20 Jan 2021 20:23:04 -0300 Message-Id: <20210120232305.241521-2-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210120232305.241521-1-danielhb413@gmail.com> References: <20210120232305.241521-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::733; envelope-from=danielhb413@gmail.com; helo=mail-qk1-x733.google.com 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Next patch will use the 'nodename' string in spapr_core_dt_populate() after the point it's being freed today. Instead of moving 'g_free(nodename)' around, let's do a QoL change in both CPU DT functions where 'nodename' is being freed, and use g_autofree to avoid the 'g_free()' call altogether. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 6c47466fc2..cc1b709615 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -790,7 +790,6 @@ static void spapr_dt_cpus(void *fdt, SpaprMachineState *spapr) CPUState *cs; int n_cpus; int cpus_offset; - char *nodename; int i; cpus_offset = fdt_add_subnode(fdt, 0, "cpus"); @@ -818,6 +817,7 @@ static void spapr_dt_cpus(void *fdt, SpaprMachineState *spapr) PowerPCCPU *cpu = POWERPC_CPU(cs); int index = spapr_get_vcpu_id(cpu); DeviceClass *dc = DEVICE_GET_CLASS(cs); + g_autofree char *nodename = NULL; int offset; if (!spapr_is_thread0_in_vcore(spapr, cpu)) { @@ -826,7 +826,6 @@ static void spapr_dt_cpus(void *fdt, SpaprMachineState *spapr) nodename = g_strdup_printf("%s@%x", dc->fw_name, index); offset = fdt_add_subnode(fdt, cpus_offset, nodename); - g_free(nodename); _FDT(offset); spapr_dt_cpu(cs, fdt, offset, spapr); } @@ -3743,12 +3742,11 @@ int spapr_core_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, PowerPCCPU *cpu = POWERPC_CPU(cs); DeviceClass *dc = DEVICE_GET_CLASS(cs); int id = spapr_get_vcpu_id(cpu); - char *nodename; + g_autofree char *nodename = NULL; int offset; nodename = g_strdup_printf("%s@%x", dc->fw_name, id); offset = fdt_add_subnode(fdt, 0, nodename); - g_free(nodename); spapr_dt_cpu(cs, fdt, offset, spapr); From patchwork Wed Jan 20 23:23:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12033851 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E43CEC433DB for ; Wed, 20 Jan 2021 23:24:37 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6E6E3206DB for ; Wed, 20 Jan 2021 23:24:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6E6E3206DB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:59206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l2Mq4-0002KW-E1 for qemu-devel@archiver.kernel.org; Wed, 20 Jan 2021 18:24:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35934) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l2Mot-0000Sa-Ai; Wed, 20 Jan 2021 18:23:23 -0500 Received: from mail-qk1-x733.google.com ([2607:f8b0:4864:20::733]:34672) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l2Mor-0005lq-L8; Wed, 20 Jan 2021 18:23:23 -0500 Received: by mail-qk1-x733.google.com with SMTP id c7so41694qke.1; Wed, 20 Jan 2021 15:23:21 -0800 (PST) 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=A7k81pRYm8dCii8PpC3Wn/CKvV0/bga39X496uiCIQc=; b=tbxmaY/lay2egugIfIGSjZ76gMA93N7MyJhucdPGamuvtSS9xAJ30TYrj0zg2erYos pvt7mXGc+uekdC2hhSo4/YFIIYuhoL1a5ElvTao6zrMNcD/JmEf4KHJ+c03kqTaSkjy8 OtDVZY9MrbfLktIZe0Cw3YfQIzhOhLmM1ZhbCLt+5pDoIBJ+BRSvLorC4Hkp/0FbTM+d /dRGj7hLPOyu7jGDnlTByBDXyVLBJRsQJ1HWrrkWEVyDZZpQD7/Sz0NZG+QnWh6hASH+ XCmgg9WGhhI8LQQjVo+pC5uHr1WE8aCf/Mhn4IFsQyCaCLYWzdeJOiecGSuCzr5+Rs+M OT6A== 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=A7k81pRYm8dCii8PpC3Wn/CKvV0/bga39X496uiCIQc=; b=ONnV4d8VFDUW2QS+LHXAtjDCVIHAM4zF1U8wjoZe/WdJ618gFapqXZ2w9AkLOY/itd L6zHIyUUFnBGs0iKezb8oTsgl++Z9MjLPmChMmjzc1HywpMsZhfytwOmOUtakokZNKsi KnlOosW14Uk0jv5SMtfzfPxOVvnncMOgtvy9cSRfJB2f7LT4BBXwlBzJrocRIpA/bR1D VJU77PodQ+7zFwhUysF3qVKp9ccpUq8LoO8MScFmxYpeTYdY3obMjCR4SlIhfKnAshM0 rnkf8SvIQPuO3BKR5QPp/UomP6/lqW0WIteRS6a1uX46GJ/DS0Qf98peLAmmRSFNt/rk 3u+g== X-Gm-Message-State: AOAM532QC9qv3DjjpZ+3zrz6nI/QVITXP9fK/tYiPpeOkTI8FcB7qu6N eIHHT0rxdBJYpiOgns0AwCT4CKlWvtM= X-Google-Smtp-Source: ABdhPJx73d21WB6uWcQWMaX2S3KJo4ta3+h1kdYcJnrGObCw+FhAm6WedPKY/LPejlV77lVkk9uC8A== X-Received: by 2002:a37:a312:: with SMTP id m18mr12055964qke.268.1611184999959; Wed, 20 Jan 2021 15:23:19 -0800 (PST) Received: from rekt.ibmuc.com ([2804:431:c7c7:a75a:cb34:ba60:6de6:be1d]) by smtp.gmail.com with ESMTPSA id b6sm2452548qkc.128.2021.01.20.15.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Jan 2021 15:23:19 -0800 (PST) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Subject: [PATCH v1 2/2] spapr.c: add 'name' property for hotplugged CPUs nodes Date: Wed, 20 Jan 2021 20:23:05 -0300 Message-Id: <20210120232305.241521-3-danielhb413@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210120232305.241521-1-danielhb413@gmail.com> References: <20210120232305.241521-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::733; envelope-from=danielhb413@gmail.com; helo=mail-qk1-x733.google.com 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" In the CPU hotunplug bug [1] the guest kernel throws a scary message in dmesg: pseries-hotplug-cpu: Failed to offline CPU , rc: -16 The reason isn't related to the bug though. This happens because the kernel file arch/powerpc/platform/pseries/hotplug-cpu.c, function dlpar_cpu_remove(), is not finding the device_node.name of the offending CPU. We're not populating the 'name' property for hotplugged CPUs. Since the kernel relies on device_node.name for identifying CPU nodes, and the CPUs that are coldplugged has the 'name' property filled by SLOF, this is creating an unneeded inconsistency between hotplug and coldplug CPUs in the kernel. Let's fill the 'name' property for hotplugged CPUs as well. This will make the guest dmesg throws a less intimidating message when we try to unplug the last online CPU: pseries-hotplug-cpu: Failed to offline CPU PowerPC,POWER9@1, rc: -16 [1] https://bugzilla.redhat.com/1911414 Signed-off-by: Daniel Henrique Barboza --- hw/ppc/spapr.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index cc1b709615..6ab27ea269 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3750,6 +3750,19 @@ int spapr_core_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, spapr_dt_cpu(cs, fdt, offset, spapr); + /* + * spapr_dt_cpu() does not fill the 'name' property in the + * CPU node. The function is called during boot process, before + * and after CAS, and overwriting the 'name' property written + * by SLOF is not allowed. + * + * Write it manually after spapr_dt_cpu(). This makes the hotplug + * CPUs more compatible with the coldplugged ones, which have + * the 'name' property. Linux Kernel also relies on this + * property to identify CPU nodes. + */ + _FDT((fdt_setprop_string(fdt, offset, "name", nodename))); + *fdt_start_offset = offset; return 0; }