diff mbox series

[v2,4/5] cuda: Make shift register delay configurable

Message ID 20260923230452.3765-5-kirill@korins.ky
State New
Headers show
Series mac99: Boot OpenBSD/macppc | expand

Commit Message

Kirill A. Korinsky Sept. 23, 2026, 11:03 p.m. UTC
From: "Kirill A. Korinsky" <kirill@korins.ky>

The CUDA model assumes a 20 microsecond delay before each shift
register interrupt. OpenBSD times out during device discovery with that
timing, so retain the existing default but allow an override.

Signed-off-by: Kirill A. Korinsky <kirill@korins.ky>
Tested-by: Anushree Mathur <anushree.mathur@linux.ibm.com>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/misc/macio/cuda.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Mark Cave-Ayland Sept. 24, 2026, 5:19 a.m. UTC | #1
On 24/09/2026 00:03, Kirill A. Korinsky wrote:

> From: "Kirill A. Korinsky" <kirill@korins.ky>
> 
> The CUDA model assumes a 20 microsecond delay before each shift
> register interrupt. OpenBSD times out during device discovery with that
> timing, so retain the existing default but allow an override.
> 
> Signed-off-by: Kirill A. Korinsky <kirill@korins.ky>
> Tested-by: Anushree Mathur <anushree.mathur@linux.ibm.com>
> Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>   hw/misc/macio/cuda.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
> index ccb3e1d74b..f06583377a 100644
> --- a/hw/misc/macio/cuda.c
> +++ b/hw/misc/macio/cuda.c
> @@ -535,7 +535,6 @@ static void cuda_realize(DeviceState *dev, Error **errp)
>       s->tick_offset = (uint32_t)mktimegm(&tm) + RTC_OFFSET;
>   
>       s->sr_delay_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, cuda_set_sr_int, s);
> -    s->sr_delay_ns = 20 * SCALE_US;
>   
>       adb_register_autopoll_callback(adb_bus, cuda_adb_poll, s);
>   }
> @@ -557,6 +556,8 @@ static void cuda_init(Object *obj)
>   
>   static const Property cuda_properties[] = {
>       DEFINE_PROP_UINT64("timebase-frequency", CUDAState, tb_frequency, 0),
> +    DEFINE_PROP_UINT64("x-sr-delay-ns", CUDAState, sr_delay_ns,
> +                       20 * SCALE_US),
>   };
>   
>   static void cuda_class_init(ObjectClass *oc, const void *data)

Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>


ATB,

Mark.
diff mbox series

Patch

diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
index ccb3e1d74b..f06583377a 100644
--- a/hw/misc/macio/cuda.c
+++ b/hw/misc/macio/cuda.c
@@ -535,7 +535,6 @@  static void cuda_realize(DeviceState *dev, Error **errp)
     s->tick_offset = (uint32_t)mktimegm(&tm) + RTC_OFFSET;
 
     s->sr_delay_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, cuda_set_sr_int, s);
-    s->sr_delay_ns = 20 * SCALE_US;
 
     adb_register_autopoll_callback(adb_bus, cuda_adb_poll, s);
 }
@@ -557,6 +556,8 @@  static void cuda_init(Object *obj)
 
 static const Property cuda_properties[] = {
     DEFINE_PROP_UINT64("timebase-frequency", CUDAState, tb_frequency, 0),
+    DEFINE_PROP_UINT64("x-sr-delay-ns", CUDAState, sr_delay_ns,
+                       20 * SCALE_US),
 };
 
 static void cuda_class_init(ObjectClass *oc, const void *data)