All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roman Bogorodskiy <bogorodskiy@gmail.com>
To: Brad Smith <brad@comstyle.com>
Cc: qemu-devel@nongnu.org, Michael Roth <michael.roth@amd.com>,
	Kostiantyn Kostiuk <kkostiuk@redhat.com>
Subject: Re: [PATCH] qga: do not attempt running hwclock(8) on BSD
Date: Thu, 15 Oct 2026 16:29:26 +0200	[thread overview]
Message-ID: <atDjRrg5ZFvKWE69@tulp> (raw)
In-Reply-To: <fbc18336-5e10-48b4-978e-8d6078790b24@comstyle.com>

  Brad Smith wrote:

> On 2026-10-14 7:20 a.m., Roman Bogorodskiy wrote:
> > Currently, qmp_guest_set_time() sets system time using
> > the settimeofday(2) system call and then runs the hwclock(8)
> > util to set hardware time.
> > 
> > BSDs do not ship hwclock(8), so current implementation
> > always fails while trying to run it.
> > 
> > Update the code not to run it on BSD. The settimeofday(2)
> > call sets both system and hardware time on these systems.
> > For example, on FreeBSD settimeofday() calls settime()
> > which calls resettodr() [1] which updates RTC clock [2].
> > It is similar on OpenBSD and NetBSD, though implementations
> > differ a bit.
> > 
> > Additional detail: on FreeBSD RTC clock setting can be
> > disabled with the `machdep.disable_rtc_set` sysctl.
> > As we cannot do anything about it, do not handle that
> > case separately.
> > 
> > BSD systems do not provide a common utility equivalent
> > to hwclock -s, so report an unsupported operation when
> > no time is supplied.
> > 
> > 1: https://cgit.freebsd.org/src/tree/sys/kern/kern_time.c
> > 2: https://cgit.freebsd.org/src/tree/sys/kern/subr_rtc.c
> > 
> > Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
> > ---
> >   qga/commands-posix.c | 14 ++++++++++++++
> >   1 file changed, 14 insertions(+)
> > 
> > diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> > index 837e285b6d..f3d18e6dcd 100644
> > --- a/qga/commands-posix.c
> > +++ b/qga/commands-posix.c
> > @@ -322,6 +322,20 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
> >           }
> >       }
> > +#if defined(CONFIG_BSD)
> > +    /*
> > +     * BSDs (FreeBSD, OpenBSD, NetBSD) do not have the hwclock(8) tool.
> > +     * These systems update hardware clock when settimeofday() sets
> > +     * system time, so no additional actions are needed.
> > +     * Setting system time from RTC is not supported.
> > +     */
> > +    if (!has_time) {
> > +        error_setg(errp, "Setting system time from RTC is not supported");
> > +    }
> > +
> > +    return;
> > +#endif
> > +
> >       /* Now, if user has passed a time to set and the system time is set, we
> >        * just need to synchronize the hardware clock. However, if no time was
> >        * passed, user is requesting the opposite: set the system time from the
> 
> The command is Linux specific so it shouldn't be checking CONFIG_BSD. It
> should be
> using something like #ifndef CONFIG_LINUX.
> 

Updated in v2. Actually, I have started with that, but later changed to
CONFIG_BSD check because I tried to avoid testing this change on
Solaris. Anyway, just tried this change on OpenIndiana and it works as
expected.


      reply	other threads:[~2026-10-15 14:30 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-14 11:20 [PATCH] qga: do not attempt running hwclock(8) on BSD Roman Bogorodskiy
2026-10-14 20:12 ` Brad Smith
2026-10-15 14:29   ` Roman Bogorodskiy [this message]

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=atDjRrg5ZFvKWE69@tulp \
    --to=bogorodskiy@gmail.com \
    --cc=brad@comstyle.com \
    --cc=kkostiuk@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=qemu-devel@nongnu.org \
    /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.