From: David Gibson <david@gibson.dropbear.id.au>
To: agraf@suse.de, aik@ozlabs.ru, mdroth@us.ibm.com
Cc: paulus@samba.org, qemu-devel@nongnu.org,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH 4/5] pseries: Export /machine "rtc-time" property
Date: Tue, 16 Dec 2014 11:43:47 +1100 [thread overview]
Message-ID: <1418690628-20652-5-git-send-email-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <1418690628-20652-1-git-send-email-david@gibson.dropbear.id.au>
On x86, the guest's RTC can be read with QMP via the "rtc-time" property
on the /machine object. This is due to an explicit QOM alias being set up
by the mc146818rtc driver, and doesn't work on other targets.
This extends the pseries RTAS RTC to populate that property, for improved
management compatibility with x86 guests.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
hw/ppc/spapr_rtc.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/hw/ppc/spapr_rtc.c b/hw/ppc/spapr_rtc.c
index fac0017..13e74f1 100644
--- a/hw/ppc/spapr_rtc.c
+++ b/hw/ppc/spapr_rtc.c
@@ -28,6 +28,7 @@
#include "cpu.h"
#include "hw/ppc/spapr.h"
#include "qapi-event.h"
+#include "qapi/visitor.h"
void spapr_rtc_read(sPAPREnvironment *spapr, struct tm *tm, uint32_t *ns)
{
@@ -87,10 +88,58 @@ static void rtas_set_time_of_day(PowerPCCPU *cpu, sPAPREnvironment *spapr,
rtas_st(rets, 0, RTAS_OUT_SUCCESS);
}
+static void spapr_qom_rtc_time(Object *obj, Visitor *v, void *opaque,
+ const char *name, Error **errp)
+{
+ Error *err = NULL;
+ sPAPREnvironment *spapr = opaque;
+ struct tm current_tm;
+
+ spapr_rtc_read(spapr, ¤t_tm, NULL);
+
+ visit_start_struct(v, NULL, "struct tm", name, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int32(v, ¤t_tm.tm_year, "tm_year", &err);
+ if (err) {
+ goto out_end;
+ }
+ visit_type_int32(v, ¤t_tm.tm_mon, "tm_mon", &err);
+ if (err) {
+ goto out_end;
+ }
+ visit_type_int32(v, ¤t_tm.tm_mday, "tm_mday", &err);
+ if (err) {
+ goto out_end;
+ }
+ visit_type_int32(v, ¤t_tm.tm_hour, "tm_hour", &err);
+ if (err) {
+ goto out_end;
+ }
+ visit_type_int32(v, ¤t_tm.tm_min, "tm_min", &err);
+ if (err) {
+ goto out_end;
+ }
+ visit_type_int32(v, ¤t_tm.tm_sec, "tm_sec", &err);
+ if (err) {
+ goto out_end;
+ }
+out_end:
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_struct(v, errp);
+out:
+ error_propagate(errp, err);
+}
+
void spapr_rtc_init(void)
{
spapr_rtas_register(RTAS_GET_TIME_OF_DAY, "get-time-of-day",
rtas_get_time_of_day);
spapr_rtas_register(RTAS_SET_TIME_OF_DAY, "set-time-of-day",
rtas_set_time_of_day);
+
+ object_property_add(qdev_get_machine(), "rtc-time", "struct tm",
+ spapr_qom_rtc_time, NULL, NULL, spapr, NULL);
}
--
2.1.0
next prev parent reply other threads:[~2014-12-16 0:44 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-16 0:43 [Qemu-devel] [PATCH 0/5] pseries: Fix and extend PAPR RTC implementation David Gibson
2014-12-16 0:43 ` [Qemu-devel] [PATCH 1/5] pseries: Move sPAPR RTC code into its own file David Gibson
2014-12-16 0:59 ` Alexander Graf
2014-12-16 1:24 ` David Gibson
2014-12-16 9:41 ` Alexander Graf
2014-12-18 5:43 ` David Gibson
2014-12-18 23:36 ` Alexander Graf
2014-12-19 5:39 ` David Gibson
2014-12-19 9:59 ` Alexander Graf
2014-12-16 0:43 ` [Qemu-devel] [PATCH 2/5] pseries: Add spapr_rtc_read() helper function David Gibson
2014-12-16 1:01 ` Alexander Graf
2014-12-16 1:25 ` David Gibson
2014-12-16 0:43 ` [Qemu-devel] [PATCH 3/5] pseries: Add more parameter validation in RTAS time of day functions David Gibson
2014-12-16 0:43 ` David Gibson [this message]
2014-12-16 1:04 ` [Qemu-devel] [PATCH 4/5] pseries: Export /machine "rtc-time" property Alexander Graf
2014-12-16 2:18 ` David Gibson
2014-12-16 9:42 ` Alexander Graf
2014-12-16 0:43 ` [Qemu-devel] [PATCH 5/5] pseries: Make RTAS time of day functions respect -rtc options David Gibson
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=1418690628-20652-5-git-send-email-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=mdroth@us.ibm.com \
--cc=paulus@samba.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).