[Qemu-devel] [PATCH v2] xen: Emit RTC_CHANGE upon TIMEOFFSET ioreq

Ross Lagerwall posted 1 patch 6 years, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170823132505.1505-1-ross.lagerwall@citrix.com
Test FreeBSD passed
Test checkpatch passed
Test docker passed
Test s390x passed
hw/i386/xen/xen-hvm.c | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH v2] xen: Emit RTC_CHANGE upon TIMEOFFSET ioreq
Posted by Ross Lagerwall 6 years, 7 months ago
When the guest writes to the RTC, Xen emulates it and broadcasts a
TIMEOFFSET ioreq. Emit an RTC_CHANGE QMP event to all QMP monitors when
this happens rather than ignoring it so that something useful can be
done with the information. This is the same event that QEMU generates
when it emulates the RTC.

This patch by itself doesn't affect any of the toolstacks that I
checked; the libxl toolstack doesn't currently handle this event nor
does the XAPI toolstack. If nothing handles the event, it is simply
ignored. We plan on modifying XAPI to handle it.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---

Changed in v2:
* Expanded commit message.

 hw/i386/xen/xen-hvm.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index d9ccd5d..ffd20dc 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -16,6 +16,7 @@
 #include "hw/i386/apic-msidef.h"
 #include "hw/xen/xen_common.h"
 #include "hw/xen/xen_backend.h"
+#include "qapi-event.h"
 #include "qmp-commands.h"
 
 #include "qemu/error-report.h"
@@ -967,6 +968,7 @@ static void handle_ioreq(XenIOState *state, ioreq_t *req)
             handle_vmport_ioreq(state, req);
             break;
         case IOREQ_TYPE_TIMEOFFSET:
+            qapi_event_send_rtc_change((int64_t)req->data, &error_abort);
             break;
         case IOREQ_TYPE_INVALIDATE:
             xen_invalidate_map_cache();
-- 
2.9.5


Re: [Qemu-devel] [PATCH v2] xen: Emit RTC_CHANGE upon TIMEOFFSET ioreq
Posted by Stefano Stabellini 6 years, 7 months ago
On Wed, 23 Aug 2017, Ross Lagerwall wrote:
> When the guest writes to the RTC, Xen emulates it and broadcasts a
> TIMEOFFSET ioreq. Emit an RTC_CHANGE QMP event to all QMP monitors when
> this happens rather than ignoring it so that something useful can be
> done with the information. This is the same event that QEMU generates
> when it emulates the RTC.
> 
> This patch by itself doesn't affect any of the toolstacks that I
> checked; the libxl toolstack doesn't currently handle this event nor
> does the XAPI toolstack. If nothing handles the event, it is simply
> ignored. We plan on modifying XAPI to handle it.
> 
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

I queued it up.

> ---
> 
> Changed in v2:
> * Expanded commit message.
> 
>  hw/i386/xen/xen-hvm.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index d9ccd5d..ffd20dc 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -16,6 +16,7 @@
>  #include "hw/i386/apic-msidef.h"
>  #include "hw/xen/xen_common.h"
>  #include "hw/xen/xen_backend.h"
> +#include "qapi-event.h"
>  #include "qmp-commands.h"
>  
>  #include "qemu/error-report.h"
> @@ -967,6 +968,7 @@ static void handle_ioreq(XenIOState *state, ioreq_t *req)
>              handle_vmport_ioreq(state, req);
>              break;
>          case IOREQ_TYPE_TIMEOFFSET:
> +            qapi_event_send_rtc_change((int64_t)req->data, &error_abort);
>              break;
>          case IOREQ_TYPE_INVALIDATE:
>              xen_invalidate_map_cache();
> -- 
> 2.9.5
> 

Re: [Qemu-devel] [PATCH v2] xen: Emit RTC_CHANGE upon TIMEOFFSET ioreq
Posted by Anthony PERARD 6 years, 7 months ago
On Wed, Aug 23, 2017 at 02:25:05PM +0100, Ross Lagerwall wrote:
> When the guest writes to the RTC, Xen emulates it and broadcasts a
> TIMEOFFSET ioreq. Emit an RTC_CHANGE QMP event to all QMP monitors when
> this happens rather than ignoring it so that something useful can be
> done with the information. This is the same event that QEMU generates
> when it emulates the RTC.
> 
> This patch by itself doesn't affect any of the toolstacks that I
> checked; the libxl toolstack doesn't currently handle this event nor
> does the XAPI toolstack. If nothing handles the event, it is simply
> ignored. We plan on modifying XAPI to handle it.
> 
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
> ---
> 
> Changed in v2:
> * Expanded commit message.
> 
>  hw/i386/xen/xen-hvm.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index d9ccd5d..ffd20dc 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -16,6 +16,7 @@
>  #include "hw/i386/apic-msidef.h"
>  #include "hw/xen/xen_common.h"
>  #include "hw/xen/xen_backend.h"
> +#include "qapi-event.h"
>  #include "qmp-commands.h"
>  
>  #include "qemu/error-report.h"
> @@ -967,6 +968,7 @@ static void handle_ioreq(XenIOState *state, ioreq_t *req)
>              handle_vmport_ioreq(state, req);
>              break;
>          case IOREQ_TYPE_TIMEOFFSET:
> +            qapi_event_send_rtc_change((int64_t)req->data, &error_abort);

Is this the right value?

From qapi-schema.json: "offset between base RTC clock (as specified by
-rtc base), and new RTC clock value". But with this patch, the offset
sent via QMP seems to be between the previous value of the guest rtc and
the new one. Other calls to qapi_event_send_rtc_change send the offset
between the new guest RTC and qemu_time().

-- 
Anthony PERARD

Re: [Qemu-devel] [PATCH v2] xen: Emit RTC_CHANGE upon TIMEOFFSET ioreq
Posted by Stefano Stabellini 6 years, 7 months ago
Ping?

On Wed, 6 Sep 2017, Anthony PERARD wrote:
> On Wed, Aug 23, 2017 at 02:25:05PM +0100, Ross Lagerwall wrote:
> > When the guest writes to the RTC, Xen emulates it and broadcasts a
> > TIMEOFFSET ioreq. Emit an RTC_CHANGE QMP event to all QMP monitors when
> > this happens rather than ignoring it so that something useful can be
> > done with the information. This is the same event that QEMU generates
> > when it emulates the RTC.
> > 
> > This patch by itself doesn't affect any of the toolstacks that I
> > checked; the libxl toolstack doesn't currently handle this event nor
> > does the XAPI toolstack. If nothing handles the event, it is simply
> > ignored. We plan on modifying XAPI to handle it.
> > 
> > Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
> > ---
> > 
> > Changed in v2:
> > * Expanded commit message.
> > 
> >  hw/i386/xen/xen-hvm.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> > index d9ccd5d..ffd20dc 100644
> > --- a/hw/i386/xen/xen-hvm.c
> > +++ b/hw/i386/xen/xen-hvm.c
> > @@ -16,6 +16,7 @@
> >  #include "hw/i386/apic-msidef.h"
> >  #include "hw/xen/xen_common.h"
> >  #include "hw/xen/xen_backend.h"
> > +#include "qapi-event.h"
> >  #include "qmp-commands.h"
> >  
> >  #include "qemu/error-report.h"
> > @@ -967,6 +968,7 @@ static void handle_ioreq(XenIOState *state, ioreq_t *req)
> >              handle_vmport_ioreq(state, req);
> >              break;
> >          case IOREQ_TYPE_TIMEOFFSET:
> > +            qapi_event_send_rtc_change((int64_t)req->data, &error_abort);
> 
> Is this the right value?
> 
> >From qapi-schema.json: "offset between base RTC clock (as specified by
> -rtc base), and new RTC clock value". But with this patch, the offset
> sent via QMP seems to be between the previous value of the guest rtc and
> the new one. Other calls to qapi_event_send_rtc_change send the offset
> between the new guest RTC and qemu_time().