From nobody Mon Mar 23 20:22:16 2026 X-Original-To: dev-commits-src-main@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 4ffl2d00fnz6WSvL for ; Mon, 23 Mar 2026 20:22:17 +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" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ffl2c4KvLz3VFH for ; Mon, 23 Mar 2026 20:22:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774297336; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cNS7RYADXUbth2E8DBsN3w1KP02D1BzXBRLkneMFzMI=; b=mgOF+c4R85p2++n+xk4l850RsjLapI7XvSEi2YB+MZtlacE5p5ez21E1N/+cPV0UFdjwZ6 m7Cap57RV2yaoW3zoXFGe8GSQH0IXO5qCyCJa3CsiZB8yK7Oj5jUBmwFVux+OAA2Of1iOt iQCVMHN7k1OTT2Il9XJmbuZO9TYu4NNgu6o5sPFf76HdOp93xFXOnvI1/paT89SyiGwc5c VjSujji61t/WpPHggFVhkNIPbxTLjnBWzyu/q03UKHCUrV5X8bzvQyxZjE55SR5DeG26Av 4Y/2x7oLAN7MrIe7avJ/qjv/1zZrwD+9L0SGEe9t+6QI+f8TAQm/pBJ1yBI0Jg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774297336; a=rsa-sha256; cv=none; b=eS6LupHDevIMN7bi6qNokFKcTItJCkqfGyde4PGgGm0/lRh0ipxqYx/gFdRXwkYpIhI2ka dLZx9bAYM4Xj7DI2r+3pkMUOrnxubMyWYqqU9GrBAj+D2yFxM5axp2PhOCXc/RNMRwpqWU hZp/vEPbKavOUHIAO9u7cpV+Hy1R0PPkS0EbXhilKupxser6tGgv624gkrUl4SO6mNXfjp Cr/3FXdKZo9C4XQarBIjHO0LCmBbGMYNum31B9/3LhUdzd46fMlIMiIodZO5ifu89ve2Zm taVzR5hfp/ps6hrME/JWsifuQPeAC9wMuLcr+rvModeDMNJw1xXHHzHUq2EgVA== 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=1774297336; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cNS7RYADXUbth2E8DBsN3w1KP02D1BzXBRLkneMFzMI=; b=XIHvGRb3KBAELOTaK6rpSp52AV+frRlLK53Xl6hvXQtueNtCm2RrM682NRiPLzDhe81+Yn DyGo0L+cu4tfb7iRayPgZ91pbQjGdRiCrpKD76Qwka03feOfArJpPVU4+aQ/qMv3tl6Sat FhTJ3fN9MSBvg2fbOYtHMF/CRboAuue2LJ8nx5hC6E259e5N6HsRR787paYyy3poocJpRG lCMbmVSHJ+nrhUdlJZacky+HSfFlXF0SRBFX+5OW3GhGo6FJ7VUGJCE9CYTbmImd8hNEvc bxJLDW1w32Ip1AImQJTw0L/wKd8s0B/1dZVSQ3GFq6dRwgZ9e8b0BjDmmP9/Ug== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4ffl2c3shxz13fY for ; Mon, 23 Mar 2026 20:22:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 47d70 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 23 Mar 2026 20:22:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Paulo Fragoso From: Mitchell Horne Subject: git: b3a18736ec2f - main - hwpmc: improve diagnostic messages for invalid tunables List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b3a18736ec2fc2bd097995dedd8d09e79bcb2056 Auto-Submitted: auto-generated Date: Mon, 23 Mar 2026 20:22:16 +0000 Message-Id: <69c1a0f8.47d70.6a6a8fe5@gitrepo.freebsd.org> The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=b3a18736ec2fc2bd097995dedd8d09e79bcb2056 commit b3a18736ec2fc2bd097995dedd8d09e79bcb2056 Author: Paulo Fragoso AuthorDate: 2026-03-23 14:54:18 +0000 Commit: Mitchell Horne CommitDate: 2026-03-23 20:21:28 +0000 hwpmc: improve diagnostic messages for invalid tunables Replace printf() with log(LOG_WARNING, ...) in pmclog_initialize() so that tunable validation failures are visible in dmesg and /var/log/messages rather than only on the early console. Also improve the messages to report both the invalid value and the default it resets to, making it easier for users to understand why their tunable was ignored. While here, adjust some whitespacing/style. Reviewed by: Ali Mashtizadeh , mhorne MFC after: 1 week Sponsored by: NLINK (nlink.com.br) Differential Revision: https://reviews.freebsd.org/D56029 --- sys/dev/hwpmc/hwpmc_logging.c | 35 ++++++++++++++++++++++++++--------- sys/sys/pmc.h | 2 ++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/sys/dev/hwpmc/hwpmc_logging.c b/sys/dev/hwpmc/hwpmc_logging.c index 8fd7ef06a977..4f507523b6ab 100644 --- a/sys/dev/hwpmc/hwpmc_logging.c +++ b/sys/dev/hwpmc/hwpmc_logging.c @@ -58,6 +58,7 @@ #include #include #include +#include #if defined(__i386__) || defined(__amd64__) #include @@ -1236,24 +1237,39 @@ pmclog_initialize(void) struct pmclog_buffer *plb; int domain, ncpus, total; - if (pmclog_buffer_size <= 0 || pmclog_buffer_size > 16*1024) { - (void) printf("hwpmc: tunable logbuffersize=%d must be " - "greater than zero and less than or equal to 16MB.\n", - pmclog_buffer_size); + if (pmclog_buffer_size <= 0 || + pmclog_buffer_size > PMC_LOG_BUFFER_SIZE_MAX) { + log(LOG_WARNING, + "hwpmc: logbuffersize=%d must be greater than zero " + "and less than or equal to %d, resetting to %d\n", + pmclog_buffer_size, PMC_LOG_BUFFER_SIZE_MAX, + PMC_LOG_BUFFER_SIZE); + pmclog_buffer_size = PMC_LOG_BUFFER_SIZE; } if (pmc_nlogbuffers_pcpu <= 0) { - (void) printf("hwpmc: tunable nlogbuffers=%d must be greater " - "than zero.\n", pmc_nlogbuffers_pcpu); + log(LOG_WARNING, + "hwpmc: nbuffers_pcpu=%d must be greater than zero, " + "resetting to %d\n", + pmc_nlogbuffers_pcpu, PMC_NLOGBUFFERS_PCPU); + pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU; } - if (pmc_nlogbuffers_pcpu*pmclog_buffer_size > 32*1024) { - (void) printf("hwpmc: memory allocated pcpu must be less than 32MB (is %dK).\n", - pmc_nlogbuffers_pcpu*pmclog_buffer_size); + + if (pmc_nlogbuffers_pcpu * pmclog_buffer_size > + PMC_NLOGBUFFERS_PCPU_MEM_MAX) { + log(LOG_WARNING, + "hwpmc: nbuffers_pcpu=%d * logbuffersize=%d exceeds " + "%dMB per CPU limit, resetting to defaults (%d * %d)\n", + pmc_nlogbuffers_pcpu, pmclog_buffer_size, + PMC_NLOGBUFFERS_PCPU_MEM_MAX / 1024, + PMC_NLOGBUFFERS_PCPU, PMC_LOG_BUFFER_SIZE); + pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU; pmclog_buffer_size = PMC_LOG_BUFFER_SIZE; } + for (domain = 0; domain < vm_ndomains; domain++) { ncpus = pmc_dom_hdrs[domain]->pdbh_ncpus; total = ncpus * pmc_nlogbuffers_pcpu; @@ -1270,6 +1286,7 @@ pmclog_initialize(void) pmc_plb_rele_unlocked(plb); } } + mtx_init(&pmc_kthread_mtx, "pmc-kthread", "pmc-sleep", MTX_DEF); } diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h index 4c160c000dab..b9242aafb19c 100644 --- a/sys/sys/pmc.h +++ b/sys/sys/pmc.h @@ -661,7 +661,9 @@ struct pmc_op_caps { #define PMC_HASH_SIZE 1024 #define PMC_MTXPOOL_SIZE 2048 #define PMC_LOG_BUFFER_SIZE 256 +#define PMC_LOG_BUFFER_SIZE_MAX (16 * 1024) #define PMC_NLOGBUFFERS_PCPU 32 +#define PMC_NLOGBUFFERS_PCPU_MEM_MAX (32 * 1024) #define PMC_NSAMPLES 256 #define PMC_CALLCHAIN_DEPTH 128 #define PMC_THREADLIST_MAX 128