* [PATCH] x86/init: Initialize wall clock in get_rtc_noop()
@ 2026-08-31 8:25 Naman Jain
2026-09-09 18:42 ` Dexuan Cui
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Naman Jain @ 2026-08-31 8:25 UTC (permalink / raw)
To: tglx, mingo, bp, dave.hansen, x86
Cc: hpa, decui, namjain, yunhong.jiang, ricardo.neri-calderon,
rahul.tanwar, linux-kernel, linux-hyperv, stable
get_rtc_noop() is used when an RTC is unavailable, but leaves its output
argument untouched. When CONFIG_INIT_STACK_ALL_ZERO is not enabled,
timekeeping_init() may therefore receive a nonzero invalid persistent
clock value and warn:
"Persistent clock returned invalid value"
Initialize the output to zero, the documented representation of an
unsupported persistent clock.
Fixes: c311ed6183f4 ("x86/init: Allow DT configured systems to disable RTC at boot time")
Cc: stable@vger.kernel.org
Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
---
arch/x86/kernel/x86_init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
index 252c5827d0634..3b9b41820c84c 100644
--- a/arch/x86/kernel/x86_init.c
+++ b/arch/x86/kernel/x86_init.c
@@ -37,7 +37,7 @@ static void iommu_shutdown_noop(void) { }
bool __init bool_x86_init_noop(void) { return false; }
void x86_op_int_noop(int cpu) { }
int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; }
-void get_rtc_noop(struct timespec64 *now) { }
+void get_rtc_noop(struct timespec64 *now) { *now = (struct timespec64){0}; }
static __initconst const struct of_device_id of_cmos_match[] = {
{ .compatible = "motorola,mc146818" },
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread* RE: [PATCH] x86/init: Initialize wall clock in get_rtc_noop()
2026-08-31 8:25 [PATCH] x86/init: Initialize wall clock in get_rtc_noop() Naman Jain
@ 2026-09-09 18:42 ` Dexuan Cui
2026-09-11 4:23 ` Hardik Garg
2026-09-12 3:35 ` Roman Kisel
2 siblings, 0 replies; 5+ messages in thread
From: Dexuan Cui @ 2026-09-09 18:42 UTC (permalink / raw)
To: Naman Jain, tglx, mingo, bp, dave.hansen, x86
Cc: hpa, yunhong.jiang, ricardo.neri-calderon, rahul.tanwar,
linux-kernel, linux-hyperv, stable
> From: Naman Jain <namjain@linux.microsoft.com>
> Sent: Monday, August 31, 2026 1:25 AM
LGTM.
Reviewed-by: Dexuan Cui <decui@microsoft.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/init: Initialize wall clock in get_rtc_noop()
2026-08-31 8:25 [PATCH] x86/init: Initialize wall clock in get_rtc_noop() Naman Jain
2026-09-09 18:42 ` Dexuan Cui
@ 2026-09-11 4:23 ` Hardik Garg
2026-09-12 3:35 ` Roman Kisel
2 siblings, 0 replies; 5+ messages in thread
From: Hardik Garg @ 2026-09-11 4:23 UTC (permalink / raw)
To: namjain
Cc: bp, dave.hansen, decui, hpa, linux-hyperv, linux-kernel, mingo,
rahul.tanwar, ricardo.neri-calderon, stable, tglx, x86,
yunhong.jiang
Reviewed-by: Hardik Garg <hargar@linux.microsoft.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/init: Initialize wall clock in get_rtc_noop()
2026-08-31 8:25 [PATCH] x86/init: Initialize wall clock in get_rtc_noop() Naman Jain
2026-09-09 18:42 ` Dexuan Cui
2026-09-11 4:23 ` Hardik Garg
@ 2026-09-12 3:35 ` Roman Kisel
2026-09-14 11:31 ` Naman Jain
2 siblings, 1 reply; 5+ messages in thread
From: Roman Kisel @ 2026-09-12 3:35 UTC (permalink / raw)
To: Naman Jain
Cc: glx, mingo, bp, dave.hansen, x86, hpa, decui, yunhong.jiang,
ricardo.neri-calderon, rahul.tanwar, linux-kernel, linux-hyperv,
stable
On Mon, Aug 31, 2026 at 08:25:28AM +0000, Naman Jain wrote:
> get_rtc_noop() is used when an RTC is unavailable, but leaves its output
> argument untouched. When CONFIG_INIT_STACK_ALL_ZERO is not enabled,
> timekeeping_init() may therefore receive a nonzero invalid persistent
> clock value and warn:
> "Persistent clock returned invalid value"
>
> Initialize the output to zero, the documented representation of an
> unsupported persistent clock.
>
> Fixes: c311ed6183f4 ("x86/init: Allow DT configured systems to disable RTC at boot time")
> Cc: stable@vger.kernel.org
> Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
> ---
> arch/x86/kernel/x86_init.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
> index 252c5827d0634..3b9b41820c84c 100644
> --- a/arch/x86/kernel/x86_init.c
> +++ b/arch/x86/kernel/x86_init.c
> @@ -37,7 +37,7 @@ static void iommu_shutdown_noop(void) { }
> bool __init bool_x86_init_noop(void) { return false; }
> void x86_op_int_noop(int cpu) { }
> int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; }
> -void get_rtc_noop(struct timespec64 *now) { }
> +void get_rtc_noop(struct timespec64 *now) { *now = (struct timespec64){0}; }
Hi Naman,
Could be
*now = (struct timespec64){};
to save a byte :)
LGTM.
Reviewed-by: Roman Kisel <vdso@mailbox.org>
>
> static __initconst const struct of_device_id of_cmos_match[] = {
> { .compatible = "motorola,mc146818" },
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] x86/init: Initialize wall clock in get_rtc_noop()
2026-09-12 3:35 ` Roman Kisel
@ 2026-09-14 11:31 ` Naman Jain
0 siblings, 0 replies; 5+ messages in thread
From: Naman Jain @ 2026-09-14 11:31 UTC (permalink / raw)
To: Roman Kisel
Cc: glx, mingo, bp, dave.hansen, x86, hpa, decui, yunhong.jiang,
ricardo.neri-calderon, rahul.tanwar, linux-kernel, linux-hyperv,
stable
On 9/12/2026 9:05 AM, Roman Kisel wrote:
> On Mon, Aug 31, 2026 at 08:25:28AM +0000, Naman Jain wrote:
>> get_rtc_noop() is used when an RTC is unavailable, but leaves its output
>> argument untouched. When CONFIG_INIT_STACK_ALL_ZERO is not enabled,
>> timekeeping_init() may therefore receive a nonzero invalid persistent
>> clock value and warn:
>> "Persistent clock returned invalid value"
>>
>> Initialize the output to zero, the documented representation of an
>> unsupported persistent clock.
>>
>> Fixes: c311ed6183f4 ("x86/init: Allow DT configured systems to disable RTC at boot time")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
>> ---
>> arch/x86/kernel/x86_init.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
>> index 252c5827d0634..3b9b41820c84c 100644
>> --- a/arch/x86/kernel/x86_init.c
>> +++ b/arch/x86/kernel/x86_init.c
>> @@ -37,7 +37,7 @@ static void iommu_shutdown_noop(void) { }
>> bool __init bool_x86_init_noop(void) { return false; }
>> void x86_op_int_noop(int cpu) { }
>> int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; }
>> -void get_rtc_noop(struct timespec64 *now) { }
>> +void get_rtc_noop(struct timespec64 *now) { *now = (struct timespec64){0}; }
>
> Hi Naman,
>
> Could be
>
> *now = (struct timespec64){};
>
> to save a byte :)
hi Roman,
Thanks for reviewing.
Tianyu pointed out offline that this is handled in yet another way in
jailhouse code:
arch/x86/kernel/jailhouse.c
static void jailhouse_get_wallclock(struct timespec64 *now)
{
memset(now, 0, sizeof(now));
}
Regards,
Naman
>
> LGTM.
> Reviewed-by: Roman Kisel <vdso@mailbox.org>
>
>>
>> static __initconst const struct of_device_id of_cmos_match[] = {
>> { .compatible = "motorola,mc146818" },
>> --
>> 2.43.0
>>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-09-14 11:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-31 8:25 [PATCH] x86/init: Initialize wall clock in get_rtc_noop() Naman Jain
2026-09-09 18:42 ` Dexuan Cui
2026-09-11 4:23 ` Hardik Garg
2026-09-12 3:35 ` Roman Kisel
2026-09-14 11:31 ` Naman Jain
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®