Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Apr 2021 10:15:01 GMT
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 37c3241a4316 - main - LinuxKPI: treat firmware file names more lenient
Message-ID:  <202104021015.132AF1Rh049569@gitrepo.freebsd.org>

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

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

commit 37c3241a43160dd236bd4767fce46e846cb17227
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2021-03-31 15:25:01 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2021-04-02 10:03:39 +0000

    LinuxKPI: treat firmware file names more lenient
    
    A lot of firmware files have a "-" in the name.  That "-" is a problem
    when dealing with shell variables or loader (e.g., auto-loading .ko).
    It may thus often be convenient to generate firmware kernel object files
    with s/-/_/g in the name.  In order to automatically find them from
    drivers using LinuxKPI also substitue the '-' for a '_' like we do
    for '/' and '.' already.
    
    Reviewed-by:    hselasky, manu (ok)
    MFC-after:      2 weeks
    Differential Revision:  https://reviews.freebsd.org/D29514
---
 sys/compat/linuxkpi/common/src/linux_firmware.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/sys/compat/linuxkpi/common/src/linux_firmware.c b/sys/compat/linuxkpi/common/src/linux_firmware.c
index 75147a311827..289779c5246c 100644
--- a/sys/compat/linuxkpi/common/src/linux_firmware.c
+++ b/sys/compat/linuxkpi/common/src/linux_firmware.c
@@ -85,9 +85,10 @@ _linuxkpi_request_firmware(const char *fw_name, const struct linuxkpi_firmware *
 		fwimg = fw_name;
 		fbdfw = firmware_get_flags(fwimg, flags);
 	}
-	/* (3) Flatten '/' and then '.' to '_' and try with adjusted name. */
+	/* (3) Flatten '/', '.' and '-' to '_' and try with adjusted name. */
 	if (fbdfw == NULL &&
-	    (strchr(fw_name, '/') != NULL || strchr(fw_name, '.') != NULL)) {
+	    (strchr(fw_name, '/') != NULL || strchr(fw_name, '.') != NULL ||
+	    strchr(fw_name, '-'))) {
 		fwimg = strdup(fw_name, M_LKPI_FW);
 		if (fwimg != NULL) {
 			while ((p = strchr(fwimg, '/')) != NULL)
@@ -98,6 +99,11 @@ _linuxkpi_request_firmware(const char *fw_name, const struct linuxkpi_firmware *
 					*p = '_';
 				fbdfw = firmware_get_flags(fwimg, flags);
 			}
+			if (fbdfw == NULL) {
+				while ((p = strchr(fwimg, '-')) != NULL)
+					*p = '_';
+				fbdfw = firmware_get_flags(fwimg, flags);
+			}
 			free(__DECONST(void *, fwimg), M_LKPI_FW);
 		}
 	}



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