From nobody Sat Sep 05 23:32:25 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 4hcqPQ1Qb5z6rK3y for ; Sat, 05 Sep 2026 23:32:26 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hcqPP6l8Fz47gQ for ; Sat, 05 Sep 2026 23:32:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788651146; 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=DNR7ppaXm5+SpQQVxFO5eRXufRJ8lPMMuydsTSudsMA=; b=Nuk2crn8QJWjfY1O8UZ2A43Z+dY7rt6OJedREYeoBu6Ryl53Ef7KJFtaypBQ5lElcKntyu XW+o0eepHwsLW6calcFvGz4+Ex+HUHczdwplwhpRSPCG3MDMbPUBB9nI/BbfCOEoplHzzK kVIa7IbodlY3znadQ7zCI0qei06lfmPV/BDj2SHilMdNoxDGwD7JEExPTwW9v8AUZQnRfR uQI0mcJNEiZvgSQ4pnATTGZlVL6IHB02okVz3E6lllztSYnCl7MNBT6Fl7V0H3ckSmi7q6 YsH/DBr7wxM1T2gyItAmLGE58SMPtIqY/7WM5RCmqnCKuxlv6l+9uRyW9Fpdfg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788651146; a=rsa-sha256; cv=none; b=E0BDDG0uk/5Caj0VnjlKyGdYVVETKqNXZpV2JdNVYr9wdE52nB8Ra8lOxP2ROJUJMJOz7q w+aJQnWc9ltD6BPtoharzJBA1AfYL0umfDQdfUzFVdb8AEyGkw2mzUivaI0WM4wwbXKKRU xdjSfJxfpviGegG8g5yTuVldIRKloP2zffvAiQa0KWNhYzEZtBPgsQy8LcGIlvkeJKbFrG kikLg+BVJLRrfHf0f+UW8muW3WwcqtXFWRixLceMIWbozsBaCzMfA727wv//PiTzIjGc1J LTKTtlBg/6XG1nY3eU9ksPSzStfozJaYv2w+8SZoBie+UuUPvbMm42ygg5gJZA== 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=1788651146; 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=DNR7ppaXm5+SpQQVxFO5eRXufRJ8lPMMuydsTSudsMA=; b=e9wfc9xdzWHDF3byOXziyPgB1sIe+QXegYvgXmakTdHAjGUs2+OLw/UnLHJT/VepB+Zfk/ A9Z661IuRHnd44eNflS3YZ/Bj+DFZ3dC2JXNqtEnlrsPaeGEXKo7Fwh+sLzwQVk6HCor6k c4lXc/wsqQkdgazGY819e0kcjOJxhXtbIx7aPYTP9RO+GchJ+KI0l6Ghz7f3UCFfZe0gQD rgvOKi+hfK3/XQo0/pHjPf/Xm0CHPC5DVZ7NUAsC6fkgw6EhN0MxgeQsaIqr5TJAE5NsVP Dp9a7AeReD/IWsgk0b390OuRQTCZg59LaBEmThcXsMmMAu0m2E+ft/p21zor/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 4hcqPP4rDNz15Jl for ; Sat, 05 Sep 2026 23:32:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 24885 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 05 Sep 2026 23:32:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Abdelkader Boudih From: Enji Cooper Subject: git: 95aa170e6358 - stable/14 - asmc: try PIO before MMIO to avoid false T2 detection 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 95aa170e635866a9943fa262b1f76e484bcba8c6 Auto-Submitted: auto-generated Date: Sat, 05 Sep 2026 23:32:25 +0000 Message-Id: <6a9ca689.24885.35ef5ee7@gitrepo.freebsd.org> The branch stable/14 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=95aa170e635866a9943fa262b1f76e484bcba8c6 commit 95aa170e635866a9943fa262b1f76e484bcba8c6 Author: Abdelkader Boudih AuthorDate: 2026-07-01 00:13:42 +0000 Commit: Enji Cooper CommitDate: 2026-09-05 23:31:46 +0000 asmc: try PIO before MMIO to avoid false T2 detection Add hw.asmc.system-state and hw.asmc.board-id read-only sysctls to expose the T2 system state register and Mac board identifier via SMC. Try PIO access before MMIO during probe to prevent false T2 detection on Macs that happen to have something mapped at the T2 BAR address. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D57844 (cherry picked from commit bb1e071be47fa03accadace587784c85654de91e) --- sys/dev/asmc/asmc.c | 55 ++++++++++++++++++++++++++++--------------------- sys/dev/asmc/asmcmmio.c | 2 +- sys/dev/asmc/asmcvar.h | 2 +- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c index 055f98e06892..1796867786e5 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -418,43 +418,50 @@ asmc_probe(device_t dev) return (rv); } +/* + * Try PIO first; fall back to MMIO for T2 Macs. + */ static int -asmc_attach(device_t dev) +asmc_try_probe(device_t dev) { - int i, j; - int ret; - char name[2]; struct asmc_softc *sc = device_get_softc(dev); - struct sysctl_ctx_list *sysctlctx; - struct sysctl_oid *sysctlnode; - /* - * Try MMIO first (T2 Macs expose SMC via memory-mapped I/O). - * Fall back to standard I/O port if MMIO is not available. - */ + sc->sc_ioport = bus_alloc_resource_any(dev, SYS_RES_IOPORT, + &sc->sc_rid_port, RF_ACTIVE); + if (sc->sc_ioport != NULL) + return (0); + sc->sc_rid_mem = 0; sc->sc_iomem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->sc_rid_mem, RF_ACTIVE); if (sc->sc_iomem != NULL) { if (asmc_mmio_probe(dev) == 0) { - sc->sc_is_mmio = 1; + sc->sc_is_mmio = true; device_printf(dev, "using MMIO backend (T2)\n"); - } else { - bus_release_resource(dev, SYS_RES_MEMORY, - sc->sc_rid_mem, sc->sc_iomem); - sc->sc_iomem = NULL; + return (0); } + bus_release_resource(dev, SYS_RES_MEMORY, + sc->sc_rid_mem, sc->sc_iomem); + sc->sc_iomem = NULL; } - if (!sc->sc_is_mmio) { - sc->sc_ioport = bus_alloc_resource_any(dev, SYS_RES_IOPORT, - &sc->sc_rid_port, RF_ACTIVE); - if (sc->sc_ioport == NULL) { - device_printf(dev, "unable to allocate IO port\n"); - ret = ENOMEM; - goto err; - } - } + device_printf(dev, "unable to allocate IO port\n"); + return (ENOMEM); +} + +static int +asmc_attach(device_t dev) +{ + int i, j; + int ret; + char name[2]; + struct asmc_softc *sc = device_get_softc(dev); + struct sysctl_ctx_list *sysctlctx; + struct sysctl_oid *sysctlnode; + + ret = asmc_try_probe(dev); + if (ret != 0) + goto err; sysctlctx = device_get_sysctl_ctx(dev); sysctlnode = device_get_sysctl_tree(dev); diff --git a/sys/dev/asmc/asmcmmio.c b/sys/dev/asmc/asmcmmio.c index 016c50f6170f..237e8ec4ed52 100644 --- a/sys/dev/asmc/asmcmmio.c +++ b/sys/dev/asmc/asmcmmio.c @@ -307,7 +307,7 @@ asmc_mmio_detach(device_t dev, struct asmc_softc *sc) sc->sc_iomem); sc->sc_iomem = NULL; } - sc->sc_is_mmio = 0; + sc->sc_is_mmio = false; sc->sc_is_t2 = 0; } diff --git a/sys/dev/asmc/asmcvar.h b/sys/dev/asmc/asmcvar.h index 7d627f3c515a..66a550fb6b60 100644 --- a/sys/dev/asmc/asmcvar.h +++ b/sys/dev/asmc/asmcvar.h @@ -56,7 +56,7 @@ struct asmc_softc { /* MMIO backend (T2 Macs) */ int sc_rid_mem; struct resource *sc_iomem; - int sc_is_mmio; + bool sc_is_mmio; int sc_is_t2; /* T2 fan float + per-fan manual */ int sc_sms_intrtype; struct taskqueue *sc_sms_tq;