Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 May 2023 20:06:47 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: f93416d67743 - main - stand: add comconsole backwards compatibility shim for aarch64
Message-ID:  <202305112006.34BK6lp5019512@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=f93416d677432f3a713c71b79fb68e89162baca9

commit f93416d677432f3a713c71b79fb68e89162baca9
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2023-05-11 20:03:30 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2023-05-11 20:06:03 +0000

    stand: add comconsole backwards compatibility shim for aarch64
    
    Add a compat shim for the "comconsole" name so that people with a
    "console=comconsole" in their loader.conf on aarch64 will continue to
    work (though with a warning).
    
    This is only aarch64: it will never be there for amd64 (where comconsole
    always means talk to the hardware directly). To do that is too hard.
    
    Sponsored by:           Netflix
    Differential Revision:  https://reviews.freebsd.org/D39983
---
 stand/efi/loader/conf.c        |  7 +++++++
 stand/efi/loader/efiserialio.c | 25 +++++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/stand/efi/loader/conf.c b/stand/efi/loader/conf.c
index e9ae01d19270..e84d8b6c366d 100644
--- a/stand/efi/loader/conf.c
+++ b/stand/efi/loader/conf.c
@@ -81,6 +81,10 @@ struct netif_driver *netif_drivers[] = {
 
 extern struct console efi_console;
 extern struct console eficom;
+#if defined(__aarch64__) && __FreeBSD_version < 1500000
+/* Hack for backward compatibility -- but only for a while */
+extern struct console comconsole;
+#endif
 #if defined(__amd64__) || defined(__i386__)
 extern struct console comconsole;
 extern struct console nullconsole;
@@ -90,6 +94,9 @@ extern struct console spinconsole;
 struct console *consoles[] = {
 	&efi_console,
 	&eficom,
+#if defined(__aarch64__) && __FreeBSD_version < 1500000
+	&comconsole,
+#endif
 #if defined(__amd64__) || defined(__i386__)
 	&comconsole,
 	&nullconsole,
diff --git a/stand/efi/loader/efiserialio.c b/stand/efi/loader/efiserialio.c
index de4d6b3e34c1..16f28080f80e 100644
--- a/stand/efi/loader/efiserialio.c
+++ b/stand/efi/loader/efiserialio.c
@@ -81,6 +81,20 @@ struct console eficom = {
 	.c_ready = comc_ischar,
 };
 
+#if defined(__aarch64__) && __FreeBSD_version < 1500000
+static void	comc_probe_compat(struct console *);
+struct console comconsole = {
+	.c_name = "comconsole",
+	.c_desc = "serial port",
+	.c_flags = 0,
+	.c_probe = comc_probe_compat,
+	.c_init = comc_init,
+	.c_out = comc_putchar,
+	.c_in = comc_getchar,
+	.c_ready = comc_ischar,
+};
+#endif
+
 static EFI_STATUS
 efi_serial_init(EFI_HANDLE **handlep, int *nhandles)
 {
@@ -328,6 +342,17 @@ comc_probe(struct console *sc)
 	}
 }
 
+#if defined(__aarch64__) && __FreeBSD_version < 1500000
+static void
+comc_probe_compat(struct console *sc)
+{
+	comc_probe(sc);
+	if (sc->c_flags & (C_PRESENTIN | C_PRESENTOUT)) {
+		printf("comconsole: comconsole device name is deprecated, switch to eficom\n");
+	}
+}
+#endif
+
 static int
 comc_init(int arg __unused)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202305112006.34BK6lp5019512>