<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hi All,</p>
<p>Sending this email requesting the feedback on the usage/need of
"TimeOwner" that is part of phosphor-timemanager.</p>
<p>phosphor-timemanager is a time keeping daemon on the BMC that
uses BMC's RTC to hold the time. It uses systemd-timesyncd and
systemd-timedated.<br>
</p>
<p>There are 2 D-Bus objects that implement
"phosphor-dbus-interfaces/xyz/openbmc_project/Time/EpochTime.interface.yaml"
and is managed by a common manager.<br>
</p>
<p>/xyz/openbmc_projects/time/bmc : Used when the request is coming
in via Redfish<br>
/xyz/openbmc_projects/time/host : Used when the request is inband
with IPMI_SET_SEL_TIME and IPMI_GET_SEL_TIME + PLDM ones.<br>
</p>
<p>timemanager consumes 2 settings, namely, TimeSyncMethod and
TimeOwner defined in
phosphor-dbus-interfaces/xyz/openbmc_project/Time/.</p>
<p>TimeSyncMethod: Indicates whether the NTP must be used or should
it be settable by the user.<br>
For example: If the time set request comes and the
Method was set to NTP, then the write request would be ignored.<br>
</p>
<p>TimeOwner: This is where we have seen the community telling why
do we even have such a thing. Talking to the UX team, looks like,
the customers have had difficulty understanding this.</p>
<p>There are 4 values for TimeOwners: ( Works irrespective of acting
on time/bmc or time/host D-Bus objects )</p>
<p><font color="#3366ff"><i>BMC : BMC is the owner of the time. So,
Host <b>can not </b>set the time on BMC. Inband SET_SEL_TIME
would result in error.</i><i><br>
</i><i><br>
</i><font color="#ff6666"><i>HOST: Host is the owner of the
time. So, only the host <b>can set</b> the time on BMC. Any
external Redfish SET requests would result in error</i></font></font></p>
<p><font color="#3366ff"><i>SPLIT: This is where we could achieve
independent times for BMC and Host. This is a combination of
BMC + HOST. Both BMC and HOST can set<br>
the time. Host time is maintained as an offset into
BMC's time. So, whenever the Host sends the time request, the
offset is<br>
factored into</i><i> BMC's time and then the response
would be returned.</i><i><br>
</i><i><br>
</i><font color="#ff6600"><i>BOTH : BMC and/or HOST can SET the
time. Whoever did SET it last, will be maintained.<br>
</i></font></font></p>
<p>Personally, I have worked on github issue from Redhat when there
were failures setting the time from OS using "hwclock" since the
Owner was set to [BMC]. The solution was to [poweroff] the system,
change the Owner to [HOST/SPLIT] and boot back.</p>
<p>Note: Since these policies are user settable, they can be changed
at anytime. However, they will not be taken into account until the
system is booted again.</p>
<p><b>Why did we even have this ?</b>: During the initial
development of timemanager, the thought was that, Host would not
trust the BMC and hence we want a way where BMC and Host can
maintain their own time</p>
<p><b>Do we need this going forward ?</b>: I am being asked by UX
team about the need of this and I mentioned I would get the
community feedback on this. Although, I feel this level of
granularity gives control over how we can manage time, it would
not justify the complexity if the customers don't appreciate it.
Removing the TimeOwner would make the code a lot simpler.<br>
</p>
<p>Please help with your votes.</p>
<p>Thank you,</p>
<p>!! Vishwa !!<br>
</p>
</body>
</html>