From nobody Wed Dec 10 19:04:05 2025 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 4dRQ9x5CtXz6L0YS for ; Wed, 10 Dec 2025 19:04:05 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dRQ9x38dMz3xNp for ; Wed, 10 Dec 2025 19:04:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1765393445; 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=Z3ww1WRjgZS2EMDcflxzVv3KQkb1ImS5dq2SR0S3stw=; b=pW5n0B2vAbOqfho2Du15pIV5dsx8ucVoLXZYc6BRqyNca/JBKAiwiflIcbQaG4R8ICEOeo wFz7MYpkXL0fbOpiHC2jZRXaSUObUXjuXBlUSYdJHThTBz2XUPG9ap/MHIWM9WWoDmitS/ rF5Ej2sGBq0JF9Luh3d0YlcrbYUTI9ke6Pp3LwNvXWXo84M+95nTxeT57Wpx6b2QIfBOfb U4NIRmbjyeKvXdkkYzhI6Vxmy/a4TtTQChyJDIlbyQj8DfZ4pNnLjhdlGe3lb8/hr6gDuF +xpq/039S/QSY2X29lduncw2KrrOkxS44lVx2U2UCFb6u48UQivg3Oj9lN66jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1765393445; 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=Z3ww1WRjgZS2EMDcflxzVv3KQkb1ImS5dq2SR0S3stw=; b=d9s0zMUtOYfwhypvWlWkfBE9nPtNFQ+/7wtMvhxW4y7E3yyecKktvB34o7Vl2gZueriIT/ XE/jPfPQXq5TXvhNKK5Qugb+t8XxIEy+4j22nn0s90rvKqOICPlc2hcOo7q6+ckUJsqQPn 7vZ8FRX0pK14DQFcgswsVisCRx8ikM/Ej54Yq6XOd/4W++3JPJZr+J9M3KcxkvVsQcPgVG Zq4aqIXvUwjXn6gUq2ndlLqrCNxJISXxi1uG1aYjKA1zIci4MzKakjWrFgKuuLGb4KTqDZ YZv87j7vbnUEYq51xKmttTYHqZkiXMc6wRQYAwZythfb1YqF1ANvZi4cUwl+Sw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1765393445; a=rsa-sha256; cv=none; b=RTpWgPwbvXepAAuJbGUmu0wBebRlnkhZZnaHEjxg4dXprKby+YAAcUkoEngBY4wUpnsV1Z RCxtjGPikGP4wxwb56zf8QPXHP7Z2z8L7bBcjKZ5LjDSUJsbcx3BZ+ML/rPapr8CjNtsRI zHjUXV7sPUNd6QxA5epVQ92IluLs1nMJX+VxqyAITT+qZW8nGjUB1OHu3wY45M4HknJy8W eeQD585+eUVopWmcc42gvXdYw7t3bHAUYIOhXLVoq28D0xxfBu7r5Pt+rtxLY+OiExJV1p rcwVOVsVvLdnu9N5hNICy+bBFrZyjoy8VU+breGetE3HrhRmmRxr9wYUhOI3Ow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dRQ9x2ds1zxfQ for ; Wed, 10 Dec 2025 19:04:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22561 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 10 Dec 2025 19:04:05 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 332096ebb638 - main - kboot: Explicitly use host:/proc 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: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 332096ebb6380ae65829018b4e1d611cd68dcc33 Auto-Submitted: auto-generated Date: Wed, 10 Dec 2025 19:04:05 +0000 Message-Id: <6939c425.22561.49bc3f@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=332096ebb6380ae65829018b4e1d611cd68dcc33 commit 332096ebb6380ae65829018b4e1d611cd68dcc33 Author: Warner Losh AuthorDate: 2025-12-10 12:36:56 +0000 Commit: Warner Losh CommitDate: 2025-12-10 19:03:47 +0000 kboot: Explicitly use host:/proc When looking for the boot_params symbol we need to get the UEFI memory map, use host: prefix. The short-circuit we have for this only works when we have a filesystem. During the earliest parts of boot, we can sometimes not have this yet, so making this explicit allows these environments to function. It's always in the host path. Print better error messages, and add newlines in two palces. Sponsored by: Netflix --- stand/kboot/libkboot/dfk.c | 13 ++++++++++--- sys/dev/mpr/mpr_sas.c | 31 +++++++++++++++++++++++++++++-- sys/dev/mpr/mpr_sas.h | 3 +++ 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/stand/kboot/libkboot/dfk.c b/stand/kboot/libkboot/dfk.c index 09f4512f5c99..18a3ad8eadab 100644 --- a/stand/kboot/libkboot/dfk.c +++ b/stand/kboot/libkboot/dfk.c @@ -39,8 +39,13 @@ #define ELF_TARG_DATA ELFDATA2LSB #endif +#ifndef _STANDALONE #define KCORE_PATH "/proc/kcore" #define KALLSYMS_PATH "/proc/kallsyms" +#else +#define KCORE_PATH "host:/proc/kcore" +#define KALLSYMS_PATH "host:/proc/kallsyms" +#endif struct elf_file { @@ -135,8 +140,10 @@ symbol_addr(const char *symbol) unsigned long addr; char line[256]; - if (!lb_init(&lb, KALLSYMS_PATH)) + if (!lb_init(&lb, KALLSYMS_PATH)) { + printf("Cannot open symbol file %s\n", KALLSYMS_PATH); return (0); + } while (lb_1line(&lb, line, sizeof(line))) { char *val, *name, *x, t; @@ -259,11 +266,11 @@ data_from_kernel(const char *sym, void *buf, size_t len) addr = symbol_addr(sym); if (addr == 0) { - fprintf(stderr, "Can't find symbol %s", sym); + fprintf(stderr, "Can't find symbol %s\n", sym); return (false); } if (!read_at_address(addr, buf, len)) { - fprintf(stderr, "Can't read from kernel"); + fprintf(stderr, "Can't read from kernel\n"); return (false); } return (true); diff --git a/sys/dev/mpr/mpr_sas.c b/sys/dev/mpr/mpr_sas.c index 5f3a27a468b0..a48593b1e6ee 100644 --- a/sys/dev/mpr/mpr_sas.c +++ b/sys/dev/mpr/mpr_sas.c @@ -152,6 +152,25 @@ mprsas_find_target_by_handle(struct mprsas_softc *sassc, int start, return (NULL); } +static void +mprsas_startup_timeout(void *_sassc) +{ + struct mprsas_softc *sassc = _sassc; + + /* + * Things have taken far too long. We have to get on with it. However, + * we're still processing events. We'll release the boot here only. + * We're called with the mpr lock held, which the rest of these + * functions take. This may cause mountroot to fail, but we'll at least + * proceed with the boot if this isn't holding up the system disk. + */ + callout_stop(&sassc->startup_timeout); + sassc->flags &= ~MPRSAS_STARTUP_ARMED; + xpt_release_boot(); + printf("Gave up all the devices...\n"); +}; + + /* we need to freeze the simq during attach and diag reset, to avoid failing * commands before device handles have been found by discovery. Since * discovery involves reading config pages and possibly sending commands, @@ -171,6 +190,10 @@ mprsas_startup_increment(struct mprsas_softc *sassc) "%s freezing simq\n", __func__); xpt_hold_boot(); xpt_freeze_simq(sassc->sim, 1); + callout_init_mtx(&sassc->startup_timeout, + &sassc->sc->mpr_mtx, 0); + callout_reset(&sassc->startup_timeout, 60 * hz, + mprsas_startup_timeout, sassc); } mpr_dprint(sassc->sc, MPR_INIT, "%s refcount %u\n", __func__, sassc->startup_refcount); @@ -197,11 +220,15 @@ mprsas_startup_decrement(struct mprsas_softc *sassc) /* finished all discovery-related actions, release * the simq and rescan for the latest topology. */ + bool need_release = sassc->flags & MPRSAS_STARTUP_ARMED; mpr_dprint(sassc->sc, MPR_INIT, "%s releasing simq\n", __func__); - sassc->flags &= ~MPRSAS_IN_STARTUP; + if (need_release) /* stop to prevent deadlock */ + callout_stop(&sassc->startup_timeout); + sassc->flags &= ~(MPRSAS_IN_STARTUP | MPRSAS_STARTUP_ARMED); xpt_release_simq(sassc->sim, 1); - xpt_release_boot(); + if (need_release) + xpt_release_boot(); } mpr_dprint(sassc->sc, MPR_INIT, "%s refcount %u\n", __func__, sassc->startup_refcount); diff --git a/sys/dev/mpr/mpr_sas.h b/sys/dev/mpr/mpr_sas.h index 4f1be3cd4214..24250cf50d14 100644 --- a/sys/dev/mpr/mpr_sas.h +++ b/sys/dev/mpr/mpr_sas.h @@ -91,6 +91,7 @@ struct mprsas_softc { #define MPRSAS_IN_STARTUP (1 << 1) #define MPRSAS_QUEUE_FROZEN (1 << 3) #define MPRSAS_TOREMOVE (1 << 5) +#define MPRSAS_STARTUP_ARMED (1 << 6) u_int maxtargets; struct mprsas_target *targets; struct cam_devq *devq; @@ -102,6 +103,8 @@ struct mprsas_softc { u_int startup_refcount; struct proc *sysctl_proc; + struct callout startup_timeout; + struct taskqueue *ev_tq; struct task ev_task; TAILQ_HEAD(, mpr_fw_event_work) ev_queue;