From nobody Fri Sep 04 23:07:35 2026 X-Original-To: dev-commits-src-branches@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 4hcBvC4wktz6qSCH for ; Fri, 04 Sep 2026 23:07:35 +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 4hcBvC3Mgqz3mb0 for ; Fri, 04 Sep 2026 23:07:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788563255; 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=4TUFniPtUCdR1gmtbQTRuMk1flJuatijB7/LgC9NgMw=; b=kNzu5ccyD6UzwFoWrrW1Iri5aDnmUCVKDKNWoXpfE52WsocTHQvrwE5op2oTF8RRca7YYy Ss3z/5Q5LZgd2+crGE0dKp8upnEyNqd6hLl0QAuHfqt5aM8SQnC4ymuMBo+KF7bTPJzqeX rb2TweEwr1U10B2veAn8Oz40BW3EmRAhULNLXyLdNX/2uCO+Pqo9dcT0ojegwSaEbwUU5z iQO1vpYE270nyVfV370WR01nreod92iF9GKuhjVeklRQRKUqMzkYtTXO3epeoB6OQe9yL+ d4PQULv5ua8NY/OwCJB2N/6VKWJ9MN5LIWI2FOe0GVmjOBG3JwGFNVB91Qsz/g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788563255; a=rsa-sha256; cv=none; b=CN8SAYXkNHKR6Yojesks7wSzxzXaUzxajpIGkpdtOYIT2fPBTibQFtLWAcXZE4D39XH2uo 3xfng6CG+xpe1wmbBdizyq17wMqHwiu/MJh8+W36+yXRhPY3hoRQOnbqVGBcOh5wv9A3vW 3aBTmTMMh7B91g6PKn+lTnsBUVFwT6cglkNzJ+GSge6LIllMCyEKTVr11Uuz+JW9aaobYM LIyRvXdog+W6h5Mzb9FxRZqlGmwGjaKKAUXVIEZZi7MdRHFFNEQPIFvRtEna6GCD/XJSqh VVOtkU713i/sOHuRdQQom86/QavP/B/lgpwhuA6KkXwYMIK8GKo21wWRrZrKVQ== 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=1788563255; 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=4TUFniPtUCdR1gmtbQTRuMk1flJuatijB7/LgC9NgMw=; b=F5l6p8eXYC/0SIjvirfDhOiySOAnSlMo7IfVVE/lcF36nSGT4Qcs2+4RoV/Zi/JsyugAM1 pT9sUt2xlrahHdwSASMCLUVIPWucz3hTvPgTS8djfoQNkhNFLQBxI43A88sVGmnARRe7QN dYssAfXn7mFS5PkGX8hub/ssGyqK0oe87+Pk5AyhOIdlV7L3d24tjR4FBp8b3GGn6Y5ur6 JDNHjf4BBdJLb8Fti4nzezAXpO18dX9uidtD7jDeZRSVfu+95BD+ByCbuMY5AbHHoMKqxf quzNAWTwraiOKPF3Ch5cjj3yyPioQXtDU7ClTOXXdkoeYjGTSHRZf7zhpdIcQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hcBvC1vftz5Kj for ; Fri, 04 Sep 2026 23:07:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4584a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 04 Sep 2026 23:07:35 +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: b6fb80014c46 - stable/15 - asmc: try PIO before MMIO to avoid false T2 detection List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/15 X-Git-Reftype: branch X-Git-Commit: b6fb80014c4660d51712bcc375d0154bf76912f7 Auto-Submitted: auto-generated Date: Fri, 04 Sep 2026 23:07:35 +0000 Message-Id: <6a9b4f37.4584a.1ed8be04@gitrepo.freebsd.org> The branch stable/15 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=b6fb80014c4660d51712bcc375d0154bf76912f7 commit b6fb80014c4660d51712bcc375d0154bf76912f7 Author: Abdelkader Boudih AuthorDate: 2026-07-01 00:13:42 +0000 Commit: Enji Cooper CommitDate: 2026-09-04 23:07:01 +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;