From nobody Sun Feb 8 16:34:31 2026 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 96035134A9 for ; Sun, 25 Feb 2024 15:13:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708874037; cv=none; b=XNCmscd8g+bfIqIfIT32YegLzljYpSAV3aZBQyB319vtep6NWAUvyBpPhVEmRA6BgjTROx0wCemSanUKh/6AGP+5haPaZmVjfDSgVnFS2nyfLOBcNt92TKf1Dh0Y+rv5HqaXgeQe17fXp3G8Gjc5ostvQqd3d024RgVCqD7dPIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708874037; c=relaxed/simple; bh=j5/RCL5+ipaxtCp9MIGqeZWzlRgha0BMJPZ+AfVcsjs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MGBKY3P79VReoY7M+SdutoEqGEh4LYImLswNH2qqJe4WTb30/D5bvlQ4HOVRAGhDl3D2QfWFHxryJXghfyAJzu6dFAtk/cqHuSZmR/+aD9DDdxoR4Tu4j5tbF1mNtrr+F8+7Q6/eU22dkH6pFk6jHIqXgtrCjapBnHJT3afrYOQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=frkgL0UM; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="frkgL0UM" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-563d56ee65cso2791385a12.2 for ; Sun, 25 Feb 2024 07:13:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1708874034; x=1709478834; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NmS4gDNEWmUck8GHVINRNCbZHkdEW63y1bKjUv7oLPQ=; b=frkgL0UM863QGwKjkmreLoXPAYHJYNFi8LQTmhmyRF7sVC1xT+EyK32NTnoz7a01Dv G6ZC/oZAqU3Tbb6Ax0N/8qdrfIpEzb7Avn59yzAWF+fIhSG+bTJkCj/v+tG8Ya+fokVO 3Qgnjs3JV+0MpuKELfhx8elOno6AlK/p+UaYrmpR+Ge4r+RLRu24ppZ6es3bAXX1HZgE cN8OWNZ2Ps8oMEZX492SZVPafsFxPd3OvId+WH2KAVl9DTVjB0lylD+/dphWVmQee3Or 20PBM6dTvHY3omcOfdNgDmyr7EXYj11l/mRZOvNF3C0dVmJJIe6BmALce/2TxMU1/vO8 6Jtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708874034; x=1709478834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NmS4gDNEWmUck8GHVINRNCbZHkdEW63y1bKjUv7oLPQ=; b=cfVHvXg7zpuvdJtAAg/EMW0UEayREy7MdHbTzHKWuAspuYL95dx9fFqp1SWLicdlqI XTDzZs9fts7OBLP5lL0qxbyorcMMDZvKnRi/GWztvs6tEcstWefz1VkoEiKkPtmxaTxK Yxj47iPo9Zm6ZboUshiismlqF0B2Tc1K6KEtjUCuhO/qmqmKf/WHk5Xd+3lpOQSHnPG/ K1+CsK+bnlLjZai84+TzvQzO1L4OAy74+oeByoLSpSNIMZrmeqyqRucfvxG5lefEXswj 9ysMq8jFBfObm/rXD9jfWb0E8PRPhDWfjBr8c2u1pF/cHmL1Vm1EQ3pzVw9A7H742EWc Kdwg== X-Forwarded-Encrypted: i=1; AJvYcCU+OGZs9Lw4vW4mGWAgo7JuY3nPDBX+qRqps5AtdI0j5QuBitlKtanVwlloO5rYkejwe+Rk5ltxvV3R5EpZ4liebIxgP5pjUC3Tp1K6 X-Gm-Message-State: AOJu0YxOby/R3jSCMnBjML7D0Kl/YW+AePne6qjFqmsi0p2lsSqGZnJu 0OPEzS/s71MnjjObvZrL41jjXta1BLf5UGiV/I4wP+Y8SX7rlarB X-Google-Smtp-Source: AGHT+IEkhbI4nG+Vw4+mL6QrL0isP40UUWu3tf2QCFS7NrKvQ48vP8UHbsY+NMoO6aJCF078nPvsqw== X-Received: by 2002:aa7:c34b:0:b0:565:d125:221d with SMTP id j11-20020aa7c34b000000b00565d125221dmr1109817edr.32.1708874033937; Sun, 25 Feb 2024 07:13:53 -0800 (PST) Received: from localhost.localdomain (dynamic-2a02-3100-94e3-d600-0000-0000-0000-0e63.310.pool.telefonica.de. [2a02:3100:94e3:d600::e63]) by smtp.googlemail.com with ESMTPSA id f5-20020a50d545000000b005651ae4ac91sm1588450edj.41.2024.02.25.07.13.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Feb 2024 07:13:53 -0800 (PST) From: Martin Blumenstingl To: daniel.lezcano@linaro.org, tglx@linutronix.de Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, patrice.chotard@foss.st.com, linux-amlogic@lists.infradead.org, Martin Blumenstingl Subject: [PATCH v3 1/3] clocksource/drivers/arm_global_timer: Make gt_target_rate unsigned long Date: Sun, 25 Feb 2024 16:13:34 +0100 Message-ID: <20240225151336.2728533-2-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240225151336.2728533-1-martin.blumenstingl@googlemail.com> References: <20240225151336.2728533-1-martin.blumenstingl@googlemail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Change the data type of gt_target_rate to unsigned long as this is what we get back from clk_get_rate(). Signed-off-by: Martin Blumenstingl --- drivers/clocksource/arm_global_timer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/clocksource/arm_global_timer.c b/drivers/clocksource/a= rm_global_timer.c index 8dd1e46b7176..fb3ffd54c822 100644 --- a/drivers/clocksource/arm_global_timer.c +++ b/drivers/clocksource/arm_global_timer.c @@ -52,7 +52,8 @@ */ static void __iomem *gt_base; static struct notifier_block gt_clk_rate_change_nb; -static u32 gt_psv_new, gt_psv_bck, gt_target_rate; +static u32 gt_psv_new, gt_psv_bck; +static unsigned long gt_target_rate; static int gt_ppi; static struct clock_event_device __percpu *gt_evt; =20 --=20 2.44.0 From nobody Sun Feb 8 16:34:31 2026 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0EBA414280 for ; Sun, 25 Feb 2024 15:13:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708874038; cv=none; b=jztS/6OmAhvBB3ZJ0vJBDJ7t2mtiMcLhdDLeqcB5ajOQOqaUz3kiTjv5WgufLHkAAth5FjcfLlJA5Vxq2vH2lKD9qoP/vutemAuTC9zN46/PQFh1DzPyRLRCqI4k0NXK7qqjpYzsHboMZV7sW7gR/OhgdMmszJImQylqQo6ddlo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708874038; c=relaxed/simple; bh=Hx29924sE0D29O6GTIthI9cssCctI7+xzhDTwYRmHCw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cI1en+SxQdLqkS8Tb8pTW31sgcmdpbaTyFZJJVu6SUjkBQcvvLqDse8IEtLNpHRjhWbLqyTHQW7D/z9i216xWILODZ8L3+3/OJ5lhvFCWbLxv6Lsfj9vxEKYox+CsYYIeQIGZjho2+9jdgq65z03Fjd5/1BA+9S6Xuz6OdGbhXs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=CiL1t7/b; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="CiL1t7/b" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-563d32ee33aso2957081a12.2 for ; Sun, 25 Feb 2024 07:13:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1708874035; x=1709478835; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LqzAK/rpa5OgHPM2K5eydECFHp0Pspegr4Gfp32qYnk=; b=CiL1t7/b3aOtrvrvtKm2tCsCnnl3VawjruKuhP/0ZDW4tGx95mTeUbx8TbTvzY3qhi oiy5aqLgwgaux4mEbxE7pY8CBp865g0DGEk4J/xpia2m9JuA3JE8MNCq4KKVAcv3A/sV oH4vk+95y/1TN8oqnW5xOGX4nrIWwKVLQQsCudBH2giW25I+Puhw60JjN1c2tct6GHA2 Vr56D14eRq1EKEPA4xcyD+KJ+ftoLtgmFmLU83Wg906dSy5Jc591dDS5bQqYFRv0KIO4 O3adkqTyzKOlQqykKzjLwFqZup3e7oYfTr652l5fq4Ewxf/VO5jS4Lx9EuPt8VdA3rjn Yfdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708874035; x=1709478835; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LqzAK/rpa5OgHPM2K5eydECFHp0Pspegr4Gfp32qYnk=; b=q/ASk/UuIt8nOjE6TYH++2/y03BSzV3xWxaHWusslrorXO2CcvAvPmln489cq2hzFw 5ehKRLpMh11jfGnGCFDfkOpVB25bd6NMEsKWuVG5u746SX38RElR4ifT8+uGXF2trx6V apIKRafeyPE5bclUnp7yhWIAwG4rkT297H6xtqXrgQPZPgwhNiwNXfMDimKo0rgmq+eY PurcLqctrxXEIzcjp6L3644Wzx69lU7l7kAp7O+VQUKBRN8C0HoxWS9DuBTl7miDjSeX Dekg7NYwghZ1UNwklvvJApcrakmqRce/cFrcbzLDL+nh2J4CdgSkDjX3ebcXGBKy7g46 m43Q== X-Forwarded-Encrypted: i=1; AJvYcCVox+1tnUKm8bC5LPyKEGJQfMxCQ5NIoFZ9wem37L6i0efD3AaN+BDbw93UHu/R7pSfwhHkSCUUzK8zySfph8Ecf8yhYAs0yuOp3/ds X-Gm-Message-State: AOJu0YxhF6RpFLqjE3Vqm/4fbyY358CCQIQ2/7J/SsCNQxSsmPtPkcO+ Qninyi0+Jqg7kifIwmYtlWlTV0fGpe1A1wYF0sAQMvzaUdfB0xuY X-Google-Smtp-Source: AGHT+IGkQ09BVgHI1DnowCCqKMkEwUFloLKHKWTtL/sGl3j4U7VUMrYUG75/56+rg5mzCYn+UJBPZg== X-Received: by 2002:a05:6402:2c7:b0:565:8e3a:5add with SMTP id b7-20020a05640202c700b005658e3a5addmr3081349edx.15.1708874035054; Sun, 25 Feb 2024 07:13:55 -0800 (PST) Received: from localhost.localdomain (dynamic-2a02-3100-94e3-d600-0000-0000-0000-0e63.310.pool.telefonica.de. [2a02:3100:94e3:d600::e63]) by smtp.googlemail.com with ESMTPSA id f5-20020a50d545000000b005651ae4ac91sm1588450edj.41.2024.02.25.07.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Feb 2024 07:13:54 -0800 (PST) From: Martin Blumenstingl To: daniel.lezcano@linaro.org, tglx@linutronix.de Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, patrice.chotard@foss.st.com, linux-amlogic@lists.infradead.org, Martin Blumenstingl Subject: [PATCH v3 2/3] clocksource/drivers/arm_global_timer: Guard against division by zero Date: Sun, 25 Feb 2024 16:13:35 +0100 Message-ID: <20240225151336.2728533-3-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240225151336.2728533-1-martin.blumenstingl@googlemail.com> References: <20240225151336.2728533-1-martin.blumenstingl@googlemail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The result of the division of new_rate by gt_target_rate can be zero (if new_rate is smaller than gt_target_rate). Using that result as divisor without checking can result in a division by zero error. Guard against this by checking for a zero value earlier. While here, also change the psv variable to an unsigned long to make sure we don't overflow the datatype as all other types involved are also unsiged long. Signed-off-by: Martin Blumenstingl --- drivers/clocksource/arm_global_timer.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/clocksource/arm_global_timer.c b/drivers/clocksource/a= rm_global_timer.c index fb3ffd54c822..257599d682f0 100644 --- a/drivers/clocksource/arm_global_timer.c +++ b/drivers/clocksource/arm_global_timer.c @@ -291,18 +291,17 @@ static int gt_clk_rate_change_cb(struct notifier_bloc= k *nb, switch (event) { case PRE_RATE_CHANGE: { - int psv; + unsigned long psv; =20 - psv =3D DIV_ROUND_CLOSEST(ndata->new_rate, - gt_target_rate); - - if (abs(gt_target_rate - (ndata->new_rate / psv)) > MAX_F_ERR) + psv =3D DIV_ROUND_CLOSEST(ndata->new_rate, gt_target_rate); + if (!psv || + abs(gt_target_rate - (ndata->new_rate / psv)) > MAX_F_ERR) return NOTIFY_BAD; =20 psv--; =20 /* prescaler within legal range? */ - if (psv < 0 || psv > GT_CONTROL_PRESCALER_MAX) + if (psv > GT_CONTROL_PRESCALER_MAX) return NOTIFY_BAD; =20 /* --=20 2.44.0 From nobody Sun Feb 8 16:34:31 2026 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B22D51429F for ; Sun, 25 Feb 2024 15:13:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708874039; cv=none; b=Y2fY4dRPF1PoGcH+yz3EM6SVKPt4/3qaU2/VsV9gvXd6v9fPwyCJ05WpAj63CIrKj2ouEuGlyeoDvxbzdaeebqleLuWnlEnHrlhQyKH+ld4Quz8Cdsd78proCMZtSbj0Mh5idfOrprAki2CDDVLlO5TvANfEYSX/xvlqKnd41hM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708874039; c=relaxed/simple; bh=34fqCyhh3jqb4x7nW9o9+UwmXajc9gCRDRf8jM7y+IE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UHY4bPNDXH3LK/U0QMrTM5Cw9lH7MZnbXREO/dyqkvwOy+mUFmxraiXY21cFr8AAc4Nk+2CKv58ZjaTZj+U1nQG5xKJudsVKIXdYDujBvRzicTY1lVFf3guQwtfGIcOgrOX8ZF5mmB5U83pH+TsFGMs7FYjwhuPudMEJYNLhM9A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=SsA9qhLH; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="SsA9qhLH" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-564fe0273e4so1869652a12.2 for ; Sun, 25 Feb 2024 07:13:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1708874036; x=1709478836; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sRqUqyxM5BwYZ552SwBc1mEqP/KlJT+duufn8/IdCwI=; b=SsA9qhLHYGx8UzUziXrHHe1EskwMizR+bphY1PFueEBUqoCz/uDBfC+Na9SiBoCk0l MLUXfp7B0EFibQ1R/afHCkbI2mjPYdgNQ1lT0A76G95fBBE1prndGEzeBrjYuj75UTdJ ylzcI1dXD0JbNcJs5mlCalG5kHojD9UvQFmezCAEN7W0xR3OIhahuZYtqkZ1Ni2HgKoS f7mNPOjXmqdQv7zrz3spe5/0l/L9scvCwQOjRH3qa8QNFja7bWRbC3rR9GbTkGOw1508 6XmB178PdtSytoGiPJ93Pxz6PU2Iz3dvlRFDGtvNNv5SmgEW6K9UAGbDIyVSqXcUcOg9 SfWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708874036; x=1709478836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sRqUqyxM5BwYZ552SwBc1mEqP/KlJT+duufn8/IdCwI=; b=mxSdmHV40llMLqUQ7bXK4gDHqeaxK5v0v4leP4RtiXqBQeyj5OXiIHzDVb+J7IHUYD IAXoqokZYLLfMpXBXEHBp2X0StjdFhW7BVj9xk8pQw3Dq3Wmizkz+YKBg5u0yVbTs2Wp CiQt8kGj3odSaIIWOutKfBTaFsBfZMvA9uAuHhsAb5YUgrGlu20C34ik0PJeuo4daN5h 51DNqwmuM18fQJF8RxJP8ekN6ZyxXbXHjB0JKmw9fBgEVrt8t+ddI/m7nONTDKMPMMn1 F2SM/x/vaAyjkw48PczS6lUOqVZCDjbbDvDET02BahiU8OtchUK6U76K3kna5ea2zBrA 2tFQ== X-Forwarded-Encrypted: i=1; AJvYcCVZsx/6gukg32iilNSGrP/hZwx7VKgVo44AeNNE1xgorn1b+ZEuMZNeSp6ogc1k6nr2Opt/69UirTqcNKgZ5OzP/KXEC3Ud6wUs4W4w X-Gm-Message-State: AOJu0YxCGrloBiIQywWB1RwT1i3E4rImosWH9OPwnIyRwa7DKijyGvpp 9gvuJKZU2D/vNokslW4yvRfMKYvXDa7FdYzcLClSQB18qIbBPihDvO7KU34o X-Google-Smtp-Source: AGHT+IH/nJnTUXso9xp8HekK1IjRVINalYAkwjwR4Jk7//muUbYijeHEbdBfJgf96o6NZ6fJ/+967A== X-Received: by 2002:aa7:da09:0:b0:565:cd29:dd30 with SMTP id r9-20020aa7da09000000b00565cd29dd30mr1166096eds.30.1708874035965; Sun, 25 Feb 2024 07:13:55 -0800 (PST) Received: from localhost.localdomain (dynamic-2a02-3100-94e3-d600-0000-0000-0000-0e63.310.pool.telefonica.de. [2a02:3100:94e3:d600::e63]) by smtp.googlemail.com with ESMTPSA id f5-20020a50d545000000b005651ae4ac91sm1588450edj.41.2024.02.25.07.13.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Feb 2024 07:13:55 -0800 (PST) From: Martin Blumenstingl To: daniel.lezcano@linaro.org, tglx@linutronix.de Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, patrice.chotard@foss.st.com, linux-amlogic@lists.infradead.org, Martin Blumenstingl Subject: [PATCH v3 3/3] clocksource/drivers/arm_global_timer: Simplify prescaler register access Date: Sun, 25 Feb 2024 16:13:36 +0100 Message-ID: <20240225151336.2728533-4-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240225151336.2728533-1-martin.blumenstingl@googlemail.com> References: <20240225151336.2728533-1-martin.blumenstingl@googlemail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use GENMASK() to define the prescaler mask and make the whole driver use the mask (together with helpers such as FIELD_{GET,PREP,FIT}) instead of needing an additional shift and max value constant. Signed-off-by: Martin Blumenstingl --- drivers/clocksource/arm_global_timer.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/clocksource/arm_global_timer.c b/drivers/clocksource/a= rm_global_timer.c index 257599d682f0..8a82b60b467b 100644 --- a/drivers/clocksource/arm_global_timer.c +++ b/drivers/clocksource/arm_global_timer.c @@ -9,6 +9,7 @@ =20 #include #include +#include #include #include #include @@ -31,10 +32,7 @@ #define GT_CONTROL_COMP_ENABLE BIT(1) /* banked */ #define GT_CONTROL_IRQ_ENABLE BIT(2) /* banked */ #define GT_CONTROL_AUTO_INC BIT(3) /* banked */ -#define GT_CONTROL_PRESCALER_SHIFT 8 -#define GT_CONTROL_PRESCALER_MAX 0xFF -#define GT_CONTROL_PRESCALER_MASK (GT_CONTROL_PRESCALER_MAX << \ - GT_CONTROL_PRESCALER_SHIFT) +#define GT_CONTROL_PRESCALER_MASK GENMASK(15, 8) =20 #define GT_INT_STATUS 0x0c #define GT_INT_STATUS_EVENT_FLAG BIT(0) @@ -248,7 +246,7 @@ static void gt_write_presc(u32 psv) =20 reg =3D readl(gt_base + GT_CONTROL); reg &=3D ~GT_CONTROL_PRESCALER_MASK; - reg |=3D psv << GT_CONTROL_PRESCALER_SHIFT; + reg |=3D FIELD_PREP(GT_CONTROL_PRESCALER_MASK, psv); writel(reg, gt_base + GT_CONTROL); } =20 @@ -257,8 +255,7 @@ static u32 gt_read_presc(void) u32 reg; =20 reg =3D readl(gt_base + GT_CONTROL); - reg &=3D GT_CONTROL_PRESCALER_MASK; - return reg >> GT_CONTROL_PRESCALER_SHIFT; + return FIELD_GET(GT_CONTROL_PRESCALER_MASK, reg); } =20 static void __init gt_delay_timer_init(void) @@ -273,9 +270,9 @@ static int __init gt_clocksource_init(void) writel(0, gt_base + GT_COUNTER0); writel(0, gt_base + GT_COUNTER1); /* set prescaler and enable timer on all the cores */ - writel(((CONFIG_ARM_GT_INITIAL_PRESCALER_VAL - 1) << - GT_CONTROL_PRESCALER_SHIFT) - | GT_CONTROL_TIMER_ENABLE, gt_base + GT_CONTROL); + writel(FIELD_PREP(GT_CONTROL_PRESCALER_MASK, + CONFIG_ARM_GT_INITIAL_PRESCALER_VAL - 1) | + GT_CONTROL_TIMER_ENABLE, gt_base + GT_CONTROL); =20 #ifdef CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK sched_clock_register(gt_sched_clock_read, 64, gt_target_rate); @@ -301,7 +298,7 @@ static int gt_clk_rate_change_cb(struct notifier_block = *nb, psv--; =20 /* prescaler within legal range? */ - if (psv > GT_CONTROL_PRESCALER_MAX) + if (!FIELD_FIT(GT_CONTROL_PRESCALER_MASK, psv)) return NOTIFY_BAD; =20 /* --=20 2.44.0