mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 04:04:43 +01:00
ptp: ptp_vmclock: return TAI not UTC
To output UTC would involve complex calculations about whether the time elapsed since the reference time has crossed the end of the month when a leap second takes effect. I've prototyped that, but it made me sad. Much better to report TAI, which is what PHCs should do anyway. And much much simpler. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Signed-off-by: Babis Chalios <bchalios@amazon.es> Tested-by: Takahiro Itazuri <itazur@amazon.com> Link: https://patch.msgid.link/20260130173704.12575-8-itazur@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
ac1e740492
commit
562f59fe32
1 changed files with 5 additions and 5 deletions
|
|
@ -83,13 +83,13 @@ static uint64_t mul_u64_u64_shr_add_u64(uint64_t *res_hi, uint64_t delta,
|
|||
|
||||
static bool tai_adjust(struct vmclock_abi *clk, uint64_t *sec)
|
||||
{
|
||||
if (likely(clk->time_type == VMCLOCK_TIME_UTC))
|
||||
if (clk->time_type == VMCLOCK_TIME_TAI)
|
||||
return true;
|
||||
|
||||
if (clk->time_type == VMCLOCK_TIME_TAI &&
|
||||
if (clk->time_type == VMCLOCK_TIME_UTC &&
|
||||
(le64_to_cpu(clk->flags) & VMCLOCK_FLAG_TAI_OFFSET_VALID)) {
|
||||
if (sec)
|
||||
*sec += (int16_t)le16_to_cpu(clk->tai_offset_sec);
|
||||
*sec -= (int16_t)le16_to_cpu(clk->tai_offset_sec);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -350,9 +350,9 @@ static struct ptp_clock *vmclock_ptp_register(struct device *dev,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* Only UTC, or TAI with offset */
|
||||
/* Accept TAI directly, or UTC with valid offset for conversion to TAI */
|
||||
if (!tai_adjust(st->clk, NULL)) {
|
||||
dev_info(dev, "vmclock does not provide unambiguous UTC\n");
|
||||
dev_info(dev, "vmclock does not provide unambiguous time\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue