From patchwork Tue Mar 5 06:44:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908034 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmPz5zK3z23fC for ; Tue, 5 Mar 2024 17:49:27 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhOc0-0002Gg-J3; Tue, 05 Mar 2024 06:49:16 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZj-0000zd-DS for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:46:55 +0000 Received: from mail-lj1-f198.google.com (mail-lj1-f198.google.com [209.85.208.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id A9F013F0F8 for ; Tue, 5 Mar 2024 06:46:54 +0000 (UTC) Received: by mail-lj1-f198.google.com with SMTP id 38308e7fff4ca-2d30e16be75so44674221fa.1 for ; Mon, 04 Mar 2024 22:46:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621214; x=1710226014; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2qr84TipWjGyg37slkE36vqlWuVsLblzKf4/XnpwFuc=; b=dtZ6PY2dbtyFRaIrrS87Pc6SHn2WzESWMfoktyECbsnRnG76sYR9JA7+vxgGu9JhB1 Q3jum/pVe7ESp0Mk2+fNfQz2eo1meuCURrGE7YOAQWzB7uN1QN11RNithXRlIe+tNhSw nLZpNUjqPLOboOfi480jJ9DvoGVVXvxyQ2BIkQnGNfaE7B5OhB1B9o9YBy4ryORl0338 OZOuJ8zgFMNzUdx5d3mcqAZiqreBPv38NyaT+J7xAp+4rksmloUMMTmj3s4EKoJAhfqC aPNaTjYMjXib1o+Dhxw7gyKXTmojq0gaXoIoCCqZhsGzq915UY3iWJ+vwA7gkB9u0QSh Qm4Q== X-Gm-Message-State: AOJu0YxCfwQiYvLYLjJgFXulcrcSVE3trRUFhJXJnoylXOZm3qf+B5D3 KVblXkNNIyfUwesLZ/njZJB/9fziFPlf5nN3jGa3WPghPyoS7CMtWYVfPjHWE8gokvUcth7O/qR 6tyNkiPqiaG2CWbHTeu572gG7JEG5n6jBwpSRjTY8WbYTM6VkB0LGRjcAI6cE1NrGmrCHW6wgSi iivPn+UPsmlg== X-Received: by 2002:a2e:96ca:0:b0:2d2:a3bc:b7d8 with SMTP id d10-20020a2e96ca000000b002d2a3bcb7d8mr659774ljj.20.1709621214144; Mon, 04 Mar 2024 22:46:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IHP1UVVKWbeVJqyrTm911wlPnKVpBJZmk2SoQc9L/O/4bAT1BWVEQzyHBwNbdtCeWrYY47/2w== X-Received: by 2002:a2e:96ca:0:b0:2d2:a3bc:b7d8 with SMTP id d10-20020a2e96ca000000b002d2a3bcb7d8mr659769ljj.20.1709621213915; Mon, 04 Mar 2024 22:46:53 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:53 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 1/8] hwmon: (coretemp) Introduce enum for attr index Date: Tue, 5 Mar 2024 07:44:05 +0100 Message-ID: <20240305064644.251754-2-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 Introduce enum coretemp_attr_index to better describe the index of each sensor attribute. No functional change. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-5-rui.zhang@intel.com Signed-off-by: Guenter Roeck (cherry picked from commit c8c2074020a878ca6c6106a2cf224b536247e11a linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index b8fc8d1ef20d..32f99cf6308b 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -43,10 +43,18 @@ MODULE_PARM_DESC(tjmax, "TjMax value in degrees Celsius"); #define BASE_SYSFS_ATTR_NO 2 /* Sysfs Base attr no for coretemp */ #define NUM_REAL_CORES 512 /* Number of Real cores per cpu */ #define CORETEMP_NAME_LENGTH 28 /* String Length of attrs */ -#define MAX_CORE_ATTRS 4 /* Maximum no of basic attrs */ -#define TOTAL_ATTRS (MAX_CORE_ATTRS + 1) #define MAX_CORE_DATA (NUM_REAL_CORES + BASE_SYSFS_ATTR_NO) +enum coretemp_attr_index { + ATTR_LABEL, + ATTR_CRIT_ALARM, + ATTR_TEMP, + ATTR_TJMAX, + ATTR_TTARGET, + MAX_CORE_ATTRS = ATTR_TJMAX + 1, /* Maximum no of basic attrs */ + TOTAL_ATTRS = ATTR_TTARGET + 1 /* Maximum no of possible attrs */ +}; + #ifdef CONFIG_SMP #define for_each_sibling(i, cpu) \ for_each_cpu(i, topology_sibling_cpumask(cpu)) From patchwork Tue Mar 5 06:44:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908026 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmMj5jM6z23fC for ; Tue, 5 Mar 2024 17:47:28 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhOZx-00012i-0R; Tue, 05 Mar 2024 06:47:09 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZj-0000zf-Kw for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:46:55 +0000 Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 76EB13F627 for ; Tue, 5 Mar 2024 06:46:55 +0000 (UTC) Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-567002485e2so2363891a12.1 for ; Mon, 04 Mar 2024 22:46:55 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621215; x=1710226015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=f8EKegwZXuIV4tq/fR1Mz9VaUvvRNg0pkefkPKKKi0s=; b=dLZM4heEqBqd/VfrIELQdVzMDtXwNgmlftwVZtFCaJu9cDYzIkGfFKuul9qAP1bzup 46Lo+sCBvzmRnKUZtKjWqo3seYBHXyIe8i+VJIcFLV9GN9PiOeE0u7YW3kmzvF9S2SY8 DtDlOt7bhqp3ILKtEz3fnXFiT672woKTL5N739lISu+1keabqBl2Xgwg7+3Dp0Ak6OxC fCwQConYaaUK7x4kJmW7SwNvcutAPnEV+mxknJ6VbhH1nzaMkjWjpgBgkEAgzg0eG1bs OUzVPqgJ+Z4aSbl7BF0BGSZsdPF7EjZkAlODysM46qbIXXxKJPzp097FQDQFW2Z/W+rc GZkw== X-Gm-Message-State: AOJu0YzwcOFOp7xjv55DK+GNjwVMrT8mv3tIyhD2hRGiMTWzNzVTqz99 WhXHQXBXu5bqBCeqavlxTJcmPUpJCbkOIEuczDQOhYnBP7YgVmy8amfx5fmeMRPBh9rSoiT+XSJ fdzuOFGyjxpT1s3sCbYuLdwz7ve3DOPO/LcWhkrCXZdsXDMW48RNgzTXroE6yOaZi3B3GtG7byk U56kK5XMIjzg== X-Received: by 2002:a50:8d8d:0:b0:566:ef9:a499 with SMTP id r13-20020a508d8d000000b005660ef9a499mr6900115edh.1.1709621215202; Mon, 04 Mar 2024 22:46:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IFsEQ63qBNQLVGFm5GxlfpIU15QsnP5k4Jwq4vz4+3xknR3jZIuPwTTO0XHFdjBw/A/4Q3I3A== X-Received: by 2002:a50:8d8d:0:b0:566:ef9:a499 with SMTP id r13-20020a508d8d000000b005660ef9a499mr6900103edh.1.1709621214746; Mon, 04 Mar 2024 22:46:54 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:54 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 2/8] hwmon: (coretemp) Remove unnecessary dependency of array index Date: Tue, 5 Mar 2024 07:44:06 +0100 Message-ID: <20240305064644.251754-3-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 When sensor_device_attribute pointer is available, use container_of() to get the temp_data address. This removes the unnecessary dependency of cached index in pdata->core_data[]. No functional change. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-6-rui.zhang@intel.com Signed-off-by: Guenter Roeck (cherry picked from commit 25f8e01baa05dfeb1b477112b1fec94f768f27b4 linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 32f99cf6308b..9a7bfc046c72 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -342,7 +342,7 @@ static ssize_t show_label(struct device *dev, { struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); struct platform_data *pdata = dev_get_drvdata(dev); - struct temp_data *tdata = pdata->core_data[attr->index]; + struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_LABEL]); if (tdata->is_pkg_data) return sprintf(buf, "Package id %u\n", pdata->pkg_id); @@ -355,8 +355,7 @@ static ssize_t show_crit_alarm(struct device *dev, { u32 eax, edx; struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct platform_data *pdata = dev_get_drvdata(dev); - struct temp_data *tdata = pdata->core_data[attr->index]; + struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_CRIT_ALARM]); mutex_lock(&tdata->update_lock); rdmsr_on_cpu(tdata->cpu, tdata->status_reg, &eax, &edx); @@ -369,8 +368,7 @@ static ssize_t show_tjmax(struct device *dev, struct device_attribute *devattr, char *buf) { struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct platform_data *pdata = dev_get_drvdata(dev); - struct temp_data *tdata = pdata->core_data[attr->index]; + struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_TJMAX]); int tjmax; mutex_lock(&tdata->update_lock); @@ -384,8 +382,7 @@ static ssize_t show_ttarget(struct device *dev, struct device_attribute *devattr, char *buf) { struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct platform_data *pdata = dev_get_drvdata(dev); - struct temp_data *tdata = pdata->core_data[attr->index]; + struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_TTARGET]); int ttarget; mutex_lock(&tdata->update_lock); @@ -402,8 +399,7 @@ static ssize_t show_temp(struct device *dev, { u32 eax, edx; struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct platform_data *pdata = dev_get_drvdata(dev); - struct temp_data *tdata = pdata->core_data[attr->index]; + struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_TEMP]); int tjmax; mutex_lock(&tdata->update_lock); @@ -426,8 +422,7 @@ static ssize_t show_temp(struct device *dev, return sprintf(buf, "%d\n", tdata->temp); } -static int create_core_attrs(struct temp_data *tdata, struct device *dev, - int index) +static int create_core_attrs(struct temp_data *tdata, struct device *dev) { int i; static ssize_t (*const rd_ptr[TOTAL_ATTRS]) (struct device *dev, @@ -452,7 +447,6 @@ static int create_core_attrs(struct temp_data *tdata, struct device *dev, tdata->sd_attrs[i].dev_attr.attr.name = tdata->attr_name[i]; tdata->sd_attrs[i].dev_attr.attr.mode = 0444; tdata->sd_attrs[i].dev_attr.show = rd_ptr[i]; - tdata->sd_attrs[i].index = index; tdata->attrs[i] = &tdata->sd_attrs[i].dev_attr.attr; } tdata->attr_group.attrs = tdata->attrs; @@ -557,7 +551,7 @@ static int create_core_data(struct platform_device *pdev, unsigned int cpu, pdata->core_data[index] = tdata; /* Create sysfs interfaces */ - err = create_core_attrs(tdata, pdata->hwmon_dev, index); + err = create_core_attrs(tdata, pdata->hwmon_dev); if (err) goto exit_free; From patchwork Tue Mar 5 06:44:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908028 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmN03YpTz23fC for ; Tue, 5 Mar 2024 17:47:44 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhOaB-00014v-27; Tue, 05 Mar 2024 06:47:25 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZk-0000zs-Gq for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:46:56 +0000 Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 4B4003F0F8 for ; Tue, 5 Mar 2024 06:46:56 +0000 (UTC) Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-564fec337b1so6452284a12.0 for ; Mon, 04 Mar 2024 22:46:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621216; x=1710226016; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H9eun/oB+YjBEcEzHqRW2xReeH8h2imZTT7OVUHvGSY=; b=AmtF/i05ZS0RkkErV0sqPoCTtFt5GiN+RTGzUYNZOsvdqZnnqDmFEua748psuqtBEt tMRq4GkmMXh5umKklqd/aQv9sJ9UBjZ1j83ppD36ZXQGQU9CiM0qYZUTOwT8pHRwibVI koKhR97GR4rif0Ol/ENseq6diMuazWjRtERpyPKcrQ4RpVq2pTiut0TyIyKHggfoCyFM /zaUb3Ho+Uw13Why8Z8MUxvffvOJyRWJbYWtkAnqS7qFiXVabsIGwBQifwwrSQdnzBMB urVyijYbtVqTlf8CZDE3SieylC3hBM0JKaOGHpHk1GEIs4w1gnbRmbk8xi7N6v0IXEtZ NBRA== X-Gm-Message-State: AOJu0Yy3FvsQ2kTDnXW0/GpLsFv0M0FLzRTrBrsyJCGBK5YdoIR6HtyZ tr5b44h+NXHL/kU3vS4IsU4zCp7TF6BRDD1LNLJzLrQk/t59ZIXiIRh4arS4Y7y0cspHOztbP4N h00a9Az1Tlg/J1+ajbfAVOu2O61Ohtg2vtlgEMnohxkf/5ElKEu/2L7kdFXC1IGKiIv5Sm83tGn wojqnuQL6nyg== X-Received: by 2002:a17:906:fcbb:b0:a43:cbed:950d with SMTP id qw27-20020a170906fcbb00b00a43cbed950dmr1552920ejb.38.1709621215957; Mon, 04 Mar 2024 22:46:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IHgywmKRxcxhiAkj9X33Qx7QtpkGLgOpOT1t1YBB9bA+S1EuCSYrL/ARS+kxH5ZhmwTj7E17w== X-Received: by 2002:a17:906:fcbb:b0:a43:cbed:950d with SMTP id qw27-20020a170906fcbb00b00a43cbed950dmr1552906ejb.38.1709621215565; Mon, 04 Mar 2024 22:46:55 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:55 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 3/8] hwmon: (coretemp) Replace sensor_device_attribute with device_attribute Date: Tue, 5 Mar 2024 07:44:07 +0100 Message-ID: <20240305064644.251754-4-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 Replace sensor_device_attribute with device_attribute because sensor_device_attribute->index is no longer used. No functional change. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-7-rui.zhang@intel.com Signed-off-by: Guenter Roeck (cherry picked from commit 18d8f5583388f38094b3b17ad3149d2a93a23646 linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 9a7bfc046c72..cdd1e069d5c1 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -85,7 +85,7 @@ struct temp_data { u32 status_reg; int attr_size; bool is_pkg_data; - struct sensor_device_attribute sd_attrs[TOTAL_ATTRS]; + struct device_attribute sd_attrs[TOTAL_ATTRS]; char attr_name[TOTAL_ATTRS][CORETEMP_NAME_LENGTH]; struct attribute *attrs[TOTAL_ATTRS + 1]; struct attribute_group attr_group; @@ -340,9 +340,8 @@ static struct platform_device **zone_devices; static ssize_t show_label(struct device *dev, struct device_attribute *devattr, char *buf) { - struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); struct platform_data *pdata = dev_get_drvdata(dev); - struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_LABEL]); + struct temp_data *tdata = container_of(devattr, struct temp_data, sd_attrs[ATTR_LABEL]); if (tdata->is_pkg_data) return sprintf(buf, "Package id %u\n", pdata->pkg_id); @@ -354,8 +353,8 @@ static ssize_t show_crit_alarm(struct device *dev, struct device_attribute *devattr, char *buf) { u32 eax, edx; - struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_CRIT_ALARM]); + struct temp_data *tdata = container_of(devattr, struct temp_data, + sd_attrs[ATTR_CRIT_ALARM]); mutex_lock(&tdata->update_lock); rdmsr_on_cpu(tdata->cpu, tdata->status_reg, &eax, &edx); @@ -367,8 +366,7 @@ static ssize_t show_crit_alarm(struct device *dev, static ssize_t show_tjmax(struct device *dev, struct device_attribute *devattr, char *buf) { - struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_TJMAX]); + struct temp_data *tdata = container_of(devattr, struct temp_data, sd_attrs[ATTR_TJMAX]); int tjmax; mutex_lock(&tdata->update_lock); @@ -381,8 +379,7 @@ static ssize_t show_tjmax(struct device *dev, static ssize_t show_ttarget(struct device *dev, struct device_attribute *devattr, char *buf) { - struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_TTARGET]); + struct temp_data *tdata = container_of(devattr, struct temp_data, sd_attrs[ATTR_TTARGET]); int ttarget; mutex_lock(&tdata->update_lock); @@ -398,8 +395,7 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr, char *buf) { u32 eax, edx; - struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct temp_data *tdata = container_of(attr, struct temp_data, sd_attrs[ATTR_TEMP]); + struct temp_data *tdata = container_of(devattr, struct temp_data, sd_attrs[ATTR_TEMP]); int tjmax; mutex_lock(&tdata->update_lock); @@ -443,11 +439,11 @@ static int create_core_attrs(struct temp_data *tdata, struct device *dev) snprintf(tdata->attr_name[i], CORETEMP_NAME_LENGTH, "temp%d_%s", attr_no, suffixes[i]); - sysfs_attr_init(&tdata->sd_attrs[i].dev_attr.attr); - tdata->sd_attrs[i].dev_attr.attr.name = tdata->attr_name[i]; - tdata->sd_attrs[i].dev_attr.attr.mode = 0444; - tdata->sd_attrs[i].dev_attr.show = rd_ptr[i]; - tdata->attrs[i] = &tdata->sd_attrs[i].dev_attr.attr; + sysfs_attr_init(&tdata->sd_attrs[i].attr); + tdata->sd_attrs[i].attr.name = tdata->attr_name[i]; + tdata->sd_attrs[i].attr.mode = 0444; + tdata->sd_attrs[i].show = rd_ptr[i]; + tdata->attrs[i] = &tdata->sd_attrs[i].attr; } tdata->attr_group.attrs = tdata->attrs; return sysfs_create_group(&dev->kobj, &tdata->attr_group); From patchwork Tue Mar 5 06:44:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908029 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmNM3PWVz23fC for ; Tue, 5 Mar 2024 17:48:03 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhOad-0001F3-2h; Tue, 05 Mar 2024 06:47:51 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZl-0000zy-49 for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:46:57 +0000 Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id F3B653F0F8 for ; Tue, 5 Mar 2024 06:46:56 +0000 (UTC) Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-5679f32e6b5so60783a12.3 for ; Mon, 04 Mar 2024 22:46:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621216; x=1710226016; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RxQu7gOni6/QMdrnzEyl8MvcHgH/eLauzOWKF3xqWKM=; b=YFLvEsvuz+Pu5kYnqyu99RJ1Y6CL0/m77r5v0vjaZnvCB6My/0kNujBxahRKt+C6Aa FPtTbrYRf4xCJgg9xj+2Wbs3mVnqUTjGFqKntend5kMsVMgUqZTeUHTJQY7E0P9nPXV6 uuRlZgUDG/Z+6y7oZtO9s53SPal7Rk8NWrPow5Uf8KQbk2o2r9T+Os6zqGeRm8C+O3jz MnsT2pBnR81IBimJQr/+fHUrB4RXxYiHZGyPfMEqL9K8gNr8uYpHGgFejdya+E9RmsJ4 XY1hpkggPWoifKL555XvqFA8FAgAlQm9BzSqUn/7nN41UCxGNsw83y81G1d6MaKsq9SZ coSA== X-Gm-Message-State: AOJu0YyDnf2hHUgT+rwKxArMP9p9rjvLEcIwQAvRGZVQqPCHOORMFe/3 ulGTjpmRShl9UXXy3FZovZBpG3yK1JtXJUOlPtCzuMJu4jaguZ106Eep04GEoB2sWPELGu0ibNc gvmAF4rkYdsb95WJEFW46Phh0wga5Qg21s/X2Dw02jw57vRicDiyowJnv9q/RkGhF7J/xhLoiFn GTiLPsB0LJfA== X-Received: by 2002:aa7:d597:0:b0:566:76e4:bafd with SMTP id r23-20020aa7d597000000b0056676e4bafdmr7882675edq.39.1709621216669; Mon, 04 Mar 2024 22:46:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IEB5/q0LWUMkBu3Fmt4IVFrQBX9FmNp2e/eoTDqAXO40T55xIK/s77xH1cVnTVOTNn5ZsXwNw== X-Received: by 2002:aa7:d597:0:b0:566:76e4:bafd with SMTP id r23-20020aa7d597000000b0056676e4bafdmr7882667edq.39.1709621216384; Mon, 04 Mar 2024 22:46:56 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:56 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 4/8] hwmon: (coretemp) Remove redundant pdata->cpu_map[] Date: Tue, 5 Mar 2024 07:44:08 +0100 Message-ID: <20240305064644.251754-5-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 pdata->cpu_map[] saves the mapping between cpu core id and the index in pdata->core_data[]. This is used to find the temp_data structure using cpu_core_id, by traversing the pdata->cpu_map[] array. But the same goal can be achieved by traversing the pdata->core_temp[] array directly. Remove redundant pdata->cpu_map[]. No functional change. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-8-rui.zhang@intel.com Signed-off-by: Guenter Roeck (cherry picked from commit 87eb801925a0a391dce0d7519eb1d45a9d7e0953 linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index cdd1e069d5c1..29ee8e0c0fe9 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -96,7 +96,6 @@ struct temp_data { struct platform_data { struct device *hwmon_dev; u16 pkg_id; - u16 cpu_map[NUM_REAL_CORES]; struct ida ida; struct cpumask cpumask; struct temp_data *core_data[MAX_CORE_DATA]; @@ -517,7 +516,6 @@ static int create_core_data(struct platform_device *pdev, unsigned int cpu, if (index < 0) return index; - pdata->cpu_map[index] = topology_core_id(cpu); index += BASE_SYSFS_ATTR_NO; } @@ -696,7 +694,7 @@ static int coretemp_cpu_offline(unsigned int cpu) struct platform_device *pdev = coretemp_get_pdev(cpu); struct platform_data *pd; struct temp_data *tdata; - int i, indx = -1, target; + int i, target; /* No need to tear down any interfaces for suspend */ if (cpuhp_tasks_frozen) @@ -707,18 +705,16 @@ static int coretemp_cpu_offline(unsigned int cpu) if (!pd->hwmon_dev) return 0; - for (i = 0; i < NUM_REAL_CORES; i++) { - if (pd->cpu_map[i] == topology_core_id(cpu)) { - indx = i + BASE_SYSFS_ATTR_NO; + for (i = BASE_SYSFS_ATTR_NO; i < MAX_CORE_DATA; i++) { + if (pd->core_data[i] && pd->core_data[i]->cpu_core_id == topology_core_id(cpu)) break; - } } /* Too many cores and this core is not populated, just return */ - if (indx < 0) + if (i == MAX_CORE_DATA) return 0; - tdata = pd->core_data[indx]; + tdata = pd->core_data[i]; cpumask_clear_cpu(cpu, &pd->cpumask); @@ -729,7 +725,7 @@ static int coretemp_cpu_offline(unsigned int cpu) */ target = cpumask_any_and(&pd->cpumask, topology_sibling_cpumask(cpu)); if (target >= nr_cpu_ids) { - coretemp_remove_core(pd, indx); + coretemp_remove_core(pd, i); } else if (tdata && tdata->cpu == cpu) { mutex_lock(&tdata->update_lock); tdata->cpu = target; From patchwork Tue Mar 5 06:44:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908030 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmNb5GKNz23fC for ; Tue, 5 Mar 2024 17:48:15 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhOao-0001JT-Io; Tue, 05 Mar 2024 06:48:03 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZm-000106-8d for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:46:58 +0000 Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id E991D4118B for ; Tue, 5 Mar 2024 06:46:57 +0000 (UTC) Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-566fbaeb401so1999359a12.1 for ; Mon, 04 Mar 2024 22:46:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621217; x=1710226017; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R1unOJnY70gB7sjfoKTJGO7Bk+gc4ZXd0iX6HXxEvFo=; b=UobR8tCQ39jViFY/BWasJDIok09xk7jaYdTsdbSsuPMwmXH3M0aisq7CRDnyUYXbCg xnpnKd5rfj8/tWw1jfAJgMHLAoBpwgP11y9Lql+h5eqypt5wdPn6tmR04Xo16PEiOo6W VEg6DI365f8VdB3SVpFC+3i/DMIYD1Zis/WqqG7YZQZ5auPa4gp/ViyUPuwxTVZUMyta px/lxCaerBydBd/LTApqKPhb8+2Zcq8OqNEoei0bdRiSfZ6hK46WGBFBUDM36yZ6yv7C vnSv8V+tA4xzrPgo6n0cTELPfpfNQAOp819jbnGsIqb9fxGO5zKxVuyPrW/zzpdESFEm +YIA== X-Gm-Message-State: AOJu0Yy6eo82n8aEU4AuoJgclk0yd51SogpNTKTiUFJJvKyoqfcu0hwL F0zjNo7M4zMuN8nlB5CNlzKSyyKKqFR+q1BMjE6uxxcmQgxHak5ECTIehpOPpEw6TUeg3jFIyJT 3B3F30Dy/Kt9OWrGweY4S86xr5/qm3fc7eK2R7kd2OkvppM3BBsW4TUZ6jlOuY/TcJhe/Zfr42K p7ecTJNqVz0Q== X-Received: by 2002:a05:6402:40c2:b0:567:186d:7dbc with SMTP id z2-20020a05640240c200b00567186d7dbcmr6017769edb.37.1709621217522; Mon, 04 Mar 2024 22:46:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IH58bDMOlGsrwVHo7Nno3H7FZO9Q69NUys5Q8hdwo7ZOrZIo8gPl1Sd4N8ZWR2r4kE/GxQnqQ== X-Received: by 2002:a05:6402:40c2:b0:567:186d:7dbc with SMTP id z2-20020a05640240c200b00567186d7dbcmr6017755edb.37.1709621217196; Mon, 04 Mar 2024 22:46:57 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:56 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 5/8] hwmon: (coretemp) Abstract core_temp helpers Date: Tue, 5 Mar 2024 07:44:09 +0100 Message-ID: <20240305064644.251754-6-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 coretemp driver has an obscure and fragile logic for handling package and core temperature data. Place the logic in newly introduced helpers for further optimizations. No functional change. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-9-rui.zhang@intel.com Signed-off-by: Guenter Roeck (cherry picked from commit b0b01414a26105b68cbce308df076ec66c72bddd linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 118 +++++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 54 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 29ee8e0c0fe9..a19799a302a2 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -81,6 +81,7 @@ struct temp_data { int tjmax; unsigned long last_updated; unsigned int cpu; + unsigned int index; u32 cpu_core_id; u32 status_reg; int attr_size; @@ -474,14 +475,36 @@ static struct platform_device *coretemp_get_pdev(unsigned int cpu) return NULL; } -static struct temp_data *init_temp_data(unsigned int cpu, int pkg_flag) +static struct temp_data * +init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) { struct temp_data *tdata; + int index; tdata = kzalloc(sizeof(struct temp_data), GFP_KERNEL); if (!tdata) return NULL; + /* + * Get the index of tdata in pdata->core_data[] + * tdata for package: pdata->core_data[1] + * tdata for core: pdata->core_data[2] .. pdata->core_data[NUM_REAL_CORES + 1] + */ + if (pkg_flag) { + index = PKG_SYSFS_ATTR_NO; + } else { + index = ida_alloc_max(&pdata->ida, NUM_REAL_CORES - 1, GFP_KERNEL); + if (index < 0) { + kfree(tdata); + return NULL; + } + index += BASE_SYSFS_ATTR_NO; + } + /* Index in pdata->core_data[] */ + tdata->index = index; + + pdata->core_data[index] = tdata; + tdata->status_reg = pkg_flag ? MSR_IA32_PACKAGE_THERM_STATUS : MSR_IA32_THERM_STATUS; tdata->is_pkg_data = pkg_flag; @@ -492,6 +515,30 @@ static struct temp_data *init_temp_data(unsigned int cpu, int pkg_flag) return tdata; } +static void destroy_temp_data(struct platform_data *pdata, struct temp_data *tdata) +{ + pdata->core_data[tdata->index] = NULL; + if (!tdata->is_pkg_data) + ida_free(&pdata->ida, tdata->index - BASE_SYSFS_ATTR_NO); + kfree(tdata); +} + +static struct temp_data *get_temp_data(struct platform_data *pdata, int cpu) +{ + int i; + + /* cpu < 0 means get pkg temp_data */ + if (cpu < 0) + return pdata->core_data[PKG_SYSFS_ATTR_NO]; + + for (i = BASE_SYSFS_ATTR_NO; i < MAX_CORE_DATA; i++) { + if (pdata->core_data[i] && + pdata->core_data[i]->cpu_core_id == topology_core_id(cpu)) + return pdata->core_data[i]; + } + return NULL; +} + static int create_core_data(struct platform_device *pdev, unsigned int cpu, int pkg_flag) { @@ -499,36 +546,19 @@ static int create_core_data(struct platform_device *pdev, unsigned int cpu, struct platform_data *pdata = platform_get_drvdata(pdev); struct cpuinfo_x86 *c = &cpu_data(cpu); u32 eax, edx; - int err, index; + int err; if (!housekeeping_cpu(cpu, HK_TYPE_MISC)) return 0; - /* - * Get the index of tdata in pdata->core_data[] - * tdata for package: pdata->core_data[1] - * tdata for core: pdata->core_data[2] .. pdata->core_data[NUM_REAL_CORES + 1] - */ - if (pkg_flag) { - index = PKG_SYSFS_ATTR_NO; - } else { - index = ida_alloc_max(&pdata->ida, NUM_REAL_CORES - 1, GFP_KERNEL); - if (index < 0) - return index; - - index += BASE_SYSFS_ATTR_NO; - } - - tdata = init_temp_data(cpu, pkg_flag); - if (!tdata) { - err = -ENOMEM; - goto ida_free; - } + tdata = init_temp_data(pdata, cpu, pkg_flag); + if (!tdata) + return -ENOMEM; /* Test if we can access the status register */ err = rdmsr_safe_on_cpu(cpu, tdata->status_reg, &eax, &edx); if (err) - goto exit_free; + goto err; /* Make sure tdata->tjmax is a valid indicator for dynamic/static tjmax */ get_tjmax(tdata, &pdev->dev); @@ -542,20 +572,15 @@ static int create_core_data(struct platform_device *pdev, unsigned int cpu, if (get_ttarget(tdata, &pdev->dev) >= 0) tdata->attr_size++; - pdata->core_data[index] = tdata; - /* Create sysfs interfaces */ err = create_core_attrs(tdata, pdata->hwmon_dev); if (err) - goto exit_free; + goto err; return 0; -exit_free: - pdata->core_data[index] = NULL; - kfree(tdata); -ida_free: - if (!pkg_flag) - ida_free(&pdata->ida, index - BASE_SYSFS_ATTR_NO); + +err: + destroy_temp_data(pdata, tdata); return err; } @@ -566,10 +591,8 @@ coretemp_add_core(struct platform_device *pdev, unsigned int cpu, int pkg_flag) dev_err(&pdev->dev, "Adding Core %u failed\n", cpu); } -static void coretemp_remove_core(struct platform_data *pdata, int indx) +static void coretemp_remove_core(struct platform_data *pdata, struct temp_data *tdata) { - struct temp_data *tdata = pdata->core_data[indx]; - /* if we errored on add then this is already gone */ if (!tdata) return; @@ -577,11 +600,7 @@ static void coretemp_remove_core(struct platform_data *pdata, int indx) /* Remove the sysfs attributes */ sysfs_remove_group(&pdata->hwmon_dev->kobj, &tdata->attr_group); - kfree(pdata->core_data[indx]); - pdata->core_data[indx] = NULL; - - if (indx >= BASE_SYSFS_ATTR_NO) - ida_free(&pdata->ida, indx - BASE_SYSFS_ATTR_NO); + destroy_temp_data(pdata, tdata); } static int coretemp_device_add(int zoneid) @@ -694,7 +713,7 @@ static int coretemp_cpu_offline(unsigned int cpu) struct platform_device *pdev = coretemp_get_pdev(cpu); struct platform_data *pd; struct temp_data *tdata; - int i, target; + int target; /* No need to tear down any interfaces for suspend */ if (cpuhp_tasks_frozen) @@ -705,16 +724,7 @@ static int coretemp_cpu_offline(unsigned int cpu) if (!pd->hwmon_dev) return 0; - for (i = BASE_SYSFS_ATTR_NO; i < MAX_CORE_DATA; i++) { - if (pd->core_data[i] && pd->core_data[i]->cpu_core_id == topology_core_id(cpu)) - break; - } - - /* Too many cores and this core is not populated, just return */ - if (i == MAX_CORE_DATA) - return 0; - - tdata = pd->core_data[i]; + tdata = get_temp_data(pd, cpu); cpumask_clear_cpu(cpu, &pd->cpumask); @@ -725,7 +735,7 @@ static int coretemp_cpu_offline(unsigned int cpu) */ target = cpumask_any_and(&pd->cpumask, topology_sibling_cpumask(cpu)); if (target >= nr_cpu_ids) { - coretemp_remove_core(pd, i); + coretemp_remove_core(pd, tdata); } else if (tdata && tdata->cpu == cpu) { mutex_lock(&tdata->update_lock); tdata->cpu = target; @@ -735,10 +745,10 @@ static int coretemp_cpu_offline(unsigned int cpu) /* * If all cores in this pkg are offline, remove the interface. */ - tdata = pd->core_data[PKG_SYSFS_ATTR_NO]; + tdata = get_temp_data(pd, -1); if (cpumask_empty(&pd->cpumask)) { if (tdata) - coretemp_remove_core(pd, PKG_SYSFS_ATTR_NO); + coretemp_remove_core(pd, tdata); hwmon_device_unregister(pd->hwmon_dev); pd->hwmon_dev = NULL; return 0; From patchwork Tue Mar 5 06:44:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908031 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmNx67XKz23fC for ; Tue, 5 Mar 2024 17:48:33 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhOb3-0001Wz-N3; Tue, 05 Mar 2024 06:48:19 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZn-00010C-0i for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:47:01 +0000 Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id BD06A3F0F8 for ; Tue, 5 Mar 2024 06:46:58 +0000 (UTC) Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-5669be27342so3661219a12.0 for ; Mon, 04 Mar 2024 22:46:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621218; x=1710226018; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lnMbRVL9Q+YoNvNSI633wVuOQjZUuA3JQNrewnUvjWQ=; b=GicNRJoT2hkkTUxEcQvSklv8e0fz8B2GFTY4FPZfGnCVf7WnTLHUtF+YsJYSgvFL0n Po/PrSydEGRdQqI0nt+0sKTOoYMk8IPHLIumCD1jDOu1jQ1gS3KRpufNbjzQhwVOJpTX 7HNAticDcJCZFI0LpmtaXo9AViwC4gfQruVJ7xg+vxCEH7loEtC5vW1UHheAfGmAUguA GnMvHS2KaD+iYNJnuX3y1T30m9HicA7fkVOeW/8wt4Hinsfs66yZKDTj+p2K5wTuL/az 01+zyIEPgTMLklBtm7FH54ZWASOBDpYmtEovTcBlYhgvC59uitdpcksXSmv3F+DDECNA iInQ== X-Gm-Message-State: AOJu0YwR5HDYwTXDWWHRcZiE7F74VdBJ7o/zivIS4YpPl7/3AkXsCAqx GuaxlQgUGFuH3HcvNXdde8DzMy0/6KaTvuKXjdLx16vBHY2LqGfHL0VrrhaI6jt3zkXruasqXxy 5adnah+rMjm8F0k6Tjaj1MpU6Z/P5OO8hDxC6d8I3zsPYpM1AVvepU2OLlG6B4bzs4yN20EcaLq c8IliUKA0Wow== X-Received: by 2002:aa7:c594:0:b0:567:66b:6bde with SMTP id g20-20020aa7c594000000b00567066b6bdemr5623688edq.39.1709621218358; Mon, 04 Mar 2024 22:46:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IESWsXeKnH/CtK1Unz040TY35QgAKErnQEpGehg7q9NRjF1i9+qBHfVF6HvLpoA6iRWZ4B+yg== X-Received: by 2002:aa7:c594:0:b0:567:66b:6bde with SMTP id g20-20020aa7c594000000b00567066b6bdemr5623679edq.39.1709621218044; Mon, 04 Mar 2024 22:46:58 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:57 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 6/8] hwmon: (coretemp) Split package temp_data and core temp_data Date: Tue, 5 Mar 2024 07:44:10 +0100 Message-ID: <20240305064644.251754-7-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 Saving package temp_data and core temp_data in one array with different offsets is fragile. Split them and clean up crabbed maths and macros. This also fixes a problem that pdata->core_data[0] was never used. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-10-rui.zhang@intel.com Signed-off-by: Guenter Roeck (cherry picked from commit 326241f71f3d8de3c62236b559ce3f2f201aec4d linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index a19799a302a2..1a3b5ae0baca 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -39,11 +39,8 @@ static int force_tjmax; module_param_named(tjmax, force_tjmax, int, 0444); MODULE_PARM_DESC(tjmax, "TjMax value in degrees Celsius"); -#define PKG_SYSFS_ATTR_NO 1 /* Sysfs attribute for package temp */ -#define BASE_SYSFS_ATTR_NO 2 /* Sysfs Base attr no for coretemp */ #define NUM_REAL_CORES 512 /* Number of Real cores per cpu */ #define CORETEMP_NAME_LENGTH 28 /* String Length of attrs */ -#define MAX_CORE_DATA (NUM_REAL_CORES + BASE_SYSFS_ATTR_NO) enum coretemp_attr_index { ATTR_LABEL, @@ -99,7 +96,8 @@ struct platform_data { u16 pkg_id; struct ida ida; struct cpumask cpumask; - struct temp_data *core_data[MAX_CORE_DATA]; + struct temp_data *pkg_data; + struct temp_data *core_data[NUM_REAL_CORES]; struct device_attribute name_attr; }; @@ -479,31 +477,21 @@ static struct temp_data * init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) { struct temp_data *tdata; - int index; tdata = kzalloc(sizeof(struct temp_data), GFP_KERNEL); if (!tdata) return NULL; - /* - * Get the index of tdata in pdata->core_data[] - * tdata for package: pdata->core_data[1] - * tdata for core: pdata->core_data[2] .. pdata->core_data[NUM_REAL_CORES + 1] - */ if (pkg_flag) { - index = PKG_SYSFS_ATTR_NO; + pdata->pkg_data = tdata; } else { - index = ida_alloc_max(&pdata->ida, NUM_REAL_CORES - 1, GFP_KERNEL); - if (index < 0) { + tdata->index = ida_alloc_max(&pdata->ida, NUM_REAL_CORES - 1, GFP_KERNEL); + if (tdata->index < 0) { kfree(tdata); return NULL; } - index += BASE_SYSFS_ATTR_NO; + pdata->core_data[tdata->index] = tdata; } - /* Index in pdata->core_data[] */ - tdata->index = index; - - pdata->core_data[index] = tdata; tdata->status_reg = pkg_flag ? MSR_IA32_PACKAGE_THERM_STATUS : MSR_IA32_THERM_STATUS; @@ -517,9 +505,12 @@ init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) static void destroy_temp_data(struct platform_data *pdata, struct temp_data *tdata) { - pdata->core_data[tdata->index] = NULL; - if (!tdata->is_pkg_data) - ida_free(&pdata->ida, tdata->index - BASE_SYSFS_ATTR_NO); + if (tdata->is_pkg_data) { + pdata->pkg_data = NULL; + } else { + pdata->core_data[tdata->index] = NULL; + ida_free(&pdata->ida, tdata->index); + } kfree(tdata); } @@ -529,9 +520,9 @@ static struct temp_data *get_temp_data(struct platform_data *pdata, int cpu) /* cpu < 0 means get pkg temp_data */ if (cpu < 0) - return pdata->core_data[PKG_SYSFS_ATTR_NO]; + return pdata->pkg_data; - for (i = BASE_SYSFS_ATTR_NO; i < MAX_CORE_DATA; i++) { + for (i = 0; i < NUM_REAL_CORES; i++) { if (pdata->core_data[i] && pdata->core_data[i]->cpu_core_id == topology_core_id(cpu)) return pdata->core_data[i]; From patchwork Tue Mar 5 06:44:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908032 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmP905Tpz23fC for ; Tue, 5 Mar 2024 17:48:45 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhObI-0001ij-B7; Tue, 05 Mar 2024 06:48:32 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZn-00010I-NO for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:47:01 +0000 Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 95F5D3F627 for ; Tue, 5 Mar 2024 06:46:59 +0000 (UTC) Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-564fec337b1so6452308a12.0 for ; Mon, 04 Mar 2024 22:46:59 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621219; x=1710226019; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Oz3w+O+Tf7v1KfTGrsxmbBdDrDAeTz5Hr2WgsYVQonE=; b=g8sjf+6/o7ItIHlv+bRXS0/tBfVt0VDW0Y/igOYgryqVHwSy+v7eIkHCyjQZYqy0Vk MFtAAmG9/dP/zaEBC2naVvexpyA0PXYw1xNtJd0mmvP9lZU73kRtn3qplxB5FE+87Hdw CqTpxc7RUcGa5VKtBpYHF/L1MEYJiICteVnF+o+0RWW0aOGKAD2BZyFHcmZy5ofyOQ4M 7TuWoahzuZb2eN+ngKZMHIadw65uH2Y7rl0uDkp0zOiSgJ0QCvYK+kxqPvbCW+Qw/8WH tD/7hLWG/4oqlxMV+1Or0UGdFkKnr/+ib+FrmW8q9M/N8v+PmHuaiQeM1NiS0Pe6qc/K 69Wg== X-Gm-Message-State: AOJu0YyukY7Jtqap0R07S3lSsU3zIOrNqQBUbUroaSO9l7mdTD0VZd5Z 28npr/3u62De8kRsWPXoGRRjFzuyaCVn4DFA5szcMtQcVAh5Qvwww/Oe4JtwEsUkiQ2wJqwKkmI oXL/Biq2R1HpoAalyeYk9fUPQT/n91HiiJjX/JUWnyYfdD2J/OcsxToaitSI/ATBgVUvnASbDBj faI00BdwN4hA== X-Received: by 2002:a50:8d85:0:b0:564:4211:faa3 with SMTP id r5-20020a508d85000000b005644211faa3mr1905382edh.1.1709621219306; Mon, 04 Mar 2024 22:46:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IHrOvsBOXcUitxUT4M4G/nOyYWHuil+duCrn2TXykZc9Syd8pQi7/7uiFRfNm7X2g52hyRFXQ== X-Received: by 2002:a50:8d85:0:b0:564:4211:faa3 with SMTP id r5-20020a508d85000000b005644211faa3mr1905375edh.1.1709621219028; Mon, 04 Mar 2024 22:46:59 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:58 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 7/8] hwmon: (coretemp) Remove redundant temp_data->is_pkg_data Date: Tue, 5 Mar 2024 07:44:11 +0100 Message-ID: <20240305064644.251754-8-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 temp_data->index saves the index in pdata->core_data[]. It is not used by package temp_data. Use temp_data->index as the indicator of package temp_data and remove redundant temp_data->is_pkg_data. No functional change. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-11-rui.zhang@intel.com Signed-off-by: Guenter Roeck (cherry picked from commit 18b24a5f9ca3f180f0be72b98f170f043a5d8961 linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 1a3b5ae0baca..e548f2145449 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -70,19 +70,16 @@ enum coretemp_attr_index { * @status_reg: One of IA32_THERM_STATUS or IA32_PACKAGE_THERM_STATUS, * from where the temperature values should be read. * @attr_size: Total number of pre-core attrs displayed in the sysfs. - * @is_pkg_data: If this is 1, the temp_data holds pkgtemp data. - * Otherwise, temp_data holds coretemp data. */ struct temp_data { int temp; int tjmax; unsigned long last_updated; unsigned int cpu; - unsigned int index; + int index; u32 cpu_core_id; u32 status_reg; int attr_size; - bool is_pkg_data; struct device_attribute sd_attrs[TOTAL_ATTRS]; char attr_name[TOTAL_ATTRS][CORETEMP_NAME_LENGTH]; struct attribute *attrs[TOTAL_ATTRS + 1]; @@ -149,6 +146,11 @@ static const struct tjmax_model tjmax_model_table[] = { */ }; +static bool is_pkg_temp_data(struct temp_data *tdata) +{ + return tdata->index < 0; +} + static int adjust_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *dev) { /* The 100C is default for both mobile and non mobile CPUs */ @@ -341,7 +343,7 @@ static ssize_t show_label(struct device *dev, struct platform_data *pdata = dev_get_drvdata(dev); struct temp_data *tdata = container_of(devattr, struct temp_data, sd_attrs[ATTR_LABEL]); - if (tdata->is_pkg_data) + if (is_pkg_temp_data(tdata)) return sprintf(buf, "Package id %u\n", pdata->pkg_id); return sprintf(buf, "Core %u\n", tdata->cpu_core_id); @@ -433,7 +435,7 @@ static int create_core_attrs(struct temp_data *tdata, struct device *dev) * The attr number is always core id + 2 * The Pkgtemp will always show up as temp1_*, if available */ - int attr_no = tdata->is_pkg_data ? 1 : tdata->cpu_core_id + 2; + int attr_no = is_pkg_temp_data(tdata) ? 1 : tdata->cpu_core_id + 2; snprintf(tdata->attr_name[i], CORETEMP_NAME_LENGTH, "temp%d_%s", attr_no, suffixes[i]); @@ -484,6 +486,8 @@ init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) if (pkg_flag) { pdata->pkg_data = tdata; + /* Use tdata->index as indicator of package temp data */ + tdata->index = -1; } else { tdata->index = ida_alloc_max(&pdata->ida, NUM_REAL_CORES - 1, GFP_KERNEL); if (tdata->index < 0) { @@ -495,7 +499,6 @@ init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) tdata->status_reg = pkg_flag ? MSR_IA32_PACKAGE_THERM_STATUS : MSR_IA32_THERM_STATUS; - tdata->is_pkg_data = pkg_flag; tdata->cpu = cpu; tdata->cpu_core_id = topology_core_id(cpu); tdata->attr_size = MAX_CORE_ATTRS; @@ -505,7 +508,7 @@ init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) static void destroy_temp_data(struct platform_data *pdata, struct temp_data *tdata) { - if (tdata->is_pkg_data) { + if (is_pkg_temp_data(tdata)) { pdata->pkg_data = NULL; } else { pdata->core_data[tdata->index] = NULL; From patchwork Tue Mar 5 06:44:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Righi X-Patchwork-Id: 1908033 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpmPX1MLfz23fC for ; Tue, 5 Mar 2024 17:49:04 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rhObd-0001yV-Cd; Tue, 05 Mar 2024 06:48:53 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rhOZo-00010J-R2 for kernel-team@lists.ubuntu.com; Tue, 05 Mar 2024 06:47:02 +0000 Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 7D4614118B for ; Tue, 5 Mar 2024 06:47:00 +0000 (UTC) Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-5672dba9767so2107951a12.0 for ; Mon, 04 Mar 2024 22:47:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709621220; x=1710226020; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o2mrnXlMhB9lxFG7B8uzjZCdiBnaLn7lur9/o/vA+KQ=; b=wuXUw95YDz9oDTHOcFNtiqUWjzvgqBfYVengDZrurvIUDqhMFa233DBNWLwJlwpsHf oSuUhv3e7o9CzpmhZvVl4sVeSMbbdKPYOf8NWXyubb6HzVGAvkEU52dXTKpXNIyxW8oV 7Vo9weD8xqoboEXkf8x7jAZ5JRYwwyqp1h/jXw4RRi4dZPnVtYaO0FHCVwTzi0BwSQ+Z PXAapIMZpUZArMaDbHCOX9ADGZNWz3oBCKi480UaKWiDsrXa0xOTU6hlmIwkb4KIWI/J sLrgte4QgogmHGFMBNu1Q7oVPGrrWpo1DMLSSzwFkZNRqr9ZObTKPMV3mZ1+kLUQPQi/ 1OnA== X-Gm-Message-State: AOJu0Yx1JP4WSu1Gn5AxfcLGlTiIKB9fKXVFIaS5VvsJdvRohdt+jger JFNLn7nSneKYnI5frY89TDdBOeQ9Qx1bFh9qrBAsmAIFuNRDiC+b7YezPsHBSiN/ru6vhpGhq26 dfXtV9XIEJtnwQFZ5VSGodl/HtKQMvricZHtQMWsEuCogQu+0Ok0cpEbU6M3xiUO3qz1DgHjBuC UaLvRB5mnZFQ== X-Received: by 2002:a05:6402:214e:b0:566:59a2:7a10 with SMTP id bq14-20020a056402214e00b0056659a27a10mr1886046edb.1.1709621220027; Mon, 04 Mar 2024 22:47:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IGKwNk2S2H6pPBTjSj47XUunX4F7zEngePeF8Qg1o2+Rvd14hLgTMS538kGepl6RMOLrfgRpw== X-Received: by 2002:a05:6402:214e:b0:566:59a2:7a10 with SMTP id bq14-20020a056402214e00b0056659a27a10mr1886040edb.1.1709621219807; Mon, 04 Mar 2024 22:46:59 -0800 (PST) Received: from localhost.localdomain (host-95-252-40-65.retail.telecomitalia.it. [95.252.40.65]) by smtp.gmail.com with ESMTPSA id i17-20020aa7c9d1000000b00567566227a5sm1784439edt.18.2024.03.04.22.46.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 22:46:59 -0800 (PST) From: Andrea Righi To: kernel-team@lists.ubuntu.com Subject: [N/U][PATCH 8/8] hwmon: (coretemp) Use dynamic allocated memory for core temp_data Date: Tue, 5 Mar 2024 07:44:12 +0100 Message-ID: <20240305064644.251754-9-andrea.righi@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240305064644.251754-1-andrea.righi@canonical.com> References: <20240305064644.251754-1-andrea.righi@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Zhang Rui BugLink: https://bugs.launchpad.net/bugs/2056126 The total memory needed for saving per core temperature data depends on the number of cores in a package. Using static allocated memory wastes memories on systems with low per package core count. Improve the code to use dynamic allocated memory so that it can be improved further when per package core count information becomes available. No functional change intended. Signed-off-by: Zhang Rui Link: https://lore.kernel.org/r/20240202092144.71180-12-rui.zhang@intel.com [groeck: Fixed continuation line alignment] Signed-off-by: Guenter Roeck (cherry picked from commit 1a793caf6f6991716cb07583ed7c27de84ef0cba linux-next) Signed-off-by: Andrea Righi --- drivers/hwmon/coretemp.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index e548f2145449..30402de2c889 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -91,10 +91,11 @@ struct temp_data { struct platform_data { struct device *hwmon_dev; u16 pkg_id; + int nr_cores; struct ida ida; struct cpumask cpumask; struct temp_data *pkg_data; - struct temp_data *core_data[NUM_REAL_CORES]; + struct temp_data **core_data; struct device_attribute name_attr; }; @@ -480,6 +481,20 @@ init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) { struct temp_data *tdata; + if (!pdata->core_data) { + /* + * TODO: + * The information of actual possible cores in a package is broken for now. + * Will replace hardcoded NUM_REAL_CORES with actual per package core count + * when this information becomes available. + */ + pdata->nr_cores = NUM_REAL_CORES; + pdata->core_data = kcalloc(pdata->nr_cores, sizeof(struct temp_data *), + GFP_KERNEL); + if (!pdata->core_data) + return NULL; + } + tdata = kzalloc(sizeof(struct temp_data), GFP_KERNEL); if (!tdata) return NULL; @@ -489,7 +504,7 @@ init_temp_data(struct platform_data *pdata, unsigned int cpu, int pkg_flag) /* Use tdata->index as indicator of package temp data */ tdata->index = -1; } else { - tdata->index = ida_alloc_max(&pdata->ida, NUM_REAL_CORES - 1, GFP_KERNEL); + tdata->index = ida_alloc_max(&pdata->ida, pdata->nr_cores - 1, GFP_KERNEL); if (tdata->index < 0) { kfree(tdata); return NULL; @@ -510,6 +525,9 @@ static void destroy_temp_data(struct platform_data *pdata, struct temp_data *tda { if (is_pkg_temp_data(tdata)) { pdata->pkg_data = NULL; + kfree(pdata->core_data); + pdata->core_data = NULL; + pdata->nr_cores = 0; } else { pdata->core_data[tdata->index] = NULL; ida_free(&pdata->ida, tdata->index); @@ -525,7 +543,7 @@ static struct temp_data *get_temp_data(struct platform_data *pdata, int cpu) if (cpu < 0) return pdata->pkg_data; - for (i = 0; i < NUM_REAL_CORES; i++) { + for (i = 0; i < pdata->nr_cores; i++) { if (pdata->core_data[i] && pdata->core_data[i]->cpu_core_id == topology_core_id(cpu)) return pdata->core_data[i];