All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] Cuda device fixes
@ 2005-04-18  8:36 J. Mayer
  0 siblings, 0 replies; only message in thread
From: J. Mayer @ 2005-04-18  8:36 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 218 bytes --]

This patch fixes two bugs in cuda emulation:
- the CUDA timer is always triggered twice, with current code
- SET_TIME command is supposed to send back a 7 bytes packet

-- 
J. Mayer <l_indien@magic.fr>
Never organized

[-- Attachment #2: ppc_cuda.diff --]
[-- Type: text/x-patch, Size: 1642 bytes --]

Index: hw/cuda.c
===================================================================
RCS file: /cvsroot/qemu/qemu/hw/cuda.c,v
retrieving revision 1.6
diff -u -d -w -B -b -d -p -r1.6 cuda.c
--- hw/cuda.c	9 Feb 2005 00:07:08 -0000	1.6
+++ hw/cuda.c	18 Apr 2005 07:59:38 -0000
@@ -178,17 +178,20 @@ static int64_t get_next_irq_time(CUDATim
     /* current counter value */
     d = muldiv64(current_time - s->load_time, 
                  CUDA_TIMER_FREQ, ticks_per_sec);
-    if (d <= s->counter_value) {
+    if (d < s->counter_value) {
         next_time = s->counter_value + 1;
-    } else {
-        base = ((d - s->counter_value) / s->latch);
+    } else
+    {
+        base = ((d - s->counter_value + 1) / s->latch);
         base = (base * s->latch) + s->counter_value;
         next_time = base + s->latch;
     }
+#if 0
 #ifdef DEBUG_CUDA
     printf("latch=%d counter=%lld delta_next=%lld\n", 
            s->latch, d, next_time - d);
 #endif
+#endif
     next_time = muldiv64(next_time, ticks_per_sec, CUDA_TIMER_FREQ) + 
         s->load_time;
     if (next_time <= current_time)
@@ -505,6 +508,7 @@ static void cuda_receive_packet(CUDAStat
         cuda_send_packet_to_host(s, obuf, 2);
         break;
     case CUDA_GET_TIME:
+    case CUDA_SET_TIME:
         /* XXX: add time support ? */
         ti = time(NULL) + RTC_OFFSET;
         obuf[0] = CUDA_PACKET;
@@ -516,7 +520,6 @@ static void cuda_receive_packet(CUDAStat
         obuf[6] = ti;
         cuda_send_packet_to_host(s, obuf, 7);
         break;
-    case CUDA_SET_TIME:
     case CUDA_FILE_SERVER_FLAG:
     case CUDA_SET_DEVICE_LIST:
     case CUDA_SET_AUTO_RATE:

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-04-18  8:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-18  8:36 [Qemu-devel] Cuda device fixes J. Mayer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.