diff mbox

cuda: fix off-by-one error in SET_TIME command

Message ID 1460966865-14537-1-git-send-email-aurelien@aurel32.net
State New
Headers show

Commit Message

Aurelien Jarno April 18, 2016, 8:07 a.m. UTC
With the new framework the cuda_cmd_set_time command directly receive
the data, without the command byte. Therefore the time is stored at
in_data[0], not at in_data[1].

This fixes the "hwclock --systohc" command in a guest.

Cc: Hervé Poussineau <hpoussin@reactos.org>
Cc: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
 hw/misc/macio/cuda.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Hervé Poussineau April 18, 2016, 11:06 a.m. UTC | #1
Le 18/04/2016 10:07, Aurelien Jarno a écrit :
>
> This fixes the "hwclock --systohc" command in a guest.
>
> Cc: Hervé Poussineau<hpoussin@reactos.org>
> Cc: David Gibson<david@gibson.dropbear.id.au>
> Signed-off-by: Aurelien Jarno<aurelien@aurel32.net>

Reviewed-by: Hervé Poussineau <hpoussin@reactos.org>
David Gibson April 19, 2016, 1:41 a.m. UTC | #2
On Mon, Apr 18, 2016 at 10:07:45AM +0200, Aurelien Jarno wrote:
> With the new framework the cuda_cmd_set_time command directly receive
> the data, without the command byte. Therefore the time is stored at
> in_data[0], not at in_data[1].
> 
> This fixes the "hwclock --systohc" command in a guest.
> 
> Cc: Hervé Poussineau <hpoussin@reactos.org>
> Cc: David Gibson <david@gibson.dropbear.id.au>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

Applied to ppc-for-2.6.  I'll send a pull request shortly.

> ---
>  hw/misc/macio/cuda.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
> index c7472aa..f15f301 100644
> --- a/hw/misc/macio/cuda.c
> +++ b/hw/misc/macio/cuda.c
> @@ -685,8 +685,8 @@ static bool cuda_cmd_set_time(CUDAState *s,
>          return false;
>      }
>  
> -    ti = (((uint32_t)in_data[1]) << 24) + (((uint32_t)in_data[2]) << 16)
> -         + (((uint32_t)in_data[3]) << 8) + in_data[4];
> +    ti = (((uint32_t)in_data[0]) << 24) + (((uint32_t)in_data[1]) << 16)
> +         + (((uint32_t)in_data[2]) << 8) + in_data[3];
>      s->tick_offset = ti - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL)
>                             / NANOSECONDS_PER_SECOND);
>      return true;
diff mbox

Patch

diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
index c7472aa..f15f301 100644
--- a/hw/misc/macio/cuda.c
+++ b/hw/misc/macio/cuda.c
@@ -685,8 +685,8 @@  static bool cuda_cmd_set_time(CUDAState *s,
         return false;
     }
 
-    ti = (((uint32_t)in_data[1]) << 24) + (((uint32_t)in_data[2]) << 16)
-         + (((uint32_t)in_data[3]) << 8) + in_data[4];
+    ti = (((uint32_t)in_data[0]) << 24) + (((uint32_t)in_data[1]) << 16)
+         + (((uint32_t)in_data[2]) << 8) + in_data[3];
     s->tick_offset = ti - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL)
                            / NANOSECONDS_PER_SECOND);
     return true;