All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org, llvm@lists.linux.dev
Cc: Anna-Maria Behnsen <anna-maria@linutronix.de>,
	Frederic Weisbecker <frederic@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: [rfc, PATCH v1 1/1] hrtimers: Refactor hrtimer_clock_to_base_table initialisation
Date: Mon, 10 Feb 2025 10:26:02 +0200	[thread overview]
Message-ID: <20250210082907.4059064-1-andriy.shevchenko@linux.intel.com> (raw)

Clang complains about overlapped initialisers in the
hrtimer_clock_to_base_table definition. With `make W=1` and
CONFIG_WERROR=y (which is default nowadays) this breaks
the build:

  CC      kernel/time/hrtimer.o
kernel/time/hrtimer.c:124:21: error: initializer overrides prior initialization of this subobject [-Werror,-Winitializer-overrides]
  124 |         [CLOCK_REALTIME]        = HRTIMER_BASE_REALTIME,

kernel/time/hrtimer.c:122:27: note: previous initialization is here
  122 |         [0 ... MAX_CLOCKS - 1]  = HRTIMER_MAX_CLOCK_BASES,

(and similar for CLOCK_MONOTONIC, CLOCK_BOOTTIME, and CLOCK_TAI).

Refactor hrtimer_clock_to_base_table initialisation to make
the compiler happy.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---

TBH, I don't like much this solution as it diminishes the point of that
override to be there in the first place. I haven't found better alternatives
as they may be too intrusive. Another one might be to remove this table,
but in such case the replacement might add latency to some cases (although
I haven't checked the generated code for, for example, switch-case approach).
In any case this is an rfc, I would be glad if somebody fixes this in a better
way.

 kernel/time/hrtimer.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index deb1aa32814e..8ec6ff36b9ad 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -118,13 +118,21 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =
 };
 
 static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
-	/* Make sure we catch unsupported clockids */
-	[0 ... MAX_CLOCKS - 1]	= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_REALTIME]			= HRTIMER_BASE_REALTIME,
+	[CLOCK_MONOTONIC]			= HRTIMER_BASE_MONOTONIC,
+	[CLOCK_PROCESS_CPUTIME_ID]		= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_THREAD_CPUTIME_ID]		= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_MONOTONIC_RAW]			= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_REALTIME_COARSE]			= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_MONOTONIC_COARSE]		= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_BOOTTIME]			= HRTIMER_BASE_BOOTTIME,
+	[CLOCK_REALTIME_ALARM]			= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_BOOTTIME_ALARM]			= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_SGI_CYCLE]			= HRTIMER_MAX_CLOCK_BASES,
+	[CLOCK_TAI]				= HRTIMER_BASE_TAI,
 
-	[CLOCK_REALTIME]	= HRTIMER_BASE_REALTIME,
-	[CLOCK_MONOTONIC]	= HRTIMER_BASE_MONOTONIC,
-	[CLOCK_BOOTTIME]	= HRTIMER_BASE_BOOTTIME,
-	[CLOCK_TAI]		= HRTIMER_BASE_TAI,
+	/* Make sure we catch unsupported clockids */
+	[CLOCK_TAI + 1 ... MAX_CLOCKS - 1]	= HRTIMER_MAX_CLOCK_BASES,
 };
 
 static inline bool hrtimer_base_is_online(struct hrtimer_cpu_base *base)
-- 
2.45.1.3035.g276e886db78b


             reply	other threads:[~2025-02-10  8:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-10  8:26 Andy Shevchenko [this message]
2025-02-11 12:18 ` [rfc, PATCH v1 1/1] hrtimers: Refactor hrtimer_clock_to_base_table initialisation Andy Shevchenko
2025-02-13 21:39 ` Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250210082907.4059064-1-andriy.shevchenko@linux.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=anna-maria@linutronix.de \
    --cc=frederic@kernel.org \
    --cc=justinstitt@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=morbo@google.com \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.