diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2019-12-16 10:35:33 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2019-12-16 10:35:33 +0000 |
| commit | 7697ac55fcc6178fd8fd8aa22baed13a0c8ca942 (patch) | |
| tree | a2074ffa2e47a353f385d079bf5c343ab7dea64e /qga/commands-posix.c | |
| parent | 084a398bf8aa7634738e6c6c0103236ee1b3b72f (diff) | |
| parent | 5c6096e5656d34f5414834e2e2104646294976fe (diff) | |
| download | focaccia-qemu-7697ac55fcc6178fd8fd8aa22baed13a0c8ca942.tar.gz focaccia-qemu-7697ac55fcc6178fd8fd8aa22baed13a0c8ca942.zip | |
Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20191214-2' into staging
First s390x update for 5.0: - compat machines (also for other architectures) - cleanups and fixes in reset handling - fence off guest-set-time, as we have no hwclock - fix some misuses of the error API - further cleanups # gpg: Signature made Sat 14 Dec 2019 09:33:17 GMT # gpg: using RSA key C3D0D66DC3624FF6A8C018CEDECF6B93C6F02FAF # gpg: issuer "cohuck@redhat.com" # gpg: Good signature from "Cornelia Huck <conny@cornelia-huck.de>" [unknown] # gpg: aka "Cornelia Huck <huckc@linux.vnet.ibm.com>" [full] # gpg: aka "Cornelia Huck <cornelia.huck@de.ibm.com>" [full] # gpg: aka "Cornelia Huck <cohuck@kernel.org>" [unknown] # gpg: aka "Cornelia Huck <cohuck@redhat.com>" [unknown] # Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0 18CE DECF 6B93 C6F0 2FAF * remotes/cohuck/tags/s390x-20191214-2: qga: fence guest-set-time if hwclock not available s390x/tcg: clear local interrupts on reset normal s390x/cpumodel: Fix query-cpu-definitions error API violations s390x/cpumodel: Fix query-cpu-model-FOO error API violations s390x/cpumodel: Fix realize() error API violations s390x/cpumodel: Fix feature property error API violations s390x/event-facility: Fix realize() error API violations s390x: Fix cpu normal reset ri clearing s390x: kvm: Make kvm_sclp_service_call void s390x: Beautify diag308 handling s390x: Move clear reset s390x: Move initial reset s390x: Move reset normal to shared reset handler s390x: Don't do a normal reset on the initial cpu hw: add compat machines for 5.0 vfio-ccw: Fix error message Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'qga/commands-posix.c')
| -rw-r--r-- | qga/commands-posix.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 1c1a165dae..0be301a4ea 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -156,6 +156,17 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp) pid_t pid; Error *local_err = NULL; struct timeval tv; + static const char hwclock_path[] = "/sbin/hwclock"; + static int hwclock_available = -1; + + if (hwclock_available < 0) { + hwclock_available = (access(hwclock_path, X_OK) == 0); + } + + if (!hwclock_available) { + error_setg(errp, QERR_UNSUPPORTED); + return; + } /* If user has passed a time, validate and set it. */ if (has_time) { @@ -195,7 +206,7 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp) /* Use '/sbin/hwclock -w' to set RTC from the system time, * or '/sbin/hwclock -s' to set the system time from RTC. */ - execle("/sbin/hwclock", "hwclock", has_time ? "-w" : "-s", + execle(hwclock_path, "hwclock", has_time ? "-w" : "-s", NULL, environ); _exit(EXIT_FAILURE); } else if (pid < 0) { |