svn commit: r358906 - head/stand/i386/libi386

Toomas Soome tsoome at FreeBSD.org
Thu Mar 12 06:45:11 UTC 2020


Author: tsoome
Date: Thu Mar 12 06:45:08 2020
New Revision: 358906
URL: https://svnweb.freebsd.org/changeset/base/358906

Log:
  test if port does exist via using scratch register
  
  The SCR, scratch register was not present on the 8250 and 8250B UART, so we
  can use to test if we actually do have serial port.
  
  We need this test because some systems will get long delays while attempting
  to write to non-existing port and this will slow down the console IO
  to extreme.
  
  MFC after:	1 week

Modified:
  head/stand/i386/libi386/comconsole.c

Modified: head/stand/i386/libi386/comconsole.c
==============================================================================
--- head/stand/i386/libi386/comconsole.c	Thu Mar 12 03:59:51 2020	(r358905)
+++ head/stand/i386/libi386/comconsole.c	Thu Mar 12 06:45:08 2020	(r358906)
@@ -330,6 +330,16 @@ comc_setup(int speed, int port)
 	if ((comconsole.c_flags & (C_ACTIVEIN | C_ACTIVEOUT)) == 0)
 		return;
 
+#define	COMC_TEST	0xbb
+	/*
+	 * Write byte to scratch register and read it out.
+	 */
+	outb(comc_port + com_scr, COMC_TEST);
+	if (inb(comc_port + com_scr) != COMC_TEST) {
+		comconsole.c_flags &= ~(C_PRESENTIN | C_PRESENTOUT);
+		return;
+	}
+
 	outb(comc_port + com_cfcr, CFCR_DLAB | COMC_FMT);
 	outb(comc_port + com_dlbl, COMC_BPS(speed) & 0xff);
 	outb(comc_port + com_dlbh, COMC_BPS(speed) >> 8);


More information about the svn-src-head mailing list