From nobody Fri Apr 24 17:56:14 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g2LHL759zz6ZxWC for ; Fri, 24 Apr 2026 17:56:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g2LHL423mz3qTt for ; Fri, 24 Apr 2026 17:56:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777053374; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=N0ZG219epcgGnc3ZpZnmwYCROlm4AWebxN184/Lq8Is=; b=EoCSy69XYIrK6onuUfuHwuRnDnya25dSB/GrJuvV6BFUcgToA1jI37OnuRgTwWmYvAn9kq 3psvtFixLlc1Fta6nXdoI+SMf+oNlleUZR08aMBVd0uf5qU3QV9NGRXbj3YWP/i8fI8EI3 JGl9Vl3KsxTpU/r25HBlV+++d3xgVrlVYxxtLwCVSC8I80G9spN6Au2OJ32zbu3DmO9E5b D5341KLCe+5P+viMDTqhMHQZbcwtsV5sxsO2nKPtH/YGD4/Ta3a99zu240snMQ1auF+dEx 02HQkLkP5mUv8za1toBnJ0ad0PNjMGNPka0EYcyGl3CaYVM0lNSPsJwlkIkDKw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777053374; a=rsa-sha256; cv=none; b=ltrG3pHOe8KAaivDqWN7kgnZc5SDA3sjHW8M5xdGcKy8uw4xXyOLlWZugh0LutkUEFwu0k yKqEQNIYHvMU1+zdIXWYcrWWSn7nbMi3c6eRApbFBLGJnD9n0NQVNEeQNuQDRE4mt0aIFV +22fi+io5x6Hd5WUAel3PaeCSSQzzWdplSg2wC59ceDBU6nFnODPtJai0V6M0Dlfu+3bMd dZvwkj6NwqTg4kDWZQnf+1oJEBXQ/OM/KS/ARedbfJnVq1gXNnwKudkqwb9D3magPrAzZq DdWoHNlMq4TI0+fPuq456KLcVd7gBaPjYZr9v416JJhISBa37Xo/3YP3JVkquQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777053374; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=N0ZG219epcgGnc3ZpZnmwYCROlm4AWebxN184/Lq8Is=; b=UkoiRHzd5hkq5Ez4437h+g0sqA3V369yglW2JJJW32o5a0wH2m/inYSWdv4z9Ye9DAkeDL D5KHI9NUCj+NGJu/kUENuOt2N8Mx3yFoZmfHFulQLzGFDzLSeSP23YrgRLzOPlxOc+90uv moDqGxi+XRWQgUKi/bzweruvNqotroZD6m+xjeqsTfmwEYgY0OkZY4xVgAILF5sneOEgIa XEkzMZHhvQku/vLTLs/WwN7PIxQo7GuOxqCM1Nz3+ojnkeX6gZnXPKBkaxn4hznQ+x9D25 6wvXulv7vXIjnHLOwOfRpeujWH3pcRZZmE6bGDLPwYkJ/y4+uI8e8iPaZHA+/g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2LHL38wjz1Cn9 for ; Fri, 24 Apr 2026 17:56:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1cbd1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 24 Apr 2026 17:56:14 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: b9a823bcb986 - stable/15 - devinfo: Support PCI DBSF and ACPI handles for -p List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: b9a823bcb9868468aaf01a04746c80b202d48554 Auto-Submitted: auto-generated Date: Fri, 24 Apr 2026 17:56:14 +0000 Message-Id: <69ebaebe.1cbd1.7b3fce2@gitrepo.freebsd.org> The branch stable/15 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b9a823bcb9868468aaf01a04746c80b202d48554 commit b9a823bcb9868468aaf01a04746c80b202d48554 Author: John Baldwin AuthorDate: 2026-03-06 20:36:05 +0000 Commit: John Baldwin CommitDate: 2026-04-24 17:33:52 +0000 devinfo: Support PCI DBSF and ACPI handles for -p When matching on a name of a device, match on ACPI handles and PCI selectors in addition to device names. This can be useful for matching on devices without an attached driver. For example: devinfo -p pci0:0:31:0 Reviewed by: imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D55673 (cherry picked from commit ca25b1b26379e27bf2bab7742a7b383ca0bfc7d2) --- usr.sbin/devinfo/devinfo.8 | 22 +++++++++++++++++- usr.sbin/devinfo/devinfo.c | 58 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/usr.sbin/devinfo/devinfo.8 b/usr.sbin/devinfo/devinfo.8 index 15a6059c166f..2dd82419b1ed 100644 --- a/usr.sbin/devinfo/devinfo.8 +++ b/usr.sbin/devinfo/devinfo.8 @@ -26,7 +26,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd August 28, 2025 +.Dd March 6, 2026 .Dt DEVINFO 8 .Os .Sh NAME @@ -53,6 +53,26 @@ The following options are accepted: Display the path of .Ar dev back to the root of the device tree. +.Ar dev +can either be a device name, +the absolute path of an ACPI handle +.Po must begin with a +.Dq \e +.Pc , +or a PCI selector +.Po +either +.Sy pci Ns Fa domain Ns : Ns Fa bus Ns : Ns Fa slot Ns : Ns Fa function +or +.Sy pci Ns Fa bus Ns : Ns Fa slot Ns : Ns Fa function +.Pc . +.Pp +If +.Fl v +is specified, +each device is output on a separate line including the device name and +additional verbose information; +otherwise, a space-separated list of device names is output. .It Fl r Causes hardware resource information .Pq such as IRQ, I/O ports, I/O memory addresses diff --git a/usr.sbin/devinfo/devinfo.c b/usr.sbin/devinfo/devinfo.c index 43d88481d903..bea082ba6285 100644 --- a/usr.sbin/devinfo/devinfo.c +++ b/usr.sbin/devinfo/devinfo.c @@ -275,13 +275,69 @@ print_device_path_entry(struct devinfo_dev *dev) printf("\n"); } +/* + * This assumes the string to be compared in *cp is either space or + * nul terminated. + */ +static bool +match_value(const char *cp, const char *name) +{ + const char *end; + size_t len; + + end = strchr(cp, ' '); + if (end == NULL) + return (strcmp(cp, name) == 0); + + if (end == cp) + return (false); + + /* NB: strncmp(3) would return zero if name matches a prefix. */ + len = end - cp; + return (strlen(name) == len && memcmp(name, cp, len) == 0); +} + +static bool +device_matches_name(struct devinfo_dev *dev, const char *name) +{ + const char *cp, *val; + + if (strcmp(dev->dd_name, name) == 0) + return (true); + + if (*dev->dd_location) { + /* Permit matches on the ACPI handle stored in location. */ + if (name[0] == '\\' && (cp = strstr(dev->dd_location, + "handle=\\")) != NULL) { + if (match_value(cp + strlen("handle="), name)) + return (true); + } + + /* Permit matches on the PCI dbsf stored in location. */ + if (strncmp(name, "pci", strlen("pci")) == 0 && + (cp = strstr(dev->dd_location, "dbsf=pci")) != NULL) { + cp += strlen("dbsf=pci"); + val = name + strlen("pci"); + if (match_value(cp, val)) + return (true); + + /* Also match on pci:: for domain 0. */ + if (strncmp(cp, "0:", strlen("0:")) == 0 && + match_value(cp + strlen("0:"), val)) + return (true); + } + } + + return (false); +} + static int print_device_path(struct devinfo_dev *dev, void *xname) { const char *name = xname; int rv; - if (strcmp(dev->dd_name, name) == 0) { + if (device_matches_name(dev, name)) { print_device_path_entry(dev); return (1); }