Subject: [PATCH v3 3/6] xen: introduce XENPF_settime64

From: [email-masked] (Boris Ostrovsky)
Date: Thu, 12 Nov 2015 12:16:47 -0500

On 11/12/2015 11:34 AM, Stefano Stabellini wrote:
> On Thu, 12 Nov 2015, Boris Ostrovsky wrote:
>> On 11/11/2015 11:51 AM, Stefano Stabellini wrote:
>>> Rename the current XENPF_settime hypercall and related struct to
>>> XENPF_settime32.
>>>
>>> Signed-off-by: Stefano Stabellini <[email-masked]>
>>> Acked-by: Arnd Bergmann <[email-masked]>
>>> CC: konrad.wilk at oracle.com
>>> CC: david.vrabel at citrix.com
>>> CC: boris.ostrovsky at oracle.com
>>> ---
>>>    arch/x86/xen/time.c              |    8 ++++----
>>>    include/xen/interface/platform.h |   18 ++++++++++++++----
>>>    2 files changed, 18 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
>>> index 663c2ea..3bbd377 100644
>>> --- a/arch/x86/xen/time.c
>>> +++ b/arch/x86/xen/time.c
>>> @@ -134,10 +134,10 @@ static int xen_pvclock_gtod_notify(struct
>>> notifier_block *nb,
>>>    	if (!was_set && timespec_compare(&now, &next_sync) < 0)
>>>    		return NOTIFY_OK;
>>>    -	op.cmd = XENPF_settime;
>>> -	op.u.settime.secs = now.tv_sec;
>>> -	op.u.settime.nsecs = now.tv_nsec;
>>> -	op.u.settime.system_time = xen_clocksource_read();
>>> +	op.cmd = XENPF_settime32;
>>> +	op.u.settime32.secs = now.tv_sec;
>>> +	op.u.settime32.nsecs = now.tv_nsec;
>>> +	op.u.settime32.system_time = xen_clocksource_read();
>> Can/should we switch to time64 here? (This would require a couple more changes
>> but they would all be local to this routine).
> I can do that, but it should be a separate patch. I'll queue it at the
> end of the series.

Didn't Arnd just say that something needs to be done in the hypervisor 
for that to work? Or did I misunderstood him?

Anyway, for this patch
Reviewed-by: Boris Ostrovsky <[email-masked]>

>
>
>>>      	(void)HYPERVISOR_platform_op(&op);
>>>    diff --git a/include/xen/interface/platform.h
>>> b/include/xen/interface/platform.h
>>> index 8e03587..732efb0 100644
>>> --- a/include/xen/interface/platform.h
>>> +++ b/include/xen/interface/platform.h
>>> @@ -35,14 +35,23 @@
>>>     * Set clock such that it would read <secs,nsecs> after 00:00:00 UTC,
>>>     * 1 January, 1970 if the current system time was <system_time>.
>>>     */
>>> -#define XENPF_settime             17
>>> -struct xenpf_settime {
>>> +#define XENPF_settime32             17
>>> +struct xenpf_settime32 {
>>>    	/* IN variables. */
>>>    	uint32_t secs;
>>>    	uint32_t nsecs;
>>>    	uint64_t system_time;
>>>    };
>>> -DEFINE_GUEST_HANDLE_STRUCT(xenpf_settime_t);
>>> +DEFINE_GUEST_HANDLE_STRUCT(xenpf_settime32_t);
>>> +#define XENPF_settime64           62
>>> +struct xenpf_settime64 {
>>> +    /* IN variables. */
>>> +    uint64_t secs;
>>> +    uint32_t nsecs;
>>> +    uint32_t mbz;
>>> +    uint64_t system_time;
>>> +};
>>> +DEFINE_GUEST_HANDLE_STRUCT(xenpf_settime64_t);
>>>      /*
>>>     * Request memory range (@mfn, @mfn+ at nr_mfns-1) to have type @type.
>>> @@ -495,7 +504,8 @@ struct xen_platform_op {
>>>    	uint32_t cmd;
>>>    	uint32_t interface_version; /* XENPF_INTERFACE_VERSION */
>>>    	union {
>>> -		struct xenpf_settime           settime;
>>> +		struct xenpf_settime32         settime32;
>>> +		struct xenpf_settime64         settime64;
>>>    		struct xenpf_add_memtype       add_memtype;
>>>    		struct xenpf_del_memtype       del_memtype;
>>>    		struct xenpf_read_memtype      read_memtype;