Module Name:    src
Committed By:   imil
Date:           Wed Feb 12 05:15:39 UTC 2025

Modified Files:
        src/sys/arch/x86/x86: x86_autoconf.c
        src/sys/dev/ic: com.c

Log Message:
Set a skip_attach_delay property to "true" for com port in virtual machines
to avoid a delay(10000) at attach


To generate a diff of this commit:
cvs rdiff -u -r1.89 -r1.90 src/sys/arch/x86/x86/x86_autoconf.c
cvs rdiff -u -r1.387 -r1.388 src/sys/dev/ic/com.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/x86/x86/x86_autoconf.c
diff -u src/sys/arch/x86/x86/x86_autoconf.c:1.89 src/sys/arch/x86/x86/x86_autoconf.c:1.90
--- src/sys/arch/x86/x86/x86_autoconf.c:1.89	Fri Dec  6 10:53:41 2024
+++ src/sys/arch/x86/x86/x86_autoconf.c	Wed Feb 12 05:15:39 2025
@@ -1,4 +1,4 @@
-/*	$NetBSD: x86_autoconf.c,v 1.89 2024/12/06 10:53:41 bouyer Exp $	*/
+/*	$NetBSD: x86_autoconf.c,v 1.90 2025/02/12 05:15:39 imil Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: x86_autoconf.c,v 1.89 2024/12/06 10:53:41 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: x86_autoconf.c,v 1.90 2025/02/12 05:15:39 imil Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -602,6 +602,10 @@ device_register(device_t dev, void *aux)
 	(void)device_hyperv_register(dev, aux);
 #endif
 
+	if (device_is_a(dev, "com") && vm_guest > VM_GUEST_NO)
+		prop_dictionary_set_bool(device_properties(dev),
+		    "skip_attach_delay", true);
+
 	if (isaboot == NULL && pciboot == NULL)
 		return;
 

Index: src/sys/dev/ic/com.c
diff -u src/sys/dev/ic/com.c:1.387 src/sys/dev/ic/com.c:1.388
--- src/sys/dev/ic/com.c:1.387	Sun Feb  9 10:27:29 2025
+++ src/sys/dev/ic/com.c	Wed Feb 12 05:15:39 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: com.c,v 1.387 2025/02/09 10:27:29 skrll Exp $ */
+/* $NetBSD: com.c,v 1.388 2025/02/12 05:15:39 imil Exp $ */
 
 /*-
  * Copyright (c) 1998, 1999, 2004, 2008 The NetBSD Foundation, Inc.
@@ -71,7 +71,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.387 2025/02/09 10:27:29 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.388 2025/02/12 05:15:39 imil Exp $");
 
 #include "opt_com.h"
 #include "opt_ddb.h"
@@ -540,12 +540,14 @@ com_attach_subr(struct com_softc *sc)
 	prop_dictionary_t dict;
 	bool is_console = true;
 	bool force_console = false;
+	bool skip_attach_delay = false;
 
 	aprint_naive("\n");
 
 	dict = device_properties(sc->sc_dev);
 	prop_dictionary_get_bool(dict, "is_console", &is_console);
 	prop_dictionary_get_bool(dict, "force_console", &force_console);
+	prop_dictionary_get_bool(dict, "skip_attach_delay", &skip_attach_delay);
 	callout_init(&sc->sc_diag_callout, 0);
 	callout_init(&sc->sc_poll_callout, 0);
 	callout_setfunc(&sc->sc_poll_callout, com_intr_poll, sc);
@@ -589,8 +591,11 @@ com_attach_subr(struct com_softc *sc)
 			break;
 		}
 
+		/* No need for a delay on virtual machines. */
+		if (!skip_attach_delay)
+			delay(10000); /* wait for output to finish */
+
 		/* Make sure the console is always "hardwired". */
-		delay(10000);			/* wait for output to finish */
 		if (is_console) {
 			SET(sc->sc_hwflags, COM_HW_CONSOLE);
 		}

Reply via email to